프리미티브 타입과 레퍼런스 타입
프리미티브 타입은 자바의 기본 타입으로 정수, 실수, 문자, 논리 리터럴을 저장하는 타입이고 Stack 영역에 저장된다.
위에서 살펴봤으니 이제 레퍼런스 타입에 대해서 알아보자.
레퍼런스 타입(참조 타입)이란 객체(Object)의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말한다.
실제 값을 변수안에 저장하지 않고, 메모리의 번지를 값으로 가지며 Heap Area에 생성된다.
메모리의 번지를 통해 객체를 참조한다는 뜻에서 참조 타입 (Reference Type)이라고 한다.
Null and NullPointerException
참조 타입의 변수는 Heap Area의 객체를 참조하지 않는다는 뜻으로 null 값을 가질 수 있다.
null 값도 초기값으로 사용할 수 있기 때문에 null로 초기화된 참조 변수는 스택 영역에 생성된다.
참조 타입의 변수를 사용할 때 참조할 객체가 없으므로 사용할 수 없을 때 나오는 에러가 NullPointerException이다.
int[] intArray = null;
intArray[0] = 10; // NullPointerException
String str = null;
System.out.println('총 문자 수 : " + str.length()); // NullPointerException
열거 타입(enumeration type)
몇 개의 열거 상수 (enumeration constant) 중에서 하나의 상수를 저장하는 데이터 타입
열거 타입 선언
열거 타입을 선언하기 위해서는 타입의 이름을 정하고 소스 파일을 생성해야 한다.
public enum Week {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY...}
Enum에 대해서는 나중에 다시 다뤄보자.
클래스 타입
객체를 생성하기 위한 필드와 메서드가 정의된 설계도
클래스로 부터 만들어진 객체를 인스턴스라고 한다.
String 타입 (String Class Type에 포함)
자바에서 문자열 사용 시 자바에서 제공하는 String class를 참조한다.
String 객체의 선언과 초기화
String name;
name = "아무개";
String hobby = "watching movie";
String name1 = "아무개";
String name2 = "아무개";
String name1 = new String("아무개");
String name2 = new String("아무개");
String 객체를 비교시에는 String 객체의 equals()메서드를 사용해야 한다.
equals() 메서드는 원본 문자열과 매개값으로 주어진 비교 문자열이 동일한지 비교한 후 true 또는 false를 리턴한다.
클래스 타입에 대해서는 나중에 자세히 다뤄보자.
인터페이스 타입
객체의 사용방법을 정의한 타입.
객체의 교환성을 높여주기 때문에 다형성을 구현하는 매우 중요한 역할을 한다.
인터페이스 타입에 대해서도 나중에 자세히 다뤄보자.
배열 타입
같은 타입의 데이터를 연속된 공간에 나열시키고, 각 데이터에 Index를 부여해 놓은 자료구조
생성과 동시에 값을 초기화 하거나 new 예약어를 통해 공간의 크기를 설정하고 초기화 할 수 있다.
'Language > JAVA' 카테고리의 다른 글
2주차 과제 : 타입 변환, 캐스팅 그리고 타입 프로모션 (0) | 2021.02.13 |
---|---|
2주차 과제 : 1차 및 2차 배열 선언하기 (0) | 2021.02.13 |
2주차 과제 : 프리미티브 타입의 종류와 값의 범위 그리고 기본값 (0) | 2021.02.13 |
2주차 과제 : 변수의 스코프와 라이프타임 (0) | 2021.02.13 |
2주차 과제 : 리터럴 (0) | 2021.02.13 |