[JAVA] String 예제_1

정은아·2022년 7월 25일
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값이 나오게 된 것입니다.

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글