最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jdk中String類設計成final的原由

 更新時間:2013年01月03日 11:40:31   作者:  
為什么jdk中把 String 類設計成final,主要是為了“ 效率 ”和“安全性”的緣故,若 String 允許被繼承, 由于它的高度被使用率, 可能會降低程序的性能,所以String被定義成final,需要了解的朋友可以參考下
最佳答案
主要是為了 “ 效率 ” 和 “ 安全性 ” 的緣故。 若 String 允許被繼承, 由于它的高度被使用率, 可能會降低程序的性能,所以 String 被定義成 final。
其它答案一
String 和其他基本類型不同 , 他是個對象類型. 既然是對象類型 , 如果是在靜態(tài)方法下是必須調用靜態(tài)方法或值的 , 如果是非靜態(tài)的方法 , 就必須要實例化.
main 函數是個 static 的. 所以 String 要能像其他的基本類型一樣直接被調用. 這也是為什么在 main 函數下使用 String 類型不會報告錯誤的原因..
一下就解釋了兩個心里的疑問..
以前一直覺得奇怪 , 為什么 String 是對象類型在 main 函數下卻是不需要實例化的. 再次佩服 java 設計人員想得真周到.
其它答案二
當定義 String 類型的靜態(tài)字段(也成類字段),可以用靜態(tài)變量(非 final)代替常量(final)加快程序速度。 反之,對于原始數據類型,例如 int,也成立。
例如,你可能創(chuàng)建一個如下的 String 對象:
復制代碼 代碼如下:

private static final String x = "example";

對于這個靜態(tài)常量(由 final 關鍵字標識),你使用常量的每個時候都會創(chuàng)建一個臨時的 String 對象。 在字節(jié)代碼中,編譯器去掉 ”x”,代替它的是字符串 “example”, 以致每次引用 ”x” 時 VM 都會進行一次哈希表查詢。
相比之下,度于靜態(tài)變量 ( 非 final 關鍵字 ),字符串只創(chuàng)建一次。 僅當初始化 “x” 時, VM 才進行哈希表查詢。
還有另一個解釋:
帶有 final 修飾符的類是不可派生的。 在 java 核心 API 中,有許多應用 final 的例子,例如 java.lang.String。 為 String 類指定 final 防止了人們覆蓋 length() 方法。
另外,如果指定一個類為 final,則該類所有的方法都是 final。 java 編譯器會尋找機會內聯(inline)所有的 final 方法(這和具體的編譯器實現有關)。 此舉能夠使性能平均提高 50%。
示例:
復制代碼 代碼如下:

public class Test {
public static void main(String[] args) {
//
}
}

如果 String 不是 final 那么就可以繼承
復制代碼 代碼如下:

public class String2 extends String{
//..
//...
}

那我們的 main 也就可以寫成
復制代碼 代碼如下:

public class Test {
public static void main(String2[] args) { // 注意此處
//
}
}

另外補充一點
作用就是 final的類不能被繼承,不能讓別人繼承有什么好處?
意義就在于,安全性,如此這般:
java 自出生那天起就是“為人民服務”,這也就是為什么java做不了病毒,也不一定非得是病毒,反正總之就是為了安全, 人家java的開發(fā)者目的就是不想讓 java干這類危險的事兒,java并不是操作系統本地語言, 換句話說java必須借助操作系統本身的力量才能做事,JDK中提供的好多核心類比如 String,這類的類的內部好多方法的實現都不是java編程語言本身編寫的, 好多方法都是調用的操作系統本地的API,這就是著名的“本地方法調用”,也只有這樣才能做事,這種類是非常底層的, 和操作系統交流頻繁的,那么如果這種類可以被繼承的話,如果我們再把它的方法重寫了,往操作系統內部寫入一段具有惡意攻擊性質的代碼什么的, 這不就成了核心病毒了么?
上面所述是最重要的,另外一個方面,上面2位老兄說的也都很對, 就是不希望別人改,這個類就像一個工具一樣,類的提供者給我們提供了, 就希望我們直接用就完了,不想讓我們隨便能改,其實說白了還是安全性, 如果隨便能改了,那么java編寫的程序肯定就很不穩(wěn)定,你可以保證自己不亂改, 但是將來一個項目好多人來做,管不了別人,再說有時候萬一疏忽了呢?他也不是估計的, 所以這個安全性是很重要的,java和C++相比,優(yōu)點之一就包括這一點;
原因絕對不只有這么多,因為如果這些個核心的類都能被隨便操作的話,那是很恐怖的,會出現好多好多未知的錯誤,莫名其妙的錯誤….

相關文章

  • Spring mvc Json處理實現流程代碼實例

    Spring mvc Json處理實現流程代碼實例

    這篇文章主要介紹了Spring mvc Json處理實現流程代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Java通過百度地圖API獲取定位(普通IP定位)的方法教程

    Java通過百度地圖API獲取定位(普通IP定位)的方法教程

    這篇文章主要介紹了Java通過百度地圖API獲取定位的方法教程,首先說明了實現這個功能的需求和初衷,然后詳細描述了利用百度地圖API實現這個功能的步驟,包括在百度地圖開放平臺的準備工作、學習官網API文檔、修改API的AK配置、Java代碼獲取定位等,需要的朋友可以參考下
    2024-11-11
  • 精辟全面且細致的java運算符教程詳解

    精辟全面且細致的java運算符教程詳解

    這篇文章主要介紹了java運算符教程,內容非常的精辟全面且細致到每一個小注意點,正在學java的同學快快建議收藏閱讀吧,希望能夠有所幫助,祝多多進步早日升職加薪
    2021-10-10
  • Spring?@Bean?修飾方法時注入參數的操作方法

    Spring?@Bean?修飾方法時注入參數的操作方法

    對于 Spring 而言,IOC 容器中的 Bean 對象的創(chuàng)建和使用是一大重點,Spring 也為我們提供了注解方式創(chuàng)建 bean 對象:使用 @Bean,這篇文章主要介紹了Spring?@Bean?修飾方法時如何注入參數,需要的朋友可以參考下
    2023-10-10
  • linux部署出現java文件操作報錯:java.io.FileNotFoundException解決辦法

    linux部署出現java文件操作報錯:java.io.FileNotFoundException解決辦法

    這篇文章主要g介紹了linux部署出現java文件操作報錯:java.io.FileNotFoundException解決的相關資料,這個錯誤通常表示你的Spring Boot應用程序無法找到指定的文本文件,需要的朋友可以參考下
    2023-12-12
  • java 如何使用org.w3c.dom操作XML文件

    java 如何使用org.w3c.dom操作XML文件

    這篇文章主要介紹了java 如何使用org.w3c.dom操作XML文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringCloud Ribbon負載均衡實例解析

    SpringCloud Ribbon負載均衡實例解析

    這篇文章主要介紹了SpringCloud Ribbon負載均衡實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • MybatisPlus中的多表條件排序查詢

    MybatisPlus中的多表條件排序查詢

    這篇文章主要介紹了MybatisPlus中的多表條件排序查詢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • java加解密RSA使用方法代碼示例

    java加解密RSA使用方法代碼示例

    這篇文章主要介紹了java加解密RSA使用方法代碼示例,還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • java.net.SocketException: Connection reset 解決方法

    java.net.SocketException: Connection reset 解決方法

    最近糾結致死的一個java報錯java.net.SocketException: Connection reset 終于得到解決
    2013-03-03

最新評論

莱芜市| 龙江县| 庆城县| 河北区| 定日县| 延长县| 梅州市| 连城县| 乃东县| 西平县| 东丽区| 长岛县| 同心县| 博白县| 西平县| 万源市| 大化| 潍坊市| 日喀则市| 柘荣县| 辰溪县| 亳州市| 寿光市| 汨罗市| 普洱| 永新县| 阳春市| 文昌市| 玉树县| 永泰县| 蚌埠市| 金湖县| 逊克县| 呼玛县| 寿阳县| 辽阳市| 青阳县| 宜兴市| 陵川县| 斗六市| 原平市|