본문 바로가기



프로그래밍/JAVA

[JAVA] JAVA기초 #1 데이터 타입 분류

Java의 데이터 타입 분류 

자바에서는 크게 원시타입 primitive type, 참조타입 reference tyep으로 먼저 분류된다. 
기본 타입은 정수(byte,char,shor,int(eger),long), 실수(float, double), 논리(boolean) 타입으로 이루어져 있으며, 
참조 타입은 배열타입, 열거 타입, 클래스, 인터페이스로 이루어져 있다. 
기본 타입과 참조타입의 차이점은 기본타입은 그 값을 '실제로' 변수에 저장되어 활용된다.

백문이불여일견이라고 실제로 코드를 작성해서 출력해면 확실하게 이해 될것이다. 

public class CallReferenceType {

	public static void main(String[] args) {
    //기본 타입중, 정수타입에 int 변수를 선언
		int new_primitive = 1;
    //참조 타입중, 배열타입의 int 변수를 선언
			int [] new_int = {2};
		
        //기본타입의 변수를 호출
		System.out.println(new_primitive);
       //참조타입의 변수를 바로 호출
		System.out.println(new_int);
        //참조 타입의 변수 내용을 호출
        System.out.println(new_int[0]);
	}

}

 

참조타입을 바로호출하면 이상한 문자가 출력되는데 이는 그 객체의 참조 번지가 출력되는것이다. 그래서 참조 객체는 실제 내용을 호출할때 변수로 바로 호출할 수 없다. 위의 내용은 매우 간단하지만, 실제로는 스택영역에 원시타입인 new_primitive에는 실제 정수타입의 integer인 1이 연결되어 있고, new_int의 변수에는 [I@15db9742가 연결되어 있다. 자바의 heap메모리라는 영역의 해당 위치에 실제 "2"이라는 값이 저장되어 있는 상태인것이다.  

new_int[0] 은 "new_int배열의 0번째 데이터를 불러주세요." 뒤에서 배우겠지만, 프로그래밍에서 많은 경우 시작점은 0으로 되어있다. 얼핏 생각하면 왜 1이아니지 할 수 있지만,  컴퓨터 자체가 물리계가 아니라 논리계를 연산하는 기계에 가깝기 때문에 0을 기준으로 하는게 낫기 때문.