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 변수에 저장되어 있는 주소(참조)를 가지고 접근할 수 있다.
정리
- 사용자 정의 타입의 변수(= Class)내에 데이터를 저장하는 것이 아니라 new 키워드를 이용하여 따로 사용자 정의 타입의 객체를 만든 뒤, 객체안에 저장한다.
- 그리고, 사용자 정의 타입 변수에는 객체의 주소(참조)를 저장하여 객체에 접근할 수 있도록 만들어 준다.
예시
- Person1 이라는 사용자 정의 타입으로 first라는 변수를 생성하였다.
▶ 하지만, 아직 객체를 생성하지 않았기 때문에 객체의 주소(참조)는 존재하지 않아 null 값을 갖는다. - new 명령어를 이용하면 사람이름과 전화번호를 저장할 수 있는 Person1 타입의 객체가 생성되며, = (대입 연산자)에 의해서 first 변수에 객체의 주소(참조)가 저장하여 참조하게 된다.
- . (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로 배우는 자료 구조 (권오흠)