Primitive type
총 8가지의 기본형 타입(Primitive type)을 미리 정의하여 제공한다.
실제 값을 저장하는 공간으로 스택(Stack) 메모리에 저장된다.
Reference type
자바에서는 포인터 대신 Reference라는 개념이 존재한다.
값이 저장되어 있는 곳의 주소값을 저장하는 공간으로 힙(Heap) 메모리에 저장된다.
자바는 문자열을 사용할 수 있도록 String 클래스를 제공하는데 String을 사용할 때 문자열을 생성자의 매개변수로 하여 생성하는 방식과 이미 생성된 문자열 상수를 가리키는 방식이 있다.
String str1 = new String("abc"); // 생성자의 매개변수로 문자열 생성
String str2 = "test"; // 문자열 상수를 가리키는 방식
String str3 = "test";
new 예약어를 사용하여 객체를 사용하는 경우 "abc" 문자열을 위한 메모리가 할당되고 새로운 객체가 생성된다.
하지만 생성자를 이용하지 않고 바로 문자열 상수를 가리키는 경우에는 기존에 만들어져 있던 "test"라는 문자열 상수의 메모리 주소를 가리키게 된다.
"test"와 같이 프로그램에서 사용되는 상수 값을 저장하는 공간을 constant pool 이라고 한다.
프로그램을 만들다 보면 문자열을 변경하거나 연결해야 할 때가 많기 때문에 내부의 문자열이 변경되지 않는 String 클래스보다 StringBuffer와 StringBuilder 클래스를 활용하는 것이 좋다.
모든 객체의 최상위 객체, 모든 객체에는 Object의 메소드를 호출할 수 있다.