728x90
|
프리밋 타입은 다르다.
프리밋타입은 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
'프로그래밍 > 자바' 카테고리의 다른 글
Try-Catch문이 없는 sql insert // Update // Select // Delete (0) | 2021.08.23 |
---|---|
자바에서 구글메일로 메일보내기 (0) | 2015.06.05 |
[자바3일차] 파일클래스/오브젝트/파일관리 (0) | 2014.10.14 |
[자바2일차] JDK라이브러리 시간/수학/함수/문자열/랜덤 (0) | 2014.10.13 |