程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java中final症結字的用法總結

Java中final症結字的用法總結

編輯:關於JAVA

Java中final症結字的用法總結。本站提示廣大學習愛好者:(Java中final症結字的用法總結)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中final症結字的用法總結正文


1、final潤飾類
被final潤飾的類不克不及被繼續,是以final類的成員辦法也不克不及被覆寫,被final症結字潤飾的類沒有子類,是以類的完成細節也沒法轉變,沒法被擴大。final類中的一切成員辦法都邑被隱式地指定為final辦法,final類中的成員變量可以依據須要設為final。

2、final潤飾辦法
一個類中的辦法假如被final症結字潤飾,則其子類沒法覆寫該辦法,只能被子類繼續。假如父類中的某個辦法不想被其子類所覆寫,可將該辦法界說為final類型,別的,父類中的公有辦法(即被private症結字潤飾的辦法)也不許可被子類所覆寫,所以父類中被private症結字潤飾的辦法默許為final類型,被final症結字潤飾的辦法有以下特質:

該辦法被鎖定,可以避免任何繼續類修正它的意義和完成;
高效。編譯器在碰到挪用final辦法時刻會轉入內嵌機制,年夜年夜進步履行效力;
別的,應用final潤飾的靜態辦法在其所屬類的子類中不克不及被隱蔽(hide);

3、final潤飾變量
final這個症結字的寄義是“這是沒法轉變的”或許“終態的”;
那末為何要阻攔轉變呢?
java說話的創造者能夠因為兩個目標而阻攔轉變:
A.效力成績:
jdk中的某些類的某些辦法,是不許可被用戶籠罩的,設計者能夠以為,所用辦法曾經是最好的辦法,
 用戶擅自籠罩,或是因為忽視而籠罩,就會影響JVM或是體系的系能;
B.設計所需:
盡人皆知,有些情形必需應用final症結字,好比辦法中的匿名外部類的參數傳遞。
有人說final變量在賦值後就弗成變,
那末這個不變究竟指的是甚麼呢?
這個不變指的是援用,是地址,而所援用的對象的內容依然是可變的。
就是說,這個final變量永久指向某個對象,是一個常量指針,而不是指向常量的指針。
(1)被final症結字潤飾的根本數據類型,則其數值一旦在初始化以後便不克不及更改;
(2)假如是援用類型的變量,則在對其初始化以後便不克不及再讓其指向另外一個對象,但該援用所指向的對象的內容是可以產生變更的。緣由為:援用數據類型存儲的援用對象在堆內存中的地址,final潤飾援用類型以後,請求該援用指向的堆內存空間(或許說該援用存儲的堆內存地址)不克不及轉變。
當用final潤飾類的非靜態成員變量時,成員變量的初始化有兩種方法:
(3)在聲明時停止初始化
(4)在聲明變量時可以不停止初始化,該變量被稱為blank final,即final空白,然則要在這個變量地點的類的一切的結構辦法中對這個變量賦初值。
當用final潤飾類的靜態成員變量時,靜態成員變量的初始化方法也有兩種:
(5)在聲明時停止初始化
(6)在靜態初始化塊中停止初始化
當用final潤飾接口的靜態變量時,其初始化方法只要一種:
(7)在聲明時停止初始化
當用final潤飾部分成員變量時,只須要包管在應用之前被初始化賦值便可。
總之,被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));
 }
}

4、final潤飾參數
當辦法參數為final類型時,你可以讀取應用該參數,然則沒法轉變該參數的值。該變量在辦法挪用時被創立,同時初始化為對應實參值,在辦法體(body)履行停止前,其值不克不及轉變。用final症結字潤飾的根本數據類型的參數,其參數值沒法轉變,用final症結字潤飾的援用數據類型,沒法是該援用指向其他對象或再次賦值為null,但可使用該援用轉變援用對象的內容。final用於潤飾參數的目標並不是避免在挪用的辦法外部對參數的操作轉變辦法內部對應變量的值,只是避免在該辦法內對該參數停止從新賦值操作,影響該參數傳遞時的初始值。並且將辦法中的參數用final症結字潤飾其實不能避免從辦法內部所傳遞的參數的值的內容不被轉變。詳細可參考final潤飾援用數據類型的說明。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved