java為什麼說string為不可變字串

時間 2021-07-08 21:17:37

1樓:千鋒教育

string a = "xx";

string a = new string("xx");

是一樣的嗎?肯定不一樣,每一個string物件new出來後,jvm就會給他分配一個記憶體空間

a = "zz";

看起來像是給a賦值,改變了a

實際上這樣是讓a指向另一個記憶體空間

2樓:匿名使用者

簡單的理解就是 name 在記憶體中開了一個空間 age 也在記憶體中開了個空間 a = “name”時 是指標指向name a = “age”時 指標指向 age 而 name 還是存在記憶體中沒有銷燬

3樓:

string內容是不可變的,string a = "name";其中a是指向字串"name"的引用,a的值是可變的,但是"name"這個字串內容是不可以改變的,,,a="age";只是使a重新指向"age"這個字串.

4樓:玄冉希

只是重新建立了一個值age,並沒有改變,想要改變需要使用stringbuffer、stringbuilder

5樓:

不可變指的應該是指它的字元序列。你只是從新讓a指向了一個新的字串,並未改變"name"的字元序列。

6樓:

你的a也變了。。。a是物件的引用,是以個地址,要指向某個實體。

7樓:還是不用心

對於你的問題,string它是一個類,而類是要被例項化才能使用的,當你定義string a的時候,這時a是一個物件,並且將它初始化值。所以在記憶體上已經佔了一個空間了。而當你認為的去改變它的時候,它會在記憶體空間中重新開闢一個空間,列印出來的是新的空間上的值。

但是原來的空間並沒有消失,以前那個任然存在,只不過沒有輸出而已。但對於int 型別的值,它記憶體空間始終只有一個,你在修改的時候,它會覆蓋以前的值。所以,string為不可變字元。

不過stringbuffer 這個挺好用的。

8樓:超級

你改變的是指向,從name指向新的地址age

9樓:匿名使用者

你需要理解string中有一個pool(池),還有string a="name";其實是這樣的:string a=new string(“name”);上網查查詳細資料就能來理解了。

string:

是物件不是原始型別.

為不可變物件,一旦被建立,就不能修改它的值.

對於已經存在的string物件的修改都是重新建立一個新的物件,然後把新的值儲存進去.

string 是final類,即不能被繼承.

你應該是想要知道的是string、stringbuffer、stringbuilder之間的區別

10樓:少碧

可是你有沒有想過,前面的a跟後面的a地址都不一樣了,哪能說他有變呢?

11樓:匿名使用者

是變了啊 因為你把下面的值覆蓋了啊

12樓:七竹水木

那裡說了string為不可變字串啊

在java中為什麼要使用類圖,在java中為什麼要使用類圖

其實也不是一定要使用類圖的,使用類圖就是為了讓你清楚的理解類之間的關係,比如a類繼承了b類,同時又實現了c介面,等等這樣的關係用類圖來表示的話一目瞭然。使用類圖還有一個好處,就是在軟體工程中講的一個軟體開發的 詳細設計 階段,用類圖表示出系統的結構後好多工具支援自動生成 就是從類圖直接生成 的基本結...

為什麼運算子無法應用於「string」和「string」型別的運算元

改 if c a c b 為 if c a c b 注意加括號 string.isnullorempty uid string.isnullorempty pwd c 中判斷字串為空,或者是空字串,是這樣的 if uid 12345 pwd 12345 改為if uid 12345 pwd 1234...

為什麼說戀愛中的男女智商為零,為什麼說「戀愛中的女人智商基本為零」?

曦曦 有一句話叫做你哄一個女生她的智商就為零,你要惹她就智商爆棚。有時可見女生大多都是非常感性的,熱戀期的女生真的是有點瘋狂,沒有一點智商,在她的眼裡,除了能夠看到自己喜歡的人,誰也看不到。會為了給喜歡的人買他喜歡的東西,整整一個月吃饅頭醃菜對付。女生在戀愛裡不僅智商為零,還很傻。一 因為剛開始,男...