たな

たな

いろんなことを考えます。いろんなことに挑戦します。Javaのエンジニアです。

Javaの同じ文字列が同じ参照をもつこと

Javaの同じ文字列が同じ参照をもつこと

仕組み自体は知っていたのだけれど、それをinternメソッドというもので、試せることは知らなかった。

まとめ

Javaでは、aaaのように文字列を記述した場合は、同一のオブジェクトを参照する。
それはJavaVMがやってくれている。
明示的にするには、internメソッドを用いる。

実際にやってみる

public class Sample{
    public static void main(String [] args){
        
        String a = "a";
        String aa = "aa";
        String aaa = "aaa";

        //文字列(値)としては同じになるが、オブジェクト(それへのポインタ)は異なるものを比較する
        System.out.println(aaa.equals(a + aa));         //値の比較→true
        System.out.println(aaa == (aa + a));            //ポインタの比較→false
        System.out.println(aaa == (aa + a).intern());   //internメソッドを使用する→true
    }
}

上から順に、
値の比較、ポインタの比較、internメソッドを使ったポインタの比較になっている。
internメソッドを使うことで、「既に同じ文字列があったらそれ参照してなー」ってことだろう。
へーってなった。

おわり。。

【スポンサーリンク】