본문 바로가기

Back-End/JAVA

기본형 변수와 참조형 변수

일단 들어가기 앞서 김영환 센세께서 말씀하신 대원칙 그냥 뇌에 문신으로 새겨놔야할 말이 있다.

대원칙 : 자바는 항상 변수의 값을 복사해서 대입한다..!

 

기본형 : 기본형은 숫자를 말한다. 실제 사용하는 값을 변수에 담을 수 있다. 그래서 해당 값을 바로 사용할 수 있다.

기본형에는 int, double, long, boolean 등이 있다.

그래서 기본형은 실제 사용하는 값이 들어갈 수 있어서 계산에 바로 사용할 수 있다.

 

참조형 : 참조형은 실제 사용하는 값을 변수에 담는 것이 아니다. 실제 객체의 주소를 저장한다.  

참조형에는 객체, 배열, 래퍼 클래스 등이 있다.

하지만 참조형은 참조값(주소 x001) 같은 것으로는 계산하지 못한다.

.을 찍고 해당 객체 필드에 접근해서 값을 얻어와서 계산을 하던지 객체 내의 메서드에서 필드 변수를 사용해 계산하고 얻어오는 방법 밖에 없다!

 

참조형과 메서드 호출

Data dataA = new Data(); dataA = x001이라고 생각하자
dataA.value = 10; //x001.value에 값을 10을 넣었다.
System.out.println("메서드 호출 전 : dataA.value = " + dataA.value); //그러면 10이 호출된다.
changeRef(dataA); //chageRef(x001) (1) 이렇게 인자에 참조(주소)값을 전달하면
System.out.println("메서드 호출 후 : dataA.value = " + dataA.value); (5) 20이 호출된다.

static void changeRef(Data dataX) { // 파라미터로 (Data dataX = x001) (2) 이렇게 받으면
	// (3) DataX 또한 x001주소를 참조하게 된다.
	dataX.value = 20; 
    // (4) 그래서 x001.value의 값은 10이지만 인스턴스를 공유하게 되어 x001.value의 값이 20으로 바뀐다.
}

//실행 결과 
메서드 호출 전 : dataA.value = 10
메서드 호출 후 : dataA.value = 20

'Back-End > JAVA' 카테고리의 다른 글

캡슐화(짧음 주의)  (1) 2024.11.16
오버로딩과 this()  (0) 2024.11.16
Java의 객체 공유(의존성 주입)  (2) 2024.11.16
ENUM  (4) 2024.11.15
배열  (0) 2024.11.08