程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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 variable

final variable 就是一個常量,一旦被初始化就弗成以被轉變。

class Test1 {
 final double PI = 3.14; //常量的稱號最好年夜寫

 public Test1(){
  PI = 3.14;
 }

  void test(){
   System.out.println("PI is: " + PI);
  }

 public static void main(String[] args){
  Test1 t = new Test1();
  t.test();
 }
}

輸入:

PI is: 3.14

(1)Blank final variable

在聲明時未初始化的 final variable 被稱作 blank final variable, blank final variable必需在 結構函數中被初始化,不然會拋出編譯毛病。

class Test1 {
 final double PI;

 Test1(){
 PI = 3.14; //在結構函數中初始化
 }

  void test(){
   System.out.println("PI is: " + PI);
  }

 public static void main(String[] args){
 Test1 t = new Test1();
 t.test();
 }
}

輸入:

PI is: 3.14

(2)Uninitialized static final variable

在聲明階段未初始化的 static final variable 只能在靜態代碼塊中被初始化

class Test1 {
 static final double PI;

 static {
 PI = 3.14;
 }

  void test(){
   System.out.println("PI is: " + PI);
  }

 public static void main(String[] args){
 Test1 t = new Test1();
 t.test();
 }
}

輸入:

PI is: 3.14

2. final method

final method 不克不及被籠罩。也就是說子類可以挪用父類的 fianl method,然則不克不及籠罩它。

class Test {
 static final double PI = 3.14;

  final void test(){
   System.out.println("PI is: " + PI);
  }
}

class Test1 extends Test{

 public static void main(String[] args){
 Test1 t = new Test1();
 t.test();
 }
}

輸入:

PI is: 3.14

3. final class

final calss 不克不及被繼續

final class Test1 {
 static final double PI = 3.14;

  final void test(){
   System.out.println("PI is: " + PI);
  }

 public static void main(String[] args){
 Test1 t = new Test1();
 t.test();
 }
}

輸入:

PI is: 3.14

PS:java.lang.String類為何設計成 final 的?
起首,先得清晰 final 這個症結字。
final的湧現就是為了為了不想轉變,而不想轉變的來由有兩點:設計或許效力。final 潤飾的類是不被能繼續的,所以 final 潤飾的類是不克不及被改動的。
懂得了這一點,我們再看看成績:
(1)從設計上講,
A、確保它們不會在子類中轉變語義。String類是final類,這意味著不許可任何人界說String的子類。換言之,假如有一個String的援用,它援用的必定是一個String對象,而弗成能是其他類的對象。
B、String 一旦被創立是不克不及被修正的,由於 java 設計者將 String 為可以同享的,上面這段是源碼中的正文:
(2)從效力上講:
A、設計成final,JVM才不消對相干辦法在虛函數表中查詢,而直接定位到String類的相干辦法上,進步了履行效力。
B、Java設計者以為同享帶來的效力更高。
總而言之,就是要包管 java.lang.String 援用援用的對象必定是 java.lang.String的對象,而不是援用它的子孫類,如許能力包管它的效力和平安。

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