原文:在Java中String類為什么要設計成final?String真的不可變嗎?其他基本類型的包裝類也是不可變的嗎?

最近突然被問到String為什么被設計為不可變,當時有點懵,這個問題一直像bug一樣存在,竟然沒有發現,沒有思考到,在此總結一下。 .String的不可變String類被final修飾,是不可繼承和修改的。當一個String變量被第二次賦值時,不是在原有內存地址上修改數據,而是在內存中重新開辟一塊內存地址,並指向新地址。 String類為什么要被設計為是final的 .不可變性支持線程安全。 .不 ...

2018-07-26 10:24 0 935 推薦指數:

查看詳情

JavaString為什么要設計不可變的?

一、不可變不可變對象 Normally,you create an object and allow its contents to be changed later.However ,occasionally it is desirable to create an object ...

Fri Oct 18 01:08:00 CST 2019 0 696
javaString為什么不可變

在面試中經常遇到這樣的問題:1、什么是不可變對象。不可變對象有什么好處。在什么情景下使用它,或者更具體一點,javaString為什么要設置不可變類型? 1、不可變對象,顧名思義就是創建后的對象不可以改變,典型的例子有javaString類型。 2、相比於可變對象,不可變對象 ...

Tue Nov 04 22:59:00 CST 2014 1 16871
為什么JavaString不可變的?

StringJava的一個不可變(immutable class)。 簡單來說,不可變就是實例在被創建之后不可修改。 在《Effective Java》 Item 15 中提到了為了使成為不可變,需要遵循的五條規則: 不要提供任何會修改對象狀態的方法。 保證 ...

Wed Sep 13 22:41:00 CST 2017 0 1516
聊聊JAVA String為什么不可變

前言 "我的風格比較偏傳統和經典" 小明說,"我們在打扮自己的問題上還是蠻冒險的...我覺得當你是只狗的時候,穿什么都hold的住!" 哈哈哈,脫離單身狗快兩年了,生活除了愛情,不變的還有對代碼的摯愛,總之始於熱愛,忠於愛情,陷於代碼。 前半年規划人生,后半年開始規划,最近發生的一些 ...

Tue Sep 19 17:09:00 CST 2017 17 1596
String為什么是不可變

String為啥是final的? 我們找到string的jdk源碼 1.看到Stringfinal修飾。這里你就要說出被final修飾的不能被繼承,方法不能被重寫,變量不能被修改。 2.看到final修飾的char[]代表了被存儲的數據不可 ...

Wed Feb 05 21:18:00 CST 2020 1 1335
為什么String不可變的?

為什么String不可變的? # String 什么是不可變對象   當滿足以下條件時,對象才是不可變的: 對象創建以后其狀態就不能修改。 對象的所有域都是final類型的。 對象是正確創建的(在對象的創建期間,this引用沒有逸出)。   這是 ...

Tue Jul 25 02:32:00 CST 2017 0 3285
為什么String設計不可變的?

1. 字符串常量池的需要 字符串常量池(String pool, String intern pool, String保留池) 是Java堆內存中一個特殊的存儲區域, 當創建一個String對象時,假如此字符串值已經存在於常量池中,則不會創建一個新的對象,而是引用已經存在的對象。假若字符串對象 ...

Tue Mar 26 00:09:00 CST 2019 0 732
String不可變真的是因為 final 嗎?

🎓 盡人事,聽天命。博主東南大學碩士在讀,熱愛健身和籃球,樂於分享技術相關的所見所得,關注公眾號 @ 飛天小牛肉,第一時間獲取文章更新,成長的路上我們一起進步 🎁 本文已收錄於 「CS- ...

Thu Apr 08 00:18:00 CST 2021 2 1639
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM