String 클래스는 자바에서 문자열을 다루는 대표적인 클래스이다. 거의 모든 코드에 사용되고, 따라서 상세히 알아둘 필요가 있다.
String str = "aaa";
String str2 = new String("sss");
char data[] = {'a','b','c'};
String str3 = new String(data);
문자열은 위와같이 리터럴을 이용해 만들 수도 있고 생성자를 이용해 만들 수 있다.
두 경우 할당되는 메모리도 다르고, == 등의 연산에 있어서 조금 차이가 있다.
String str = "aaa";
String str2 = "aaa";
String str3 = new String("aaa");
String str4 = new String("aaa");
System.out.println(str==str2); // true
System.out.println(str3==str4); // flase
System.out.println(str==str3); // false
문자 리터럴을 사용해 객체를 생성할 경우, 이는 String constant pool 이라는 메모리공간에 할당된다. 이름처럼, 이 공간에는 같은게 두개 이상 존재할 수 없다. 따라서, str 과 str2는 같은 객체를 참조하고 있다. str3와 str4는 일반적인 객체이므로 당연히 == 의 결과는 false가 된다.
'Java > 까먹기 쉬운 중요한 사실들' 카테고리의 다른 글
| Enum vs static final (0) | 2022.01.17 |
|---|---|
| Integer등 랩퍼클래스 사용시 주의사항. (0) | 2020.09.30 |