byte(1) -> short(2)/char(2) -> int(4) -> long(8) -> float(4) -> double(8)
String name1 = "seongeun";
String name2 = new String("seongeun");
두 방식 모두 실제 문자열의 내용을 값으로 갖고 있는 기본 타입이 아닌, 문자열이 존재하는 메모리 공간 상의 주소값을 저장하고 있는 참조 타입이다.
name1
과 name2
의 문자열 내용이 동일한지를 비교하기 위해서는 ==
연산자가 아니라 equals()
메서드를 사용해야 한다.
name2
는 String 클래스를 통해 생성된 인스턴스의 주소값을 가리키고 있기 때문이다.
String 클래스로 생성한 문자열을 더하기 위해서는 매번 새로운 인스턴스를 생성해야 한다. 문자열이 길어지면 비효율적이므로, StringBuilder
또는 StringBuffer
를 활용한다.