Java/[인프런 김영한 실전 자바 - 기본편]

[인프런 김영한 실전 자바 - 기본편] 기본형과 참조형

h2boom 2024. 7. 15. 13:53

기본형과 참조형

  • 변수 - 기본형 / 참조형 변수로 분류된다.
  • 기본형 변수 : 사용하는 값을 직접 넣을 수 있다.
    • 해당 값을 바로 사용할 수 있다.
  • 참조형 변수 : 객체가 저장된 메모리의 위치를 가리키는 참조 값을 넣을 수 있다.
    • 기본형 변수를 제외한 모든 변수로 객체, 배열 등에 사용된다.
    • 객체는 .을 통해 객체에 접근해서 값을 사용할 수 있다.
    • 배열은 []를 통해 배열에 접근해서 값을 사용할 수 있다.
  • 자바 대원칙: 자바는 항상 변수의 값을 복사해서 대입한다!!
    • 기본형 => 변수에 들어있는 실제 사용하는 값을 복사해서 대입한다.
    • 참조형 => 변수에 들어있는 참조 값을 복사해서 대입한다.

 

int a = 10;
int b = a;
  • 기본형 변수 b에는 변수 a의 값인 10을 복사하여 대입한다.

 

 

class Data {
	int value;
}

Data dataA = new Data();
dataA.value = 10;
Data dataB = dataA;
  • dataB 변수에는 dataA 변수의 참조 값을 복사해서 대입한다.
  • 각 변수에는 객체 자체가 들어있는 것이 아니기에 객체 자체를 복사하는 것이 아닌 객체의 참조 값을 복사하기에 같은 위치를 가리키고 있다.
    • 한 쪽에서 객체를 참조하여 값을 변경하는 경우, 나머지도 같은 참조 값을 갖고 있기에 값을 변경하는 경우 서로에게 영향을 미칠 수 있다. 

 

  •  메소드 호출 시에도 매개 변수에 값을 복사하여 대입한다.
    • 자바에서 메소드의 매개 변수는 항상 값에 의해 전달된다.
    • 실제 값이냐, 참조 값이냐에 따라 결과가 달라질 뿐 원칙은 같다.
      • 메소드 호출자의 값에 영향을 미치는 여부의 차이

 

  • 멤버 변수 vs 지역 변수
    • 멤버 변수 : 클래스에 선언된 변수
      • 멤버 변수는 객체 생성 시 자동으로 초기화가 된다. (기본 값)
    • 지역 변수 : 메소드에 선언된 변수 
      • 매개 변수도 지역 변수의 일종이다. 
      • 지역 변수는 수동으로 직접 초기화를 해줘야 한다.

 

  • Null
    • 값이 존재하지 않는, 없다는 의미
    • 참조형 변수에서 아직 가리키는 값이 없을 때 넣어둘 수 있다.
Data data = new Data();
data = null;
  • 참조형 변수에 null이 들어가게되면 참조하고 있는 값이 없다는 의미이며, 기존에 참조하던 객체가 있었더라도 참조 값이 없어지게 되므로 참조할 수 없게 된다.
    • 예시와 같이 아무도 참조하지 않는 객체의 경우에는 다시 참조 값을 구할 방법이 없다.
      그렇기에 다시 객체에 접근할 수 있는 방법도 없어진다.
    • 아무도 참조하지 않는 객체는 메모리만 차지하게 되므로 JVM의 GC에 의해 자동으로 제거된다.

 

 

Data data = null;
data.value = 10;
  • 참조형 변수 data에 null이 들어간 상태이며 null은 참조할 주소가 존재하지 않는다는 의미
    • 참조할 객체가 존재하지 않는데 .으로 객체에 접근을 하면 NullPointerException 예외가 발생하게 된다.
  • NullPointerException 발생 시 null 값에 .을 찍었다고 생각하면 문제를 쉽게 찾을 수 있다.

출처 : [인프런 김영한 실전 자바 - 기본편]

https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EA%B8%B0%EB%B3%B8%ED%8E%B8

 

김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런

김영한 | 실무에 필요한 자바 객체 지향의 핵심 개념을 예제 코드를 통해 쉽게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문

www.inflearn.com