첫번째과제(2) – Primitive type과 Reference type의 차이

Java는 변수의 데이터 타입에 primitive type과 reference type이 존재한다.

간단히 말하자면 primitive type(기본형 변수)은 언어에서 사전 정의 되어있는 데이터 타입이다. 반면 reference type(참조형 변수)은 primitive type의 wrapper 객체로서 object를 상속한 객체형으로 나타난다.

프로그래밍 시 둘의 차이점은 참조형 변수의 Integer나 Double 등은 object로서 가공이 용이한 반면 단순대입 시에 좀 불편하다. 기본형 변수의 경우 단순연산에는 좋으나 복잡한 데이터 가공 시에 어려움이 있다는 차이점이 있다.

좀 더 깊게 들어가면,

기본형 변수는 실제 값을 저장하는 반면, 참조형 변수는 어떤 값이 저장되어 있는 주소를 값으로 갖는다. Java는 C언어와 달리 String을 제외한 참조형 변수 간의 연산이 불가능하므로 실제 연산에 사용되는 것은 모두 기본형 변수이다.

기본형 변수에는 int, char, short, long, float, double, boolean, byte 등이 있고, 참조형 변수는 8개의 기본형을 제외한 나머지 타입이다.

  1 byte 2 byte 3 byte 4 byte
논리형 boolean      
문자형    char    
정수형  byte short int long
실수형     float double

논리형인 boolean형 변수에는 true와 false 중 하나를 저장할 수 있고 기본값은 false이다. 대답(yes/no), 스위치(on/off) 등의 논리구현에 주로 사용된다. boolean형 변수를 선언하는 법은 다음과 같다.

boolean a = true;

나머지 변수들의 특징과 선언하는 법은 C언어와 같으므로 생략한다.

 

참조형 변수는 프로그래머가 직접 만들어 추가할 수 있으므로 그 수가 정해져있지 않다. 또한 참조형 변수를 선언할 때 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 변수의 타입이 된다. 그러므로 새로운 클래스를 작성한다는 것은 새로운 참조형을 추가하는 것이 된다. 참조형 변수를 선언하는 법은 다음과 같다.

클래스이름 변수명; Date today;

다음은 Date 클래스 타입의 참조변수 today를 선언한 것이다. 참조형 변수는 null 또는 객체의 주소를 값으로 갖고 참조변수의 초기화는 다음과 같이 한다.

Date today = null;

또는

Date today = new Date();

객체를 생성하는 연산자 new의 연산결과는 생성된 객체의 주소이다. 이 주소가 대입연산자 = 에 의해서 참조변수 today에 저장되고 참조변수 today를 이용해 생성된 객체를 사용할 수 있다.

댓글 남기기