class StringTesting {
public static void main(String args[])
{
String str = "abcd";
String str1 = new String("abcd");
String str2 = str.substring(0,2);
String str3 = str.substring(0,2);
String str4 = str.substring(0,str.length());
String str5 = str1.substring(0,2);
String str6 = str1.substring(0,2);
String str7 = str1.substring(0,str1.length());
System.out.println(str2 == str3);
System.out.println(str == str4);
System.out.println(str5 == str6);
System.out.println(str1 == str7);
}
}
Java 1.6.0_27 で取得した出力は次のとおりです。
false
true
false
true
誰かが出力を説明してください。Javaは、ヒープに格納された文字列と文字列「共通プール」(インターン可能)に格納された文字列を区別することを知っています。内部的には、それらの表現はどのように異なりますか。部分文字列アルゴリズムをどのように変更しますか。本/記事/ブログなどを適宜引用してください。