[Java] 자바 isEmpty() 사용법 및 주의점
- Language/Java
- 2022. 11. 1.
자바(Java)에서는 스트링(String) 형태의 변수의 경우 값이 비었는지 체크하기 위해서 isEmpty라는 메소드를 지원합니다. 이 값은 언제 사용을 하면 좋은지 그리고 어떤 부분에 대해서 조심을 하는게 좋은지 알아보도록 하겠습니다.
isEmpty
isEmpty() 메소드는 문자열이 빈 값이면 true, 비어있지 않으면 false를 리턴하는 메소드입니다. 아래의 예제를 보면서 이해를 해보도록 하겠습니다.
값이 비어있을 경우
String test = "";
System.out.println(test.isEmpty());
// true
값이 있을 경우
String test = "111";
System.out.println(test.isEmpty());
// false
위와 같이 test라는 String 문자열 변수는 값이 없을 경우 isEmpty 메소드를 실행하면 true가 떨어지지만, 변수에 값을 넣는 경우 false가 리턴되는 것을 확인할 수 있습니다.
결국 isEmpty()라는 메소드는 아래와 같은 기능과 동일합니다.
String test = "";
String test2 = "111";
System.out.println(test.length() == 0);
// true
System.out.println(test2.length() == 0);
// false
즉 isEmpty()는 length() == 0을 메소드로 만든 것을 알 수 있는 것이죠.
그리고 isEmpty()를 사용하실 때 주의해야 될 점이 있는데요. 바로 아래와 같습니다.
isEmpty() 주의점
Null 발생 여부
String test = null;
System.out.println(test.isEmpty());
우선 위와 같이 값에 null이 들어갈 경우, isEmpty를 실행할 때 어떻게 될까요? 바로 아래와 같이 Null 에러가 떨어지게 됩니다.
Exception in thread "main" java.lang.NullPointerException
String으로 선언한 test 변수 역시 객체이기 때문에 null 값이 들어가게 되면, isEmpty()의 메소드는 실행할 수 없습니다. 이건 isEmpty() 뿐만 아니라 length(), trim()등과 같이 String에서 사용하는 모든 메소드는 모두 에러가 떨어지니 값을 체크해야 하는 용도로 사용할 경우 Null 발생 가능성이 있을 경우 아래와 같이 사용해주는 것을 권합니다.
String test = null;
if(test != null && test.isEmpty()) {
System.out.println(test);
}
위와 같이 안전하게 isEmpty 앞에 null 체크를 먼저 해주시기 바랍니다.
공백만 있을 경우
두번째 문제는 공백만 있을 경우 값이 비어있지 않는가 생각할 수 있다는 것입니다.
String test = " ";
System.out.println(test.isEmpty());
// false
하지만 공백값도 문자열로 인정을 하기 때문에, 위의 예제는 false 값이 떨어지게 됩니다. Java 11 버전에는 isBlank() 라는 메소드가 추가되었는데요. 이 메소드를 사용하게 되면, 공백을 모두 제거하고 체크하기 때문에 위의 경우 isBlank는 true가 떨어지게 됩니다.
isEmpty로 isBlank 역할을 수행하려면 아래와 같이 trim() 메소드를 추가로 호출 한 후 사용하시면 됩니다.
String test = " ";
System.out.println(test.trim().isEmpty());
// true
연관 포스팅
'Language > Java' 카테고리의 다른 글
[Java] Map to Json String 변환(Convert) 방법 (0) | 2023.03.17 |
---|---|
[Java] NaN 뜻, 발생 원인, 체크, 대처법 (0) | 2022.11.08 |
[Java] 자바에서 제곱과 루트(제곱근) 계산 방법 (0) | 2022.10.10 |
[Java] Javac로 직접 컴파일(Compile) 하기 (0) | 2022.07.17 |
[Java] 컴파일(Compile) 개념과 자바 컴파일 이해하기 (0) | 2022.07.06 |