티스토리 뷰

728x90
반응형

String.contains() with empty String, return true

java 에서 String.contains() 를 사용할 때 내가 발생했던 이슈에 대해 다뤄보려한다.

아래의 코드를 보자.

String myString1="foo";
String myString2="";
if(myString1.contains(myString2)){
System.out.println("Am here");
} else {
System.out.println("Am not here");
}

foo 가 "" ( empty string ) 을 포함하냐는 것인데, 언뜻 보면 false 로 "Am not here" 가 실행될 것 같지만

컴파일 해보면 "Am here" 가 출력된다.

그 이유를 찾아보니 모든 문자열의 시작과 끝에는 공백 character 가 존재하기 때문이라고 한다.

이러한 이유로 String.contains(), String.indexOf() 를 빈 문자열과 같이 사용할 경우 원치 않는 결과를 발생 시킬 수 있다.

References

https://stackoverflow.com/questions/24007818/why-string-contains-with-empty-string-returns-true/24007827

https://jeeva-paramasamy.blogspot.com/2012/04/contains-and-indexof-in-java-will.html

https://stackoverflow.com/questions/18399189/why-does-contains-method-find-empty-string-in-non-empty-string-in-java


반응형

'프로그래밍 > Java' 카테고리의 다른 글

[Java] JDK 6 이후, Timezone.setDefault()  (0) 2019.08.25
[Java] Type Safety : unchecked cast  (0) 2019.01.29
[Java] :: ( 더블콜론 )  (0) 2018.12.12
[Java] Iterator  (0) 2018.12.12
[Java] parseInt() 와 intValue() 의 차이  (0) 2017.11.01
공지사항
최근에 올라온 글