본문 바로가기
Language/JAVA

Null , isEmpty , isBlank 비교

by YoonJong 2024. 3. 20.
728x90

요약

Null : 인스턴스가 생성되지 않은 상태 ( 참조 타입 발생 )

isEmpty : 길이가 0 인 상태면 true

isBlank : 문자열이 비어있거나, 빈 공백으로 이루어져 있는 상태면 true

 

참고 : 검색조건 등 (유효성검사) 에는 StringUtilshasText를 유용하게 사용한다. -> 스프링에서 지원

null 체크, 빈문자열 , 포함여부 모두  && 조건으로 확인한다.

 


 

null 

- 참조형의 기본값

- 어떠한 값으로도 초기화 되지 않는 상태

 

참조형(Reference Type) 은 값을 설정하지 않으면 초기화가 자동으로 null 로 진행된다.

참조타입 : 원시타입을 제외한 타입으로, 객체의 주소를 저장하는 타입.

따라서 아래 테스트 처럼 NPE 를 발생시킨다.

@Test
@DisplayName("null 은 참조형 타입의 기본값이다.")
void nullPointExceptionTest() {

    Member member = new Member();
    System.out.println("member = " + member.getName()); // member = null
    member.getName(); // NPE 발생
}

 

 

원시타입(primitive Type) 은 초기화가 필수이다. 

원시타입 : char , int , long , float .. 

초기화하지 않고 값을 사용하려면 컴파일 에러가 발생한다.

@Test
@DisplayName("원시타입은 초기화가 필수이다.")
void primitiveTypeIsNotNullPointException() {
    int age;

    Member member = new Member();
    member.setAge(age);
}

 


isEmpty() 

- 값의 길이를 비교한다.

 

 

@Test
@DisplayName("isEmpty()는 길이를 비교한다.")
void primitiveTypeIsNotNullPointException() {
    ArrayList<Member> members = new ArrayList<>();

    if (members.isEmpty()) {
        System.out.println("members IsEmpty"); // 출력
    } else {
        System.out.println("members Not empty");
    }
}
@Test
@DisplayName("isEmpty()는 길이를 비교한다.")
void primitiveTypeIsNotNullPointException() {
    ArrayList<Member> members = new ArrayList<>();
    Member member = new Member();
    member.setName("JYJ");
    members.add(member);

    if (members.isEmpty()) {
        System.out.println("members IsEmpty"); 
    } else {
        System.out.println("members Not empty"); // 출력
    }
}

isBlank()

- 문자열이 비어있거나, 빈 공백으로만 이루어져 있는 경우

@Test
@DisplayName("isBlank 과 isEmpty 차이")
void isBlankTest() {
    System.out.println("  ".isBlank()); // true (빈 공백 문자열)
    System.out.println("".isBlank());   // true (비어있는 문자열)
    System.out.println("  ".isEmpty()); // false ( 길이 있음 )
    System.out.println("".isEmpty());   // true ( 길이가 0 )
    System.out.println("test".isBlank()); // false
    System.out.println("test".isEmpty()); // false
}

 

 

728x90

댓글