강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

너무더워님의 프로필 이미지
너무더워

작성한 질문수

더 개발자, 인터뷰 가이드

안녕하세요 String 리터럴 생성방식에 대해 질문있습니다.

작성

·

150

0

class Main {
public static void main(String[] args) {
String str1 = "kimshin";
String str2 = "kimshin";
String str3 = "komshin";
String str4 = str1.replace("ki","ko");

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

}
}

String, StringBuffer, Builder 과제를 하던중 질문있습니다.

리터럴 생성방식은 String constant pool에 저장되서 "=="연산해도 true가 된다는 것을 알았습니다.
위 코드에서 str3와 str4도 리터럴인데 왜 false가 나오는지 알고싶습니다.

감사합니다!

답변 1

1

백기선님의 프로필 이미지
백기선
지식공유자

replace 메소드 구현체를 보시면 아시겠지만 내부에서 new String으로 인스턴스를 생성합니다. 그래서 자바에서 문자열을 비교할 때 ==말고 equals를 권장합니다.

너무더워님의 프로필 이미지
너무더워

작성한 질문수

질문하기