자바에서 빈문자열 여부를 확인할 때 여러가지 방법으로 체크하는 데 어떤 차이가 있는지 궁금했다. 그래서 이러한 것들을 알아보았고 어떤 차이가 있는지 정리하고자 한다.
먼저, 빈 문자열과 빈 문자열 공백의 예제 소스와 결과를 확인해보자.
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 내부적 비교방식의 차이만 있을뿐 동일한 값을 비교하고 있기 때문에 결과는 똑같다.(더 자세한 부분은 아래 포스팅을 확인하길 바란다.)
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()를 사용하자
'Language > Back End' 카테고리의 다른 글
[Swagger UI] Spring Boot API 문서 자동화 설정 및 사용 예제 (0) | 2023.09.11 |
---|---|
Java ] iframe 탭 로그인 세션 공유 (0) | 2023.02.20 |
Java ] 아스키코드를 char변환 / char를 아스키코드 변환 (0) | 2022.09.12 |
Java ] try catch문법에서 트랜잭션 rollback사용(Transactional try catch) (0) | 2022.07.06 |
Java] while(variable-->0) / java --> 문법 이해하기 (0) | 2022.06.23 |