如果我們有這些語句:不可變的字符串類?
String S1 = "AAA";
S1 = "aaa";
這意味着分配給特定的財產原值has't改變(因爲String類是不可變的和S1是實習對象)。
現在...... 如果我們有下面的語句:
String S1 = new String("AAA");
S1="aaa";
這意味着,在串級分配給特定屬性的原始值已改變(因爲String類是不可變的和S1是。不是實習對象)
是我的理解對不對?
如果我們有這些語句:不可變的字符串類?
String S1 = "AAA";
S1 = "aaa";
這意味着分配給特定的財產原值has't改變(因爲String類是不可變的和S1是實習對象)。
現在...... 如果我們有下面的語句:
String S1 = new String("AAA");
S1="aaa";
這意味着,在串級分配給特定屬性的原始值已改變(因爲String類是不可變的和S1是。不是實習對象)
是我的理解對不對?
不,String
對象在任何情況下都是不可變的。當您撥打new String("foo")
時,這隻會創建另一個包含傳遞內容的字符串。所以不要這樣做。
編輯:
在第二種情況下S1
不被禁止,但這並不取消它的不變性。因此String
賦值始終不會更改左對象,而只是重寫引用。
對不起... 請再次閱讀帖子... – user1735329
現在哪一個會修改原始值。 – user1735329
_only_改變的是'S1'指向一個不同的'String'對象。你沒有也不能修改'String'本身。 –
字符串是不可變的。 這意味着字符串的一個實例不能改變。 您正在創建新變量來引用不同的但仍然不可變的String實例。
它允許改變到串岔開在改變列表中的排序方法
String s = new String();
一個空字符串對象(「」)被創建的原始字符串。變量s指向那個對象。
添加到其他的答案,
字符串構造函數,String對象是設計上的瑕疵(這是沒有意義的兩倍創建一個不變的情況下),並已被棄用。不要使用它。
易於嘗試,看到S1在任何情況下都不會改變。 – madth3