참조_기본형과 참조형
2024. 1. 11. 21:07ㆍJAVA
JAVA에서 변수는 크게 기본형(primitive Type)과 참조형(Refference Type) 으로 나뉜다.
기본형 : byte, short, int, long, float, double, boolean 등
참조형 : 기본형 제외하고 전부
String이 없네?
String 은 참조형으로, 사실 클래스이다. 그런데 원체 많이 사용되다 보니, 기본형처럼 사용할 수 있도록 편의를 좀 봐준다는 모양이다.
변수 대입
'JAVA 에서 값을 대입한다는 것은, 변수에 들어있는 값을 복사해서 대입하는 것이다.'
다시 한번 써보며 상기 해보자.
기본형
int a = 10;
int b = a;
a = 5;
b = ? // 10;
1. int a 에 10을 대입하고,
2. int b에 10이 대입된 a를 대입한다.
3. 그리고 나선 a 에 다시 5를 대입한다.
b에는 a가 담겨 있고, a의 값을 바꿨으니 b = 5 일까?
아니다.
자바는 값을 복사해서 대입한다.
int b 에는 a 변수에 들어있는 10이 복사되어 대입된다. a 자체가 들어가는 것이 아니다.
즉, 2번째 줄까지 입력했을 때
a = 10 , b = a = 10 이나, 서로 다른 10을 가지고 있는 것이다.
따라서 a에 값을 변경했다고 b 에 담긴 값이 변경되지 않는다.
한번 더!
public void echoJavaIsCallByValue(){
System.out.println("자바는 call by value!");
};
기본형은 알겠고, 그럼 참조형은?
참조형
CallByValue callByValue = new CallByValue();
CallByValue callByValue2 = callByValue;
위에서 언급했듯, 자바는 Call By Value 이다.
변수 callByValue 에는 new 생성자(); 를 통해 생성된 인스턴스의 참조 주소값을 가지고 있다.
따라서, callByValue 와 callByValue2 는 동일한 참조 주소를 갖는다.
그렇기 때문에
callByValue.name = "라따뚜이랄랄랄라";
로 값을 넣을 경우,
callByValue , callByValue2 는 같은 주소값을 갖고 있으므로
System.out.println(callByValue2.name); // 라따뚜이랄랄랄라
'JAVA' 카테고리의 다른 글
| 참조_변수 초기화 (0) | 2024.01.13 |
|---|---|
| 참조_메소드 (0) | 2024.01.11 |
| Class_instance (0) | 2024.01.10 |
| Class_이게 뭔데 (0) | 2024.01.10 |
| Method_오버 로딩 (0) | 2024.01.10 |