기록 > 기억
[JAVA] 문자열 (String) 본문
리터럴 VS 생성자
● 문자열 생성 방법
//문자열 리터럴
String str1 = "JAVA";
//new 생성자 함수
String str2 = new String("JAVA");
● 리터럴과 생성자 차이
String str1 = "JAVA"; //상수풀에 "JAVA"라는 문자열을 할당하고, 그 주소값을 str1 변수에 반환
String str2 = "JAVA"; //상수풀에 "JAVA"라는 문자열이 있으므로, 그 주소값을 str2 변수에 반환
String str3 = new String("JAVA"); //각각의 인스턴스 생성, 서로 다른 주소값을 가짐
String str4 = new String("JAVA"); //각각의 인스턴스 생성, 서로 다른 주소값을 가짐
System.out.println(str1 == str2); //true
System.out.println(str1.equals(str2)); //true
System.out.println(str3 == str4); //false
System.out.println(str3.equals(str4)); //true
System.out.println(str1 == str3); //false
System.out.println(str1.equals(str3)); //true
리터럴로 생성된 문자열은 문자열 상수 풀에 할당
문자열이 이미 있을 경우 그 주소값을 반환해주고, 없으면 상수풀에 새로 추가하고 그 주소값을 반환
new 연산자로 생성된 문자열은 메모리 힙 영역에 할당
각각의 인스턴스가 생성되기 때문에 주소 값이 다름
== 연산자는 주소값을 비교하고, equals는 문자열을 비교
'IT국비지원' 카테고리의 다른 글
[JAVA] 제네릭 타입 (0) | 2021.11.11 |
---|---|
[JAVA] 스레드 (0) | 2021.10.27 |
[JAVA] 기본 API 클래스 (0) | 2021.10.26 |
[JAVA] 예외 처리 (0) | 2021.10.25 |
[JAVA] 인터페이스 (0) | 2021.10.25 |
[JAVA] 상속 (0) | 2021.10.24 |
[JAVA] 객체와 클래스 (0) | 2021.10.24 |
Comments