개발할 때 String 값이 null, "", whitespace 인지 체크해야할 경우가 있습니다.
Java에서는 위와 같은 값들을 걸러내는 여러가지 방법이 있지만
위 3개를 가장 많이들 찾아보고 사용해오셨을거라고 생각합니다.
그렇다면 위 3개는 어떤 차이점이 있을까??
간단하게 정리하자면,
isEmpty → "", null, whitespace 체크! → 3개중 해당사항이 있다면 return true.
isBlank → "", null 체크! → 2개중 해당사항이 있다면 return true.
hasText → "", null, whitespace 체크! → 3개중 해당사항이 있다면 return true.
('그럼 isEmpty나 hasText를 사용하면 되겠군..!')
위 예제를 보면, 나머지 케이스는 isEmpty()와 isBlank()가 같지만,
마지막에 빈 공백이 있는 문자열을 체크하는 경우에는 두 메소드의 결과가 다릅니다.
1. isEmpty()
- Java 6 이후에 추가된 메소드.
- 문자열의 길이가 0인 경우에만, true 리턴.
- 따라서 빈 공백인 경우, false 리턴.
(현재 isEmpty()는 Deprecated 되어서 사용하지 않는 것을 권장합니다.)
2. isBlank()
문자열이 비어 있거나, 빈 공백(white space)를 포함하고 있는 경우에 true를 리턴하기 때문에
위 케이스의 경우 true를 리턴합니다.
- Java 11 이후에 추가된 메소드.
- 문자열의 길이가 0인 경우 → true 리턴.
- 빈 공백으로만 이루어져 있는 경우 → true 리턴.
isEmpty()와 isBlank()의 가장 큰 차이는 빈 공백(white space)을 어떻게 처리하는가 입니다.
3. hasText
파라미터가 문자열인지 확인해서 true/false를 리턴하는 메소드.
StringUtils.hasText(null) → false
StringUtils.hasText("") → false
StringUtils.hasText(" ") → false
StringUtils.hasText("test") → true
StringUtils.hasText(" test ") → true
공백을 제외한 문자열이 있는지 없는지 체크하기에 유용해 보입니다.
StringUtils이라는 추상클래스에는 다양한 메서드들이 있으며,
hasText뿐만 아니라 hasLength, containsWhitespace 등 유용한 메서드들이 많습니다!
'Java' 카테고리의 다른 글
[Java] Integer → int 캐스팅하기(Integer to int) (0) | 2023.01.11 |
---|---|
[Java] for문 vs 향상된(개선된) for문 (0) | 2022.12.30 |
[Java] Array / List / ArrayList 차이점 (3) | 2022.12.13 |
현재 시간을 ms(millisecond) 변환해서 return받기 (0) | 2022.11.02 |
[IntelliJ] 인텔리제이 주석 안됨 현상 해결 방법!("/", "¿") (0) | 2022.09.13 |