Java - String Pool

김지현·2023년 4월 6일
0

정리

목록 보기
2/8

String 생성 방식

  1. 생성자를 이용한 방식
  • Heap 영역에 저장
String str1 = new String("Java");
  1. 리터럴을 이용한 방식
  • String Pool 영역에 저장
String str2 = "Java";

String Pool

String str1 = "Java";
String str2 = "Java";
String str3 = new String("Java");

System.out.println(str1 == str2);			// true
System.out.println(str1 == str3);			// false

같은 "Java" 인데 str1str2 는 같고 str1str3 은 다르다고 나옴

일단 == 연산은 값을 비교하는 것이 아니라 같은 메모리를 참조하는지 비교하는 것

  • str1 은 String Pool에 값이 저장됨
  • str2 는 이미 같은 문자열이 있으므로 str1 과 같은 String Pool에 저장됨
  • str3 은 Heap 영역에 저장됨

따라서 str1str2 는 같은 메모리를 참조하지만 str3 는 다른 메모리에 값이 저장되어있으므로 결과값이 false가 나옴

equals( )

두 문자열의 값을 비교하는 메서드

String str1 = "Java";
String str2 = "Java";
String str3 = new String("Java");

System.out.println(str1.equals(str2));			// true
System.out.println(str1.equals(str3));			// true

문자열 비교는 equals() 로 습관화하는 것이 좋음

0개의 댓글

관련 채용 정보