
자바 변수 데이터 타입에는
기본형과 참조형이 있다.
초장에 개념을 확 잡아두면
헷갈리거나 다시 찾아볼 일이 없으니
제대로 알아보자.
a = 1;
b = 2;
a = b; // a = 2, b를 대입하는 것이 아닌 b의 값을 복사해서 대입
b = 3; // a = 2, b를 바꾸어도 a에 영향을 미치지 않는다.
User user1 = new User(); // x001
User user2 = new User(); // x002
User user3 = new User(); // x003
user1 = user2; // user1 = x002, user2를 대입하는 것이 아닌 user2의 참조 값을 복사해서 대입
user2 = user3; // user1 = x002, user2를 바꾸어도 user1에 영향을 미치지 않는다.
class User {
public int grade;
}
public void userMethod() {
int a = 1;
changeBasicValue(a); // a = 1, 지역 변수와 값을 복사해서 대입한 매개 변수는 다른 변수
User user = new User();
user.grade = 1;
changeRefValue(user); /* user.grade = 2, 참조 값을 복사하여 같은 메모리 주소에 접근하므로,
지역 변수와 매개 변수가 같은 객체 공유*/
private void method changeBasicValue(int grade) {
grade += 1;
}
private void method changeRefValue(User user) {
user.grade += 1;
}

자바의 변수 대입은 값을 복사해서 전달한다는 것을 이해하고
기본형과 메모리 주소가 들어있는 참조형의 개념을 이해하면
애매하게 자리잡았던 변수의 복사를 이해할 수 있겠다.