본문 바로가기
JAVA/기본이 중요하지.

java null 키워드로 메모리 효율적으로 관리하기.

by 램쥐뱅 2016. 5. 4.

자바 기본형(Primitive Type) 변수들(boolean, char, byte, short, int, long, float, double)은 가각 변수형에 따라서 기본값이 존재한다.

ex) boolean : false, int : 0


이외의 참조형(Reference Type) 변수들은 기본값이 존재하지 않는다. 이런 변수들은 값이없는 상태로 이름만 가지고 있으며 이런상태의 변수는 널(null) 값을 가지고 있다고 말하며 자바에서도 이러한 상태를 나타내는 null 키워드가 존재한다.


변수에 값을 넣는다는 의미는 곧 메모리에 데이터를 새롭게 생성했다는 의미이며 

String value = null; 와같이 선은을 하면 value 라는 변수는 JVM 메모리에서 참조하는 변숫값이 없음을 의미한다.

곧 value 라는 변수는 초기화될때 어떤 값으로도 초기화 되지 않음을 의미한다. 비록 값이 없는 변수라도 value라는 변수는 초기화 되었으므로 개발자는 코딩 시에 value라는 변수를 사용할수 있다.


혼동하지 말아야 할 것은 널(null)과 빈 값(blank, 더블쿼테이션 마크 두개 붙여사용)은 서로 같지 않다는 것이다.



 public class StringTest {

public static void main(String[] args) {

String str1 = null;

String str2 = "";

System.out.println("str1 : "+System.identityHashCode(str1));

System.out.println("str2 : "+System.identityHashCode(str2));

}


 }



str1 : 0

str2 : 366712642 


str1과 str2의 식별 해시코드가 서로 같지 않다.

null 키워드로 선언한 변수 str1의 해시코드는 항상 0이다. 이와 반대로 str2 변수는 366712642라는 해시 코드를 가지고 있다.


결론적으로 빈값은 blank 문자로 JVM에서 하나의 메모리를 참조하고 있다.

그러므로 blank 문자와 null키워드는 자바를 다룰때에 항상 구분해서 사용하여야 한다.

'JAVA > 기본이 중요하지.' 카테고리의 다른 글

래퍼 클래스(wrapper class)  (6) 2016.05.23
JDK 와 JRE 의 차이점.  (0) 2016.05.10
JVM (Java Virtual Machine)  (3) 2016.05.04
자바 언어 (java language)  (4) 2016.05.04

댓글