Web/Java

[Java] java.lang.String의 isEmpty() vs isBlank()

java.lang.String 에는 isEmpty() 와 isBlank() 가 있습니다.

 

두 메서드는 메서드명만 봤을 때 언뜻 비슷해보이지만 분명한 차이가 있어서 사용할때 정확히 알고 사용하면 좋습니다.

 

isEmpty()

  • 문자열의 길이가 0인 경우에, true를 리턴합니다.

실제 isEmpty() 코드

 

 

isBlank()

  • 문자열이 비어 있거나, 빈 공백으로 이루어져 있으면 true를 리턴합니다.
  • (java 11 이후에 사용이 가능합니다.)

 

실제 isBlank() 코드

 

isBlank()의 동작방식을 보면 어떤 역할을 하는지 이해하기 쉽습니다.

 

isBlank()는 whitespace(공백)이 아닌 문자의 인덱스와 문자열의 길이를 비교합니다.

  • 빈문자로만 이루어져있는 경우 nonWhitespace() == length() 이기때문에 true가 리턴됩니다.
  • 마찬가지로, 문자열이 비어있는 경우에도 nonWhitespace()와 length()는 0으로 같기 때문에 true가 리턴됩니다.

 

상황 비교값 결과
빈 문자로 이루어져 있음 nonWhitespace() == length() isBlank()는 true
문자열이 비어있음 nonWhitespace() = 0
length() = 0
isBlank()는 true

 

 

 

정리

  • 문자열의 길이가 0인경우를 비교하고 싶을때 isEmpty(),
  • 문자열의 길이가 0인경우 + 문자열이 공백으로만 이루어져있는 경우를 비교하고 싶을때 isBlank()

 

 

 

추가정보

isEmpty()와 isBlank()는 String이 null일 경우는 판단하지 못합니다.

오히려 null일 경우 NullPointerException이 발생하므로 null 비교를 먼저 해주어야 합니다.