기본형
기본형 : int, long, double, boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라고 한다.
기본형 변수에는 직접 사용할 수 있는 값이 들어가 있다.
- 실제 사용하는 값을 변수에 담고 바로 사용할 수 있다.
- 기본형에 들어가 있는 값들은 계산에 사용할 수 있다.
참조형
참조형 : Student student1, int[] students 의 같이 데이터에 접근하기 위한 참조를 저장하는 데이터 타입을 참조형이라고 한다.
(Integer, Double 이런것들은 기본형을 감싸는 래퍼 클래스 이므로 예외)
참조형 변수에는 주소(참조값)가 들어가 있다.
- 해당 메모리에 저장되어 있는 객체에 접근해야지 사용이 가능하다. 참조형에는 객체와 배열이 있다.
- 객체는 .(dot) 을 통해서 메모리상에 생성된 객체를 찾아가야 사용할 수 있다.
- 배열은 [] 를 통해서 메모리 상에 생성된 배열을 찾아가야 사용할 수 있다.
- 참조형에 들어가 있는 주소값들은 그대로 사용을 못하여 계산에 사용할 수 없다. ( 주소 - 주소 안됨)
참고 - String
자바에서 String 은 특별하다. String 은 사실은 클래스다. 따라서 참조형이다. 그런데 기본형처럼 문자 값을 바로 대입할 수 있다. 문자는 매우 자주 다루기 때문에 자바에서 특별하게 편의 기능을 제공한다
기본형 대입
int a = 10;
int b = a;
System.out.println("a = " + a);
System.out.println("b = " + b);
//a 변경
a = 20;
System.out.println("변경 a = 20");
System.out.println("a = " + a);
System.out.println("b = " + b);
//b 변경
b = 30;
System.out.println("변경 b = 30");
System.out.println("a = " + a);
System.out.println("b = " + b);
기본형은 대입을 하면 값을 읽고 해당 값을 복사해서 넣는식으므로, 해당 변수의 값이 바로 바뀐다.
참조형 대입
Data dataA = new Data();
dataA.value = 10;
Data dataB = dataA;
System.out.println("dataA 참조값="+ dataA);
System.out.println("dataB 참조값="+ dataB);
System.out.println("dataA.value = " + dataA.value);
System.out.println("dataB.value = " + dataB.value);
//dataA 변경
dataA.value = 20;
System.out.println("변경 dataA.value = 20");
System.out.println("dataA.value = " + dataA.value);
System.out.println("dataB.value = " + dataB.value);
//dataB 변경
dataB.value = 30;
System.out.println("변경 dataB.value = 30");
System.out.println("dataA.value = " + dataA.value);
System.out.println("dataB.value = " + dataB.value);
참조형은 해당 메모리 주소를 변수에 저장했으므로, dataA 나 dataB 는 똑같은 주소값을 참조하고 있다.
그래서 dataA의 값을 변경할시 dataB도 값의 변동이 있다. 이것은 주소값을 참조하고 있기 때문에 가능한 일이다.
'Java' 카테고리의 다른 글
객체지향, 절차 지향 (2) | 2023.12.18 |
---|---|
기본형(int)과 참조형(Student) 매서드 호출 -2 (0) | 2023.12.18 |
클래스 (객체) - 메모리 (0) | 2023.12.18 |
제네릭 (0) | 2023.06.13 |
record (0) | 2023.05.16 |