国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Java中的Final關鍵字解析

開發 后端
這篇文章主要講解Java中final關鍵字的使用,對于final大家從字面意思就能看出來,主要是“最終的不可改變的意思”。可以修飾類、方法和變量。先給出這篇文章的大致脈絡。

[[336871]]

這篇文章主要講解Java中final關鍵字的使用,對于final大家從字面意思就能看出來,主要是“最終的不可改變的意思”。可以修飾類、方法和變量。先給出這篇文章的大致脈絡。

首先,先給出final關鍵字的三種使用場景,也就是修飾類,方法和變量

然后,深入分析final關鍵字主要注意的幾個問題

最后,總結一下final關鍵字

OK,開始今天的文章

一、final關鍵字的基本使用

1、認識final關鍵字

final可以修飾類、方法、變量。那么分別是什么作用呢?

(1)修飾類:表示類不可被繼承

(2)修飾方法:表示方法不可被覆蓋

(3)修飾變量:表示變量一旦被賦值就不可以更改它的值。java中規定final修飾成員變量必須由程序員顯示指定變量的值。

2、final關鍵字修飾類

final關鍵字修飾類表示這個類是不可被繼承的,如何去驗證呢?

3、final關鍵字修飾方法

final修飾的方法不能被重寫。但是可以重載。下面給出了一個代碼例子。主要注意的是:父類中private的方法,在子類中不能訪問該方法,但是子類與父類private方法相同的方法名、形參列表和返回值的方法,不屬于方法重寫,只是定義了一個新的方法。

  1. public class FinalClass{ 
  2.      public final void test(){} 
  3.      public final void test(int i){} 

4、final關鍵字修飾變量

final關鍵字修飾變量,是比較麻煩的。但是我們只需要對其進行一個分類介紹就能理解清楚了。

(1)修飾成員變量

  • 如果final修飾的是類變量,只能在靜態初始化塊中指定初始值或者聲明該類變量時指定初始值。
  • 如果final修飾的是成員變量,可以在非靜態初始化塊、聲明該變量或者構造器中執行初始值。

(2)修飾局部變量

系統不會為局部變量進行初始化,局部變量必須由程序員顯示初始化。因此使用final修飾局部變量時,即可以在定義時指定默認值(后面的代碼不能對變量再賦值),也可以不指定默認值,而在后面的代碼中對final變量賦初值(僅一次)。

下面使用代碼去驗證一下這兩種情況

  1. public class FinalVar { 
  2.     final static int a = 0;//再聲明的時候就需要賦值 
  3.     public static void main(String[] args) { 
  4.         final int localA;   //局部變量只聲明沒有初始化,不會報錯,與final無關。 
  5.         localA = 0;//在使用之前一定要賦值 
  6.         //localA = 1;  但是不允許第二次賦值 
  7.     } 

(3)修飾基本類型數據和引用類型數據

  • 如果是基本數據類型的變量,則其數值一旦在初始化之后便不能更改;
  • 如果是引用類型的變量,則在對其初始化之后便不能再讓其指向另一個對象。但是引用的值是可變的。

修飾基本類型的數據,在上面的代碼中基本上能夠看出,下面主要是描述引用類型的變量

  1. public class FinalReferenceTest{ 
  2.     public static void main(){ 
  3.         final int[] iArr={1,2,3,4}; 
  4.         iArr[2]=-3;//合法  
  5.         iArr=null;//非法,對iArr不能重新賦值 
  6.  
  7.         final Person p = new Person(25); 
  8.         p.setAge(24);//合法 
  9.         p=null;//非法  
  10.     }    

二、final關鍵字需要注意的幾個問題

1、final和static的區別

其實如果你看過我上一篇文章,基本上都能夠很容易得區分開來。static作用于成員變量用來表示只保存一份副本,而final的作用是用來保證變量不可變。下面代碼驗證一下

  1. public class FinalTest { 
  2.     public static void main(String[] args)  { 
  3.         AA aa1 = new AA(); 
  4.         AA aa2 = new AA(); 
  5.         System.out.println(aa1.i); 
  6.         System.out.println(aa1.j); 
  7.         System.out.println(aa2.i); 
  8.         System.out.println(aa2.j); 
  9.     } 
  10. //j值兩個都一樣,因為是static修飾的,全局只保留一份 
  11. //i值不一樣,兩個對象可能產生兩個不同的值, 
  12. class AA { 
  13.     public final int i = (int) (Math.random()*100); 
  14.     public static int j = (int) (Math.random()*100); 
  15. //結果是 65、23、67、23 

2、為什么局部內部類和匿名內部類只能訪問局部final變量?

為了解決這個問題,我們先要去使用代碼去驗證一下。

  1. public class Test { 
  2.     public static void main(String[] args)  {      
  3.     }    
  4.     //局部final變量a,b 
  5.     public void test(final int b) { 
  6.         final int a = 10; 
  7.         //匿名內部類 
  8.         new Thread(){ 
  9.             public void run() { 
  10.                 System.out.println(a); 
  11.                 System.out.println(b); 
  12.             }; 
  13.         }.start(); 
  14.     } 

上段代碼中,如果把變量a和b前面的任一個final去掉,這段代碼都編譯不過。

這段代碼會被編譯成兩個class文件:Test.class和Test1.class。默認情況下,編譯器會為匿名內部類和局部內部類起名為Outter1.class。

原因是為什么呢?這是因為test()方法里面的參數a和b,在運行時,main線程快要結束,但是thread還沒有開始。因此需要有一種機制,在使得運行thread線程時候能夠調用a和b的值,怎辦呢?java采用了一種復制的機制,

也就說如果局部變量的值在編譯期間就可以確定,則直接在匿名內部里面創建一個拷貝。如果局部變量的值無法在編譯期間確定,則通過構造器傳參的方式來對拷貝進行初始化賦值。

三、總結

final關鍵字主要用在三個地方:變量、方法、類。

  1. 對于一個final變量,如果是基本數據類型的變量,則其數值一旦在初始化之后便不能更改;如果是引用類型的變量,則在對其初始化之后便不能再讓其指向另一個對象。
  2. 當用final修飾一個類時,表明這個類不能被繼承。final類中的所有成員方法都會被隱式地指定為final方法。
  3. 使用final方法的原因有兩個。第一個原因是把方法鎖定,以防任何繼承類修改它的含義;第二個原因是效率。在早期的Java實現版本中,會將final方法轉為內嵌調用。但是如果方法過于龐大,可能看不到內嵌調用帶來的任何性能提升(現在的Java版本已經不需要使用final方法進行這些優化了)。類中所有的private方法都隱式地指定為final。

好了,final關鍵字就寫到這里,喜歡的還請大家給個關,謝謝支持,如有不對的地方還請批評。

本文轉載自微信公眾號「愚公要移山」,可以通過以下二維碼關注。轉載本文請聯系愚公要移山公眾號。

 

責任編輯:武曉燕 來源: 愚公要移山
相關推薦

2025-12-01 06:10:00

2024-11-20 15:55:57

線程Java開發

2024-01-15 10:41:31

C++關鍵字開發

2021-01-05 10:26:50

鴻蒙Javafinal

2025-07-29 06:00:00

final關鍵字開發

2023-11-28 21:50:39

finalstaticvolatile

2012-06-02 00:53:39

Javafinally

2012-03-13 14:41:41

JavaJVM

2009-12-08 18:02:06

PHP final關鍵

2009-12-17 13:57:15

Ruby關鍵字

2022-05-06 08:32:40

Pythonwith代碼

2025-04-22 08:16:37

refC#參數

2019-08-28 16:38:49

finalJava編程語言

2025-01-09 10:30:40

2025-07-11 00:37:55

C#編程.NET

2023-11-19 22:52:42

2012-03-01 12:50:03

Java

2023-12-25 07:28:24

PythonSelf對象編程

2011-06-14 13:26:27

volatile

2025-02-24 00:04:00

C#參數機制
點贊
收藏

51CTO技術棧公眾號

免费无码毛片一区二三区| 欧美成人精品一区| 国产精品多人| 琪琪一区二区三区| 91精品国产综合久久久蜜臀粉嫩 | 久久综合久久久久88| 日韩一级片在线观看| 伊人手机在线| 精品欧美乱码久久久久久1区2区| 成人免费在线视频网| 综合激情成人伊人| 成人有码视频在线播放| 久久中文字幕导航| 日韩一区二区三区在线视频| 亚洲+变态+欧美+另类+精品| 国产一区在线播放| 久久久久九九精品影院| 欧美视频自拍偷拍| 国产美女亚洲精品7777| 欧美亚洲第一页| 99精品美女视频在线观看热舞| 欧美国产精品久久| 国产亚洲综合视频| 久久国产精品99精品国产| 97免费资源站| 午夜性色一区二区三区免费视频| 99三级在线| 国产成人精品影视| 日本高清网站| 国产精品久久久久久福利一牛影视 | 日韩精品91亚洲二区在线观看 | 91视频 - 88av| 久久99蜜桃精品| 欧美日韩dvd| 久久久久久久精| 日本视频一二区| 最新日韩三级| 欧美又粗又长又爽做受| 日本中文字幕一区二区视频 | 午夜精品一区二区在线观看| 男人的j进女人的j一区| 一区二区视频在线免费| 久久精品国产一区二区| 精品无码一区二区三区爱欲| 国产亚洲综合性久久久影院| 最近中文字幕mv2018在线高清| 在线视频欧美区| 黄频免费在线观看| 欧美成人免费小视频| 欧美极品中文字幕| 久久久久久欧美精品色一二三四| 另类综合日韩欧美亚洲| 国内自拍视频一区| 色综合天天性综合| 免费观看一级欧美片| 欧美亚洲国产视频| 欧美日韩国产亚洲一区| 欧美日韩电影一区二区| av网站一区二区三区| 91国内精品在线视频| 欧美一区二区女人| 亚洲精品第一| www.一区二区三区| 成人午夜大片免费观看| 婷婷六月激情| 亚洲精品一区二区三区精华液| 国模私拍国内精品国内av| 国产成人avxxxxx在线看| 亚洲永久视频| 一女二男3p波多野结衣| 欧美日韩国产在线播放网站| 日本黄色成人| 国产一区国产精品| 国产日韩欧美高清在线| 东热在线免费视频| 久久久久久国产精品| 久久成人一区| 女人被爽到呻吟gif动态图下载| 日韩欧美在线不卡| 欧美激情久久久久久久久久久| 人偷久久久久久久偷女厕| 欧美激情中文字幕| 中文字幕资源网在线观看| 2025国产精品视频| 免费在线观看精品| 日本v片在线免费观看| 精品国产视频在线| 老牛影视一区二区三区| www.男人的天堂| 中日韩午夜理伦电影免费| 91视频婷婷| 亚洲色图20p| 欧美黄色网络| 少妇精品久久久久久久久久| 一区二区三区不卡在线观看| 亚洲一区有码| 黄色一级片国产| 91精品国产全国免费观看| 日韩精品久久| 91大神影片| 欧美成人激情图片网| 老鸭窝一区二区久久精品| 国产一级片在线播放| 国产精品成人v| 国产日韩欧美a| 91tv亚洲精品香蕉国产一区| 亚洲第一在线综合在线| 欧美网站一区二区| 99re6这里只有精品| 97影院理论午夜| 欧美激情视频在线观看| 岛国一区二区在线观看| 岛国在线视频网站| 日本一区不卡| 欧美日本视频在线| 激情久久久久久久| аⅴ资源新版在线天堂| 99久久久精品免费观看国产| 午夜精品福利视频网站| 一区二区美女| 99re热视频在线| 九九热99久久久国产盗摄| 成人网在线免费视频| 大胆人体一区| 少妇熟女一区二区| 亚洲激情 国产| 国内外成人在线视频| 亚洲国产福利| 无码人妻少妇伦在线电影| 在线看国产精品| 成人久久久精品乱码一区二区三区| 国产福利电影在线播放| 免费观看黄色大片| 在线日韩中文字幕| av亚洲精华国产精华精华| 久久精品九色| 91人成在线| 亚洲综合在线播放| 欧美女孩性生活视频| 奇米在线7777在线精品| av手机在线观看| 欧美视频免费看欧美视频| 久久精品国产一区二区电影| 国产视频亚洲色图| 国产一区二区三区91| 国产小视频在线观看| 日韩激情久久| 色综合亚洲精品激情狠狠| 国产精品五月天| 午夜精品视频一区二区三区在线看| 国家队第一季免费高清在线观看| 国产乱码精品一区二区三区不卡| 555www色欧美视频| 国产精品一区二区无线| 国产欧美日韩电影| 写真片福利在线播放| 成人区精品一区二区| 精品国产一区二区三区不卡 | 国产欧美日韩在线| 精品久久久久久久久久久下田 | 亚洲人成影院在线观看| 欧美老女人另类| 亚乱亚乱亚洲乱妇| 国产福利片一区二区| 成人444kkkk在线观看| 99综合久久| 欧美三级自拍| 黄色18在线观看| 丰满少妇又爽又紧又丰满69| 国产精品1区2区在线观看| 欧美高清你懂得| 午夜在线视频一区二区区别| 亚洲嫩模一区| 美女久久久久久久久久久| 色狠狠久久aa北条麻妃| 精品亚洲欧美一区| 福利在线播放| 亚洲福利在线播放| 93久久精品日日躁夜夜躁欧美 | 久热免费在线观看| 欧美精品丝袜中出| 麻豆精品精品国产自在97香蕉| 亚洲第一偷拍网| 亚洲欧美日韩精品久久久久| 久久中文字幕av| 国产网站在线免费观看| 性欧美大战久久久久久久| 国产精品看片资源| 国产黑人绿帽在线第一区| 伊人久久一区| 欧美新色视频| 69sex久久精品国产麻豆| 91精品视频专区| 宅男66日本亚洲欧美视频| 色婷婷久久久亚洲一区二区三区 | 被灌满精子的波多野结衣| 日本一区二区在线视频| 久久久久久久影院| 在线观看视频亚洲| 欧美精品xxxxbbbb|