거북이처럼 천천히

Java - 클래스 정리 (2) 본문

Back-end/Java 개념

Java - 클래스 정리 (2)

유로 청년 2022. 6. 26. 22:18

클래스 정리 (1) 에서 클래스 정의에서 부터 객체 생성, 인스턴스 변수 활용, 배열 생성까지 다루어 보았다. 

이번에는 Primitive data type과 Class의 차이점을 공부하여 좀 더 심도 있게 생각해보겠다.

 


Primitive data type과 Class 차이점

클래스도 Primitive data 처럼 하나의 타입이지만, 중요한 차이점이 존재한다.

 

  • Primitive 타입의 변수인 경우에는 그 변수안에 Primitive 타입의 데이터가 저장하게 된다.
    ex) int count 라는 변수가 존재한다면, count 변수안에는 0이라는 정수형 데이터가 저장하게 된다.
    ( 너무나도 당연한 이야기이다. )
  • 하지만, 사용자 정의 타입(=클래스 타입)의 변수인 경우에는 사용자 정의 타입의 "first" 변수에 사람 이름과 전화번호가 저장되는 것이 아니라 new 명령어를 이용해서 사용자 정의 타입의 객체를 따로 만들어서 객체안에 사람 이름과 전화번호를 저장하게 된다.
  • 그럼 사용자 정의 타입으로 생성된 first 변수에는 무엇이 저장되어 있는가?
    ▶ 바로 사람 이름과 전화 번호가 저장되어 있는 객체의 주소(참조)를 저장하고 있다. 따라서 필드(=인스번스 변수)나
        객체에 접근하고 싶으면 first 변수에 저장되어 있는 주소(참조)를 가지고 접근할 수 있다.

 

정리

  1. 사용자 정의 타입의 변수(= Class)내에 데이터를 저장하는 것이 아니라 new 키워드를 이용하여 따로 사용자 정의 타입의 객체를 만든 뒤, 객체안에 저장한다.
  2. 그리고, 사용자 정의 타입 변수에는 객체의 주소(참조)를 저장하여 객체에 접근할 수 있도록 만들어 준다.

예시 

  1. Person1 이라는 사용자 정의 타입으로 first라는 변수를 생성하였다.
    ▶ 하지만, 아직 객체를 생성하지 않았기 때문에 객체의 주소(참조)는 존재하지 않아 null 값을 갖는다.
  2. new 명령어를 이용하면 사람이름과 전화번호를 저장할 수 있는 Person1 타입의 객체가 생성되며, = (대입 연산자)에 의해서 first 변수에 객체의 주소(참조)가 저장하여 참조하게 된다.
  3. . (dot)를 이용하여 first가 가르키고 있는 객체의 필드(name과 number)에 접근하여 값을 저장하게 된다.

 

Java에서는 first 변수처럼 객체의 주소(참조)를 저장하고 있기 때문에 "참조 변수"라 한다.


요약

Person1 first = new Person1(); 

first.name = "Chris";

first.phoneNumber = "010-1234-5896";

 

▶ "Person1" 사용자 정의 타입의 first 객체(=인스턴스)가 생성되었고, new 명령어를 통해 "Person 1" 타입의 객체가 생성되었다. 이때의 객체는 이름이 없는 객체이며, 이 객체안에 사람의 이름과 전화번호를 저장한다. 그리고, first 객체는 데이터가 저장된 이름없는 객체의 주소(참조) 정보를 저장하고 있으며, first 객체를 "참조 변수"라 한다. 

 

Reference

  • Java로 배우는 자료 구조 (권오흠)

 

'Back-end > Java 개념' 카테고리의 다른 글

Java - 클래스 정리 (4)  (0) 2022.06.27
Java - 클래스 정리 (3)  (0) 2022.06.27
Java - 클래스 정리 (1)  (0) 2022.06.26
Java - 변수 선언 위치에 따른 변수 구분  (0) 2022.06.26
Java - call by value & call by reference  (0) 2022.06.21