日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

云漫圈 | 腾讯面试,我竟然输给了final关键字

發布時間:2024/9/27 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 云漫圈 | 腾讯面试,我竟然输给了final关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

戳藍字“CSDN云計算”關注我們哦!


作者:喬戈里

來源:程序員喬戈里


騰訊面試現場

——————


final 在 Java 中是一個保留的關鍵字,可以聲明變量、方法、類。


什么是final變量 / 類 / 方法?


任何變量前被 final 修飾就是 final 變量,定義的類前被 final 修飾就是 final 類,任何方法前被 final 修飾就是final方法。

當用 final 修飾一個類時,表明這個類不能被繼承。你看看到圖中箭頭指向的地方,那句英文翻譯過來就是不能繼承 Cat 類。


如果把 final 關鍵字去掉,就可以了。你看這樣就不會報錯了!


下面這段話摘自《Java編程思想》第四版第143頁:

“使用 final 方法的原因有兩個。第一個原因是把方法鎖定,以防任何繼承類修改它的含義;第二個原因是效率。在早期的Java實現版本中,會將final方法轉為內嵌調用。但是如果方法過于龐大,可能看不到內嵌調用帶來的任何性能提升。在最近的 Java 版本中,不需要使用 final 方法進行這些優化了。“


變量被 final 修飾就是就是 final 變量,那么問題來了,final 變量和普通變量到底有啥區別?

public?class?Main {
? ?public?static?void?main(String[] args) {
? ? ? ?String?a =?"xiaomeng2";
? ? ? ?final?String?b =?"xiaomeng";
? ? ? ?String?d =?"xiaomeng";
? ? ? ?String?c = b +?2;
? ? ? ?String?e = d +?2;
? ? ? ?System.out.println((a == c));
? ? ? ?System.out.println((a == e));
? ?}
}


  • 變量a指的是字符串常量池中的 xiaomeng2;

  • 變量 b 是 final 修飾的,變量? b 的值在編譯時候就已經確定了它的確定值,換句話說就是提前知道了變量 b 的內容到底是個啥,相當于一個編譯期常量;

  • 變量 c 是 b + 2得到的,由于 b 是一個常量,所以在使用 b 的時候直接相當于使用 b 的原始值(xiaomeng)來進行計算,所以 c 生成的也是一個常量,a 是常量,c 也是常量,都是 xiaomeng2 而 Java 中常量池中只生成唯一的一個?xiaomeng2 字符串,所以 a 和 c 是相等的!

  • d 是指向常量池中 xiaomeng,但由于 d 不是 final 修飾,也就是說在使用 d 的時候不會提前知道 d 的值是什么,所以在計算 e 的時候就不一樣了,e的話由于使用的是 d 的引用計算,變量d的訪問卻需要在運行時通過鏈接來進行,所以這種計算會在堆上生成 xiaomeng2 ,所以最終 e 指向的是堆上的?xiaomeng2 , 所以 a 和 e 不相等。


  • final方法比非final快一些

  • final關鍵字提高了性能。JVM和Java應用都會緩存final變量。

  • final變量可以安全的在多線程環境下進行共享,而不需要額外的同步開銷。

  • 使用final關鍵字,JVM會對方法、變量及類進行優化。


表情包出自:微博@不覺曉曉

PS:本故事純屬虛構

—————END—————

1.微信群:

添加小編微信:color_ld,備注“進群+姓名+公司職位”即可,加入【云計算學習交流群】,和志同道合的朋友們共同打卡學習!


2.征稿:

投稿郵箱:liudan@csdn.net;微信號:color_ld。請備注投稿+姓名+公司職位。



推薦閱讀

  • 官宣!張小龍史上最長演講 4小時3萬字完整版回應微信的一切

  • Spark+Alluxio性能調優十大技巧

  • 有問有答 | 容器精華問答,如何玩轉容器服務?

  • Java 12 要來了!

  • “微信之父”張小龍:我沒去過龍泉寺!

  • 代碼“大換血”,以太坊能耗將減少99%背后的故事

  • 從云計算到AI:NetApp的數據網絡轉型之道



點擊“閱讀原文”,打開 CSDN App 閱讀更貼心!

喜歡就點擊“好看”吧!

總結

以上是生活随笔為你收集整理的云漫圈 | 腾讯面试,我竟然输给了final关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。