참조 타입
기본 타입
- JVM에서 제공하는 8개의 데이터 타입의 종류를 의미합니다.
- int,float 등등
- 기본 데이터 타입은 변수의 값을 직접 저장하여 가지고 있습니다.
- 기본 데이터 타입 변환은 실수값 3.5 -> 정수인 3으로 직접 값을 변경합니다.
참조 타입
- 개발자 정의 타입으로 개발자가 직접 작성한 타입입니다.
- 개발자 정의 타입의 실체를 변수에 저장하게 되면 실체는 힙영역에 존재하고 실체의 주소 값이 변수에 저장됩니다.
- 참조 타입 변환은 참조 값의 의미가 변경되는데 즉 가리키는 주소가 변경되는 것이 아닌 원래 주소가 가리키는 곳에서 사용할 수 있는 범위 즉 멤버들이 달라지는 것을 의미합니다.
개발자 정의 타입
- 별도의 java파일을 생성하여 해당 내용을 작성합니다.
- 각 타입은 실체를 생성할 때 사용되지만 인터페이스와 어노테이션은 제외 됩니다.
- 생성된 실체를 접근할 때도 해당 타입의 참조 값을 사용하여 수행합니다.
- 실체는 런타임 때 힙에 생성이 되기 때문에 코딩 시 이름값 식별자를 부여할 수 없고 실체를 사용하기 위해 참조 변수를 사용하여 주소를 변수에 넣고 사용합니다.
#배열
- [] 연산자를 사용하여 정의 합니다.
- 기존 타입의 연속하는 집합입니다.
- 별도의 java파일을 생성하지 않고 소스 코드내에서 사용하며 리터럴이 사용 가능합니다.
- 리터럴은 초기화시 넣는 상수를 의미합니다.
#클래스 타입
- class 예약어를 사용하여 정의합니다.
- 별도의 java 파일을 사용하며 실체인 객체를 new를 이용해 생성합니다.
- String 클래스 만이 리터럴 사용이 가능합니다.
- 객체의 내용은 클래스 타입에 작성하며 클래스 멤버는 static을 사용해 표현합니다.
#인터페이스 타입
- interface 예약어를 사용하여 정의합니다.
- 별도의 java 파일을 사용하며 생성자가 없고 실체를 생성하지 못합니다.
- 객체의 사용법을 작성하며 다형성 구현과 함수형 프로그램 제작시 사용됩니다.
- 함수형 프로그램은 타켓타입이 인터페이스 일때 람다식을 사용하여 구현합니다.
#열거 타입
- enum 예약어를 사용하여 정의합니다.
- 별도의 java 파일을 사용하며 열거되는 상수들이 실체로 생성됩니다.
#어노테이션 타입
- @interface 어노테이션을 이용하여 정의합니다.
- 별도의 java 파일을 사용해 실체를 생성하지 못합니다.
- 어노테이션을 이용해 제공할 기능을 알려 해당 기능을 사용하기 위해 쓰며 메타 데이터 타입입니다.