프로그래밍/자바

[자바]레퍼런스와 널값

RBWSN 2014. 10. 12. 06:10
728x90
뇌를 자극하는 Java 프로그래밍
국내도서
저자 : 김윤명
출판 : 한빛미디어 2006.08.31
상세보기
인용하였습니다




레퍼런스 타입과
프리밋 타입은 다르다.
프리밋타입은 int num 이라면 num의 값에 저장하는 것이지만
레퍼런스 타입은 int arr[]이 있다면 이 arr의 배열의 주소에 값을 집어넣는것이다 arr=1ardfre이런식으로

예제를 제시해보겠다.



package ch01;

public class Ex {

        public static void main(String[] args) {// 프리밋타입 체크
               int num=101;
               int num2 = num;
              num2= 102; //??
              System. out.println(num);
              System. out.println(num2);
              num=103; //?
              System. out.println(num);
              System. out.println(num2);

       }

}


이번에는 레퍼런스 타입이다.
보시다 시피  [I@15db9742 주소에 값이 저장되어서 출력된다.
아까는 arr1[0]=6을 넣었는데 arr2[0]까지 변경된게 보이는가? 
이게 레퍼런스와 프리밋 타입의 차이점이다. 
프리밋은 변수자체에 값을저장하고
레퍼런스는 주소에 값을 저장한다. // 이 주소는 자바가 알아서 하므로 계산하므로 알 필요가없다.


package ch01;

public class refer1 {

        public static void main(String[] args) {
               int arr1[] = {1,2,3,4,5};
               int arr2[] = arr1;
              System. out.println(arr1);
              System. out.println(arr2);
              System. out.println();
               printa(arr1);
               printa(arr2);
              System. out.println();
              arr1[0]=6;
               printa(arr1);
               printa(arr2);
              
              

       }
        static void printa(int arr[]){
               for(int i=0;i<5;i++){
                     System. out.print(arr[i]);
                     System. out.print(arr[i]);

              }
       }

}

---------------------------null참조값
null참조값은 주소가 null로 변하는것이지 아무런 참조값을 가지도 있지 않는게 아니다.
arr1=null로 되었다면 arr1의 주소는 null이고 컴파일하게되면 NullPointerException을 발생시킨다.
예제를 보자


package ch01;

import java.awt.Point;

public class nullex {

        public static void main(String[] args) {
              Point obj = null;
              System. out.println(obj. x);
              System. out.println(obj.y );


       }

}

이널포인트 익셉션을 처리하기위해서는 두가지 방법이있다 예외처리/if문

둘다 보여주겠다 .







이렇게 두가지로 에러를 처리 할 수 있다. 여기서 문제를 내겠다.



여기서도 익셉션이 발생하는데 확인하고 if문과 예외처리를 해보시길 바란다 제군들








728x90