java.lang.String 에는 isEmpty() 와 isBlank() 가 있습니다.
두 메서드는 메서드명만 봤을 때 언뜻 비슷해보이지만 분명한 차이가 있어서 사용할때 정확히 알고 사용하면 좋습니다.
isEmpty()
- 문자열의 길이가 0인 경우에, true를 리턴합니다.
isBlank()
- 문자열이 비어 있거나, 빈 공백으로 이루어져 있으면 true를 리턴합니다.
- (java 11 이후에 사용이 가능합니다.)
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 비교를 먼저 해주어야 합니다.
'Web > Java' 카테고리의 다른 글
[Java] Optional 반환값 도대체 어떻게 사용하라는 걸까? (2) | 2022.03.18 |
---|---|
[Java] for-loop 와 stream.forEach() 는 다르다. (6) | 2022.03.04 |
[우테코 프리코스] 최종시험 + 최종합격 (3) | 2021.12.31 |
[우테코 프리코스] 3주차: 자판기 (2) | 2021.12.11 |
[우테코 프리코스] 2주차: 자동차 경주 게임 (0) | 2021.12.01 |