문자열을 선언하는 2가지 방법
String
String text = "포도";
- 특징 : String 데이터를 불변의 클래스로 설정한다
- 단점 : 새로운 인스턴스를 계속 생성한다
new 연산자 사용
String text = new String("포도");
- 특징 : new 연산자를 통해 String 클래스를 선언하며, 변경 및 연결 시 성능이 좋다
- 단점 : 변경이 없을 시 불필요하게 이중으로 인스턴스를 생성한다
public class StringTest
{
public static void main(String[] args)
{
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2);
String str3 = "abc";
String str4 = "abc";
System.out.println(str3 == str4);
}
}
false
true
- new 생성자를 사용하면 서로 다른 인스턴스, 즉 Heap 메모리에 저장하기 때문에 False
- String을 사용하면 같은 메모리, 즉 Runtime Constant Pool에 저장되기 때문에 True