前の記事の補足、Stringタイプの比較について
String s 1=「こんにちは」;
String s 2=「中国」
String s3 = s1+s2;
String s 4=「こんにちは中国」;
system.out.println(s1==s2);//この2つのアドレスはコンパイル時に割り当てられるのでtrueを印刷します.
system.out.println(s3==s4);//falseを印刷します.実行時に割り当てられたアドレスなので、静的定数プールにはありません.
system.out.println(s1+s2==s4);//trueを印刷します.s 1,s 2,s 4はコンパイル時に静的アドレスプールにアドレスを割り当てているからです.
//("=="はメモリアドレスが同じかどうかを比較)
String s 2=「中国」
String s3 = s1+s2;
String s 4=「こんにちは中国」;
system.out.println(s1==s2);//この2つのアドレスはコンパイル時に割り当てられるのでtrueを印刷します.
system.out.println(s3==s4);//falseを印刷します.実行時に割り当てられたアドレスなので、静的定数プールにはありません.
system.out.println(s1+s2==s4);//trueを印刷します.s 1,s 2,s 4はコンパイル時に静的アドレスプールにアドレスを割り当てているからです.
//("=="はメモリアドレスが同じかどうかを比較)