国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

String 的不可變性

sydMobile / 3455人閱讀

摘要:的不變性,如下圖所示,當你改變了的之后指向了一個新的對象原對象不做改變。但其引用的數組是可變的。所以的不可變性的關鍵并不是的作用。同時編寫者為了避免因為的不可變性導致占用大量空間,為此設計了字符串常量池

在貓眼的面試中被面試官問到為什么String的字符串是不變的。當時我的回答是因為String類是用final關鍵字修飾的,當被問到為什么用 final修飾就是不可變的時候我發現自己說的并沒有什么道理。之后自己專門查了一下為什么。

String的不變性,如下圖所示,當你改變了s的之后s指向了一個新的對象原對象不做改變。

看一下源碼是怎么實現的:

我們看到String被定義為final,所以說String是不可繼承的,接著我們看到String的內部實現是一個char數組,并且定義為final。這時有些人可能認為final修飾的字段創建以后就不可改變,所以就完了,但其實不是這樣的。

因為雖然value是不可變,也只是value這個引用地址不可變。但其引用的Array數組是可變的。

final int[] value={1,2,3};
value[2]=100;  //這時候數組里已經是{1,2,100}

所以根本上String是不可變的原因是sun工程師很好的封裝了value數組,在其中所有的方法中不去更改value數組,并把它定義為private,并且把整個String設成final禁止繼承,避免被其他人繼承后破壞。所以String的不可變性的關鍵并不是final的作用。

同時Java編寫者為了避免因為String的不可變性導致占用大量空間,為此設計了字符串常量池

String one = "someString";
String two = "someString";

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73853.html

相關文章

  • [譯]JavaScript中不可變性(Immutability)

    摘要:整個這個雷區面板都是由的和組成的,最后由的方法對其進行不可變化處理剩下的主要邏輯部分就是掃雷了,傳入掃雷游戲對象一個不可變結構做為第一個參數,以及要掃的那個雷區塊對象,最后返回新的掃雷游戲實例。 不可變性(Immutability)是函數式編程的核心原則,在面向對象編程里也有大量應用。在這篇文章里,我會給大家秀一下到底什么是不可變性(Immutability)、她為什么還這么屌、以及在...

    clasnake 評論0 收藏0
  • JavaString不可變性

    摘要:但是通過構造函數的并不是。通過構造函數創建的變量在機制上與其他對象一致,都是在上創建新的對象,然后把引用賦給變量。此外,的方法和等方法實現均是調用了構造函數創建了新的對象,所以他們返回的也都是存在于上的新對象。 String經常在一個語言中或多或少都有些特殊地位。在Java亦不例外。今天先來討論,String是不可變的。 String是引用類型,String變量儲存一個地址,地址指向內...

    atinosun 評論0 收藏0
  • 字符串變性

    摘要:不少語言對字符串的實現,都采用了限定不變性。字符串的不可變性有不少好處,但是如果程序員忘了這一點也會導致問題。所以字符串不可變就是存儲的代價。另一個場景是字符串可以用于哈希表的鍵,而鍵是不可以改變值的。 像是js,以及c#等一系列的語言,推出任何一個特征都要和c比一比,你知道的:)。 string的不可變性也是一樣,你看: C的string是可以改變的。 你可以 char str...

    zhaochunqi 評論0 收藏0
  • 記一次愚蠢經歷--String不可變性

    摘要:文本已收錄至我的倉庫,歡迎記錄一次在寫代碼時愚蠢的操作,本文涉及到的知識點不可變性一交代背景我這邊有一個系統,提供一個接口去發送短信。 前言 只有光頭才能變強。文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y 記錄一次在寫代碼時愚蠢的操作,本文涉及到的知識點:String不可變性 一、交代背景 我這邊有一個系統,...

    woshicixide 評論0 收藏0
  • 翻譯連載 | JavaScript輕量級函數式編程-第6章:值不可變性 |《你不知道JS》姊妹篇

    摘要:但在開始之前應該心中有數值的不可變性并不是說我們不能在程序編寫時不改變某個值。這些都是對值的不可變這個概念的誤解。程序的其他部分不會影響的賦值。 原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 關于譯者:這是一個流淌著滬江血液的純粹工程:認真,是 HTML 最堅實的梁柱;分享,是 CSS 里最閃...

    ysl_unh 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<