JAVA
주소참조와 값참조
Initsave
2024. 4. 9. 19:30
주소참조와 값참조는 메서드의 매개변수에 어떤 값을 복사/주소값을 참조 하는지에 따라서 달라진다. 쉽게 보면 매개변수의 타입이 기본형 데이터 라면 값을 참조하는거고 참조형 데이터면 인스턴스화 된 주소값을 참조해서 사용하게 된다.
자바의 데이터 타입
- 기본형(primitive type)
- 원시타입은 실제 데이터 값이 저장하는 타입인 int, long, double, float, boolean, byte, short, char 이 있다. 스택(Stack) 메모리에 저장
- 참조형(reference type)
- 참조타입은 메모리 번지 값을 통해 객체를 참조하는 타입인 Integer, Long, Double, Float, Boolean, Byte, Short, Character(래퍼클래스 : wrapper class)가 있다. 힙(Heap) 메모리에 저장, GC가 돌면서 메모리 해제
주소참조(Call by reference)란 ?
데이터를 전달할때 주소 값을 던져주고 그 주소 값안에 있는 데이터를 사용한다.
값참조(Call by value) 란 ?
기본형인 값을 던져서 사용한다.
public class test {
public static void main(String[] args) {
// 값 참조
int a = 1;
int b = a;
System.out.println("a = " + a);
a = 20;
System.out.println("a = " + a+ ", b = " + b);
// 주소 참조
refer ref = new refer(1);
refer ref2 = ref;
System.out.println("ref.value = " + ref.value);
ref.value = 2;
System.out.println("ref.value = " + ref.value+ ", ref2.value = " + ref2.value);
}
}
class refer{
int value;
public refer(int value){
this.value = value;
}
}