なぜ文字列は不変であるように設計さ

私は、文字列プールへのニーズのための主な理由だと思います

文字列プールエリアは、特別な記憶領域法(方法エリア)です。文字列と文字列がプール内に作成されている場合、文字列への参照ではなく、文字列を再作成するので、変数に直ちに戻され、その後、変数への参照が返されます。文字列は不変でない場合、(例:string2の)参照を変更すると、別の参照(例:文字列1)の文字列になります古いデータを持っています。

多くの人々は、スレッドセーフなマルチスレッド、私が思うに、これは不可解であるときので、インターネットがあると言います

public class Test {
    private final String TAG = "Test";
    private String value = "hello";

    public void test1() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                value = "test1";
                Log.e(TAG," value=" + value);
            }
        });
    }

    public void test2() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                value = "test2";
                Log.e(TAG," value=" + value);
            }
        });
    }
}

上記のコードでは、TEST1は、TEST2が2つのスレッドを実行して、この値は、不確定の時間の値は、文字列は不変であるか否か、あります

 

 

 

おすすめ

転載: blog.csdn.net/dxh040431104/article/details/92838962