자바에서 자료형이란 변수에 적재할 데이터가 메모리에 어떻게 저장되고 프로그램에서 어떻게 처리되어야 하는지 명시적으로 알려주는 키워드를 말한다.
기본형에는 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double)으로 나뉜다.
모두 소문자로 시작하고 비객체타입으로 기본값이 정해져있고 null값을 가질 수 없다. 변수의 선언과 동시에 메모리를 생성한다. 모든 값 타입은 메모리의 스택에 저장된다. 저장공간에 실제 자료값을 가진다.
실수를 가수와 지수형식으로 저장하는 부동소수점 방식으로 저장한다. 가수를 표현할때 double형이 float형보다 표현가능범위가 더 크므로 double형이 보다 정밀하게 표현할 수 있다. 자바에서 실수 기본타입은 double형이므로 float형에 알파벳F를 붙여 float형임을 명시해주어야 한다. 그렇지 않으면 float형 사용시 컴퓨터에서는 무조건 double타입으로 이해하므로 컴파일에러가 발생한다.
자바에서 기본형을 제외한 타입은 모두 참조형이다. 참조형은 자바 최상위인 java.lang.Object
클래스를 상속하는 모든 클래스를 말한다. 물론 new로 인해 생성되는 것은 메모리 영역 중 힙영역에 생성을하고 GC에 의해 메모리를 해제한다. 참조형 타입에는 클래스타입/인터페이스타입/배열타입/열거타입이 있다.
객체를 의미하는 NULL이 존재하며 문법상으로 에러가 없으나 실행시 에러가 나는 런타임에러가 발생한다. 예로 객체나 배열을 NULL값으로 받으면 NPE이 발생하므로 변수 값을 넣어야 한다. 힙에 생성된 인스턴스는 JVM의 스택영역에 존재하는 포인터 참조값을 가지고 있어서 이를 통해 인스턴스를 핸들링하게 된다.
이 클래스는 참조형에 속하지만 기본적인 사용은 기본형처럼 사용하며, 불변하는 객체다. String클래스의 값을 변경하는 메서드를 사용한다고 해도 새로운 객체를 만들어낸다. 일반적으로 기본형 비교는 ==를 사용하나, String객체 간 비교는 .equals()
를 사용해야 한다.