国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - 舉例講解Java中final關(guān)鍵字的用法

舉例講解Java中final關(guān)鍵字的用法

2020-05-17 12:29腳本之家 JAVA教程

Java中的final關(guān)鍵字可以被用來修飾變量、方法和類等,意味著終結(jié)、不可改變,下面我們就來舉例講解Java中final關(guān)鍵字的用法:

1. final variable

final variable 就是一個常量,一旦被初始化就不可以被改變。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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();
 }
}

輸出:

?
1
PI is: 3.14

(1)Blank final variable

在聲明時未初始化的 final variable 被稱作 blank final variable, blank final variable必須在 構(gòu)造函數(shù)中被初始化,否則會拋出編譯錯誤。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Test1 {
 final double PI;
 
 Test1(){
 PI = 3.14; //在構(gòu)造函數(shù)中初始化
 }
 
  void test(){
   System.out.println("PI is: " + PI);
  }
 
 public static void main(String[] args){
 Test1 t = new Test1();
 t.test();
 }
}

輸出:

?
1
PI is: 3.14

(2)Uninitialized static final variable

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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();
 }
}

輸出:

?
1
PI is: 3.14

2. final method

final method 不能被覆蓋。也就是說子類可以調(diào)用父類的 fianl method,但是不能覆蓋它。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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();
 }
}

輸出:

?
1
PI is: 3.14

3. final class

final calss 不能被繼承

?
1
2
3
4
5
6
7
8
9
10
11
12
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();
 }
}

輸出:

?
1
PI is: 3.14

PS:java.lang.String類為什么設(shè)計成 final 的?
首先,先得清楚 final 這個關(guān)鍵字。
final的出現(xiàn)就是為了為了不想改變,而不想改變的理由有兩點:設(shè)計或者效率。final 修飾的類是不被能繼承的,所以 final 修飾的類是不能被篡改的。
了解了這一點,我們再看看問題:
(1)從設(shè)計上講,
A、確保它們不會在子類中改變語義。String類是final類,這意味著不允許任何人定義String的子類。換言之,如果有一個String的引用,它引用的一定是一個String對象,而不可能是其他類的對象。
B、String 一旦被創(chuàng)建是不能被修改的,因為 java 設(shè)計者將 String 為可以共享的,下面這段是源碼中的注釋:
(2)從效率上講:
A、設(shè)計成final,JVM才不用對相關(guān)方法在虛函數(shù)表中查詢,而直接定位到String類的相關(guān)方法上,提高了執(zhí)行效率。
B、Java設(shè)計者認(rèn)為共享帶來的效率更高。
總而言之,就是要保證 java.lang.String 引用引用的對象一定是 java.lang.String的對象,而不是引用它的子孫類,這樣才能保證它的效率和安全。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜精品网站 | 精品视频在线免费观看 | 羞羞视频免费网站 | 夜夜操av| 久久av综合 | 最新中文字幕 | 一二三四区视频在线观看 | 国产精品亚洲精品 | 视频一区免费观看 | 毛片网站在线观看 | 精品在线一区二区三区 | 欧美日韩专区 | 午夜在线观看视频 | 亚洲国产精品成人 | 精品国产乱码久久久久久丨区2区 | 久操视频在线 | 精品久久久久久久人人人人传媒 | 黄色av大全 | 精品国产乱码久久久久久久软件 | 国产午夜一区二区三区 | 午夜影院免费看 | 精品www | 久久av资源 | 狠狠操狠狠干 | 黄色片网站在线免费观看 | 国产精品网站在线观看 | 91免费观看 | 亚洲成人久久久 | 精品国产一区三区 | 中文亚洲字幕 | 黄色一级视频免费看 | 国产精品成人国产乱一区 | 亚洲午夜精品一区二区三区 | 亚洲精品专区 | 青青国产在线 | 伊人欧美在线 | 中文字幕一区二区三区日韩精品 | 亚洲精品久久久久久一区二区 | 天天精品| 国产精品国产三级国产aⅴ中文 | 99re6在线视频精品免费 |