Java 기본형 참조형

벼랑 끝 코딩·2025년 2월 21일

Java

목록 보기
9/40

자바 변수 데이터 타입에는
기본형과 참조형이 있다.
초장에 개념을 확 잡아두면
헷갈리거나 다시 찾아볼 일이 없으니
제대로 알아보자.

기본형

  • 데이터를 변수에 직접 넣어 사용한다.
  • 데이터를 그대로 계산에 사용 가능하다.
  • 소문자로 시작한다(int, long, double, boolean, ..).
  • null을 할당할 수 없다.

참조형

  • 기본형을 제외한 나머지는 모두 참조형
  • 대문자로 시작한다.
  • 객체 또는 배열에 사용
  • 객체는 '.'으로 접근, 배열은 '[]'로 접근
  • 데이터에 접근할 수 있는 참조(메모리 주소)값을 넣어 사용한다.
  • 데이터가 아닌 참조 값을 그대로 사용할 수 없다.
  • null을 할당할 수 있다.

기본형 참조형 변수 대입

  • 자바는 변수의 값을 복사해서 대입한다
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;
}

마무리

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

profile
복습에 대한 비판과 지적을 부탁드립니다

0개의 댓글