자바

JAVA 자바 참조 변수의 ==, != 연산 / null과 NullPointerException

알통몬_ 2017. 3. 12. 18:51
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

참조 타입 변수들 간의 ==, != 연산은 동일한 객체를 참조하는지,

다른 객체를 참조하는지 알아볼 때 사용.

참조 타입 변수의 값은 힙 영역의 객체 주소이므로 결국 주소 값을 비교하는 것입니다. 

동일한 주소 값을 갖고 있다는 것 => 동일한 객체를 참조한다는 뜻. 

동일한 객체를 참조할 경우 == 연산 결과는 true !=의 연산결과는 false 입니다.


String var1 = "알통몬";

String var2 = "알통몬";

String var3 = new String("알통몬");


var1 == var2 의 연산결과는 같은 객체를 참조하고 있으므로 true 가 나오지만,

var1 == var3 이나 var2 == var3 은 다른 객체를 참조하므로 false가 나옵니다.


예제)

public class Example {

public static void main(String[] args) throws IOException {

           String var1 = "알통몬";

           String var2 = "알통몬";

           String var3 =  new String("알통몬");

           

           boolean aaa = (var1==var2);

           boolean bbb = (var1==var3);

           boolean ccc = (var2==var3);

           System.out.println(aaa);

           System.out.println(bbb);

           System.out.println(ccc);

}

}



null 과 NullPointerException

 참조 타입 변수는 힙영역의 객체를 참조하지 않는다는 뜻으로 null값을 가질 수 있습니다.

null 값도 초기 값으로 사용할 수 있기 때문에 null로 초기화된 참조 변수는 스택 영역에 저장됩니다.

참조 타입 변수가 null 값을 가지는지 확인하려면 ==, != 연산을 하면 됩니다.

           String var1 = null;           

           boolean aaa = (var1==null);

           boolean bbb = (var1!=null);

           System.out.println(aaa);

           System.out.println(bbb);



예외 : 자바 프로그램 실행 도중에 발생하는 오류.

참조 변수를 사용하면서 가장 많이 발생하는 예외 중에  NullPointerException 이 있습니다. 

이 예외는 참조 타입 변수를 잘못 사용하면 발생해요. 

null값을 가지는 참조 타입 변수는 사용할 수 없습니다.


반응형