前言:
果不其然,在上次的面試中面試官又問了這樣的問題:請你說下final關鍵字的具體含義,並詳細講解它的作用以及它與static的區別。為了讓正在面試中的各位重視這個問題,特意將答案整理出來以供大家參考。
1、final關鍵字的意思
final表面意思是不可更改的,恆量的意思;類似C語言中的const關鍵字,指的是無法改變的量,這與靜態標量static是有差別的,靜態變數指的是只有一份儲存空間,值是可以改變的。使用final一定原因是出於軟體設計的角度,因為別人看到final這個關鍵字就知道是什麼意思,達到心領神會的效果,但也正是由於這種"語義"的存在,在程式設計中要謹慎使用,以免誤用。
在Java中final修飾的是常數,而且變數名稱要大寫;
Math類別:public static final double E = 2.7182818284590452354;public static final double PI = 3.1415926535846. .....java源碼中好多變數都用final修飾
public class Test01{ final int x1= 10000; final int x2; final int x3; { x2 = 20000; } Public exe3(){ this.x3 = 3000; } }如果final修飾的變數是物件類型,那麼不可更改指的是該變數不可以再指向別的對象,但是當物件的值時可以更改的,例如:
final Operate operate = new Operate() ;// operate有一个普通变量i初始化为10operate.i = 11; operate.i = 12; System.out.println(operate.i); //输出12上述是自定义类,即便是数组,List等集合类型,所保存的值也是可以更改的。3、final和static的區別static作用於成員變數用來表示只保存一份副本,而final的作用是用來保證變數不可變,看一下網路上的一個例子:
public class Test { public static void main(String[] args) { MyClass myClass1 = new MyClass(); MyClass myClass2 = new MyClass(); System.out.println(myClass1.i); System.out.println(myClass1.j); System.out.println(myClass2.i); System.out.println(myClass2.j); } } class MyClass { public final double i = Math.random(); public static double j = Math.random(); } //运行结果,两次打印,j的值都是一样的,j是static类型的属于类,因此两次值相同。i不是static的因此属于对象,但是i的值是不可变的。(學習影片分享:
java影片教學)
4、其他final相關的知識public class Test { public static void main(String[] args) { String a = "hello2"; final String b = "hello"; String d = "hello"; String c = b + 2; String e = d + 2; System.out.println((a == c)); System.out.println((a == e)); } } //final类型,在编译阶段能够确定值。 //非final类型在编译阶段确定不了 输出: true false public class Test { public static void main(String[] args) { String a = "hello2"; final String b = getHello(); String c = b + 2; System.out.println((a == c)); } public static String getHello() { return "hello"; } } //即便是final类型,编译阶段也确定不了值。输出false(2)注意不要將final與finally、finalize()等搞混。 (3)將類別、方法、變數宣告為final能夠提高效能,這樣JVM就有機會進行估計,然後最佳化。 (4)介面中的變數都是public static final 的。 相關推薦:原文連結:
http://www.cnblogs.com/liun1994/p/6691094.html
原文作者:隨風浪子90以上是面試官:請詳細說明final關鍵字的作用,以及它與static的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!
陳述
本文轉載於:博客园。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
刺客信條陰影:貝殼謎語解決方案
2 週前ByDDD
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

WebStorm Mac版
好用的JavaScript開發工具