23.03.17 Null 과 Empty

Kuno17·2023년 3월 19일
0

TIL/WIL

목록 보기
27/38
post-thumbnail

null

널(null)은 어떠한 값으로도 초기화 되지 않은 것입니다. 이렇게 초기화된 데이터는 내가 사용할 예정이다 정도로 컴파일러는 생각합니다. 그래서 참조형이지만 힙메모리상에 데이터를 만들어 내지 않습니다.

String num = null;

Empty

껍데기는 있지만 그 안에가 아무것도 들어있는게 없이 비어있다는 뜻입니다. null은 껍데기도 뭐도 정말 아무것도 없는 無인 것에 비해 조금 낫습니다. 따라서 ""는 empty입니다. 대신 껍데기만 있기 때문에 길이는 0이어야 합니다!!

코드에서 어떻게 달랐는가?

프로젝트를 진행하던중 프로필 사진과 닉네임을 수정하는 서비스를 구현할 때 만약 사용자가 프로필 사진은 별도로 수정하지 않고 닉네임만 변경하는경우에 null과 empty를 제대로 이해하지 못해 오류가 발생했다.

처음에는 request에서 유저가 사진을 넣지 않으면 해당 변수가 비엇다라고 생각해서 if문의 조건을 다음과 같이 설정했다.

if (requestDto.getImage().isEmpty()) {
            findMember.get().update(requestDto.getNickname());
            return ResponseUtils.ok(SuccessResponse.of(HttpStatus.OK, "수정완료"));
        }

하지만 결과적으로 requestDto.getImage() 가 null이라는 에러메시지를 출력하는 결과가 나왔다..

즉 request에서 이미지데이터가 없으므로 메모리가 생성되지 않은것이다.
따라서 다음과 같이 if문의 조건을 수정하면 정상적으로 닉네임만 변경되었다.

if (requestDto.getImage() == null || requestDto.getImage().isEmpty())
profile
자바 스터디 정리 - 하단 홈 버튼 참조.

0개의 댓글