기본형과 참조형의 공유
자바에서 제공하는 많은 기본 클래스가 불변 객체로 설계되어 있다.
- 기본형: 하나의 값을 여러 변수에서 공유하지 않는다.
- 참조형: 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있다.
예제
public class PrimitiveMain {
public static void main(String[] args) {
//기본형은 절대로 같은 값을 공유하지 않는다.
int a = 10;
int b = a; // a->b 값 복사 후 대입
System.out.println("a = " + a);
System.out.println("b = " + b);
b = 20;
System.out.println("20 -> b");
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
실행결과
=> 기본형 a와 b는 하나의 값을 공유하지 않는다. b=a라고 하면 자바는 값을 복사해서 대입한다.
이번에는 참조형 예제를 보자.
Addreess.java
public class Address {
private String value;
public Address(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return "Address{" +
"value='" + value + '\'' +
'}';
}
}
RefMain1_1.java
public class RefMain1_1 {
public static void main(String[] args) {
//참조형 변수는 하나의 인스턴스를 공유할 수 있다.
Address a = new Address("서울");
Address b = a;
System.out.println("a = " + a);
System.out.println("b = " + b);
b.setValue("부산");
System.out.println("b -> 부산");
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
실행 결과
=> b를 변경하면 a의 주소도 '부산'으로 변경된다.
참조형 변수들은 같은 참조값을 통해 같은 인스턴스를 참조한다.
b=a라고 하면 a의 참조값을 복사해서 b에 전달한다. 참조값을 복사하므로 결과적으로 a,b는 같은 인스턴스를 참조하는 것.
* 인프런 '김영한의 실전 자바 - 중급 1편'을 참고하여 작성하였습니다.
'프로그래밍언어 > Java' 카테고리의 다른 글
[Java 중급] 불변 객체 (0) | 2024.08.12 |
---|---|
[Java 중급] 공유 참조와 사이드 이펙트 (0) | 2024.08.08 |
[Java 중급] equals() (0) | 2024.08.08 |
[Java 중급] Object와 OCP (0) | 2024.08.01 |
[Java 중급] toString() (0) | 2024.07.31 |