String型の省メモリプログラミング
String型はnew String()しているコードをよく見ます。
省メモリプログラミングを考えるならば、インスタンス化するのではなく、String str = ""とすべきです。

以下、サンプルです。

package purejava;

public class Sample {

    public static void main(String[] args) {
        String value1 = "a";
        String value2 = "a";
        String value3 = new String("a");
        String value4 = new String("a");
        System.out.println(value1 == value2);
        System.out.println(value1 == value3);
        System.out.println(value3 == value4);
    }
}
実行結果は以下になります。

true
false
false
false
参照型の==比較はメモリ番地を比較しています。上記の結果をみると、value3とvalue4は同じ文字列であるにもかかわらず異なるメモリ番地を使用しているのがわかります。
逆にvalue1とvalue2は同じ番地を参照しているのがわかります。

Back to top

Information