package ja_0725;
public class String_1 {
public static void main(String[] args) {
char [] ss = { 'K' , 'o', 'r', 'e', 'a' };
String str1 = "Hello";
String str2 = new String ("java");
String str3 = new String (ss);
System.out.println(ss);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str1 + str2 + str3);
System.out.println();
System.out.println(ss.hashCode());
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());
System.out.println(str3.hashCode());
String kbs1 = "Hello";
System.out.println(kbs1.hashCode());
if (str1.equals(kbs1))
{
System.out.println("str1과 kbs1은 같다");
}
else
{
System.out.println("str1과 kbs1은 다르다");
}
}
}
왜 str1과 kbs1은 같다고 출력될까요? 간단합니다.
같은 문자열을 공유하고 있다면 같은 주소값이 출력되기 때문입니다.
만약, kbs1이 String kbs1 = new String("Hello");로 만들어졌다면
new string 값으로 주소값이 달랐을 것입니다.
하지만 그렇게 받지 않았고, 그냥 kbs1 = "Hello";로 받은것이죠
이때엔 같은 heap 공간을 공유하게 되어 같은 hashCode값이 나오게 된 것입니다.