• 카테고리

    질문 & 답변
  • 세부 분야

    취업 · 이직

  • 해결 여부

    미해결

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

21.01.05 18:37 작성 조회수 86

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를 권장합니다.