-
null 이란 무엇인가.CS-Theory 2022. 9. 29. 18:00
null 을 왜 사용 할까?
참고 자료 : https://www.youtube.com/watch?v=N08BSA3rwhU/
1. 자바는 포인터가 없다?
자바,c# 둘다 포인터가 없을 뿐이지 , 자바의 모든 오브젝트는 레퍼런스를 사용한다 즉 포인터 개념이다 .
2. 포인터는 메모리주소를 저장 하는 변수이다.
포인터가 null 을 가르킨다 = 아무것도 가르 키는게 없다.
=> 포인터는 주소를 가르키거나 / invalid 한 상태 (null)
null 이 탄생한거는 변수를 표현하면서 상태를 표현이 가능하다.
보통 함수는 리턴 값이 하나이다, 데이터가 없는 것을 어떻게 표현 할 것인가 ? == null 로 표현이 가능하다.
-> boolean 으로 표현이 가능할텐데 함수를 하나 만들어서 상태를 판별 하는건 어떤가?
-> api 에서는 함수 하나를 사요할때 다른 함수를 호출하는 것을 이상적으로 보지 않으므로 boolean 인지 판단 하는 함수를 추가로 만든다? 굳이? 리턴을 두번 한다고?
정리 :
장점 null 로 data 의 상태와 값을 알 수 있다. 오브젝트가 유효하다 아니다, 실재 값이 있다의 개념을 합친 것이다.
단점: 함수를 까봐야안다.
cf. exception 남용 금지 goto 를 쓰지 말라고 하는 것과 같다. 어디로 튈지 모른다 . 본인이 알고있는 라이브러리, 알고있는 무효한 값을 안다고 하면 그걸 처리하는 로직을 짜느게 이상적인 것 같다.
Java 에서 JVM 에는 GC 가 있는데 이를 이용하여 객체 = null 을 사용해 메모리 누수를 막는 방법도 있다.
또 다른 방법으로느 지역변수로 선언하면 GC의 범위에 속하게 되므로 전역 변수보다 지역변수로 선언하는 게 좋다.
'CS-Theory' 카테고리의 다른 글
Hash Map 보다 Array가 더 빠르다. (0) 2022.09.29 DB 기본 개념(Transaction) (0) 2022.09.01