Notice
Recent Comments
Recent Posts
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Today
Total
관리 메뉴

기록 > 기억

[JAVA] 문자열 (String) 본문

IT국비지원

[JAVA] 문자열 (String)

BY SON 2021. 10. 26. 00:17

리터럴 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