728x90

자바에서 빈문자열 여부를 확인할 때 여러가지 방법으로 체크하는 데 어떤 차이가 있는지 궁금했다. 그래서 이러한 것들을 알아보았고 어떤 차이가 있는지 정리하고자 한다.


먼저, 빈 문자열과 빈 문자열 공백의 예제 소스와 결과를 확인해보자.

1. 비교 예제

1) 빈 문자열

1
2
3
4
5
String str = "";
System.out.println(str != "");
System.out.println(!str.equals(""));
System.out.println(!str.isEmpty());
System.out.println(!str.isBlank());
cs

※ 결과

false
false
false
false

 

2) 빈 문자열 공백

1
2
3
4
5
String str = " ";
System.out.println(str != "");
System.out.println(!str.equals(""));
System.out.println(!str.isEmpty());
System.out.println(!str.isBlank());
cs

※ 결과

true
true
true
false


2. str != ""와 str.equals("")의 차이

str != ""와 !str.equals("")는 주소값과 할당값을 비교하는 차이가 있다. 그러나 위 코드에서는 java 내부적 비교방식의 차이만 있을뿐 동일한 값을 비교하고 있기 때문에 결과는 똑같다.(더 자세한 부분은 아래 포스팅을 확인하길 바란다.)

 

https://jfbta.tistory.com/156

 

Java] String(문자열) 비교 'equals()'와 '=='의 차이점

문자열을 비교할 때 ==을 써도 true가 출력될 때가 있고, false가 출력될 때가 있다. 왜 값이 다를까? String 타입의 값을 할당할 때 String 변수를 생성할 때 두가지 방법이 있습니다. // 1. 리터럴 생성

jfbta.tistory.com

 

3. isEmpty()와 isBlank()의 차이

1) isEmpty()

 ① Java 6 이후 추가

 ② 문자열의 길이 length()가 0인 경우 true

2) isBlank()

 ① Java 11 이후 추가

 ② 문자열이 비어 있거나, 빈 공백으로 되어 있으면 true

 

isEmpty()와 isBlank()의 차이는 빈 공백을 체크하는 방식의 차이이다.

 

4. 어떤 방식이 빠를까?

https://codediver.tistory.com/60

 

JAVA에서 NULL 체크 어떻게 하고 계시나요?

다들 널 체크 어떻게 하고 계시나요? param ==null || 뒤에 두번째 조건문에서 param.equals("") 를 쓰시거나 param.length()==0 를 쓰시거나 param.isEmpty() 를 쓰시곤 하실텐데요. String.length() 메소드 ----------------

codediver.tistory.com

속도를 측정하기 위해 위 게시글을 참고하였다.

 

위 게시글에서는 length() 비교 방식이 속도가 제일 빠르다고 하였지만 내가 테스트 했을 때 isEmpty()가 가장 빨랐다.

이유를 모르겠지만 isEmpty()와 length()가 서로 빨랐다 느렸다 함.

 

※ 속도 측정 결과

.equals("")  : 36698300
.isEmpty()  : 3092200
.length()     : 3418000
.isBlank()   : 5600600
!= ""           : 3935100

 

결론 : null 체크는 isEmpty()를 사용하자

728x90
TOP