最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Java中的final關(guān)鍵字

 更新時(shí)間:2020年06月01日 11:59:56   作者:蕪湖不蕪  
這篇文章主要給大家介紹了關(guān)于Java中final關(guān)鍵字的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

1 修飾屬性或者變量

無論屬性是基本類型還是引用類型,作用都是變量里面存放的“值”不可變

經(jīng)常和static關(guān)鍵字一起使用,作為常量

1 基本類型,變量放的是實(shí)實(shí)在在的值,如1,“abc”等

2 引用類型,變量放的是個(gè)地址,所以用final修飾引用類型變量指的是它里面的地址不能變,即它只能指向初始時(shí)指向的那個(gè)對(duì)象,而不關(guān)心指向的對(duì)象內(nèi)容的變化

所以修飾的變量必須被初始化

public static final String LOAN = "loan";
LOAN = new String("loan") //invalid compilation error

定義時(shí)

1 初始化塊中,但不可在靜態(tài)初始化塊中,靜態(tài)的final實(shí)例變量才可以在靜態(tài)初始化塊中

2 構(gòu)造方法中,但靜態(tài)final實(shí)例變量不可以在其中

3 final變量是只讀的

2 修飾方法

該方法可被繼承,但不許被任何子類重寫

當(dāng)調(diào)用final方法時(shí),直接將方法主體插入到調(diào)用處,而不是進(jìn)行方法調(diào)用,這樣能提高程序效率(內(nèi)聯(lián)機(jī)制)
如果你認(rèn)為一個(gè)方法的功能已經(jīng)足夠完整了,子類中不需要改變的話,你可以聲明此方法為final
final方法比非final方法快,因?yàn)樵诰幾g時(shí)候已靜態(tài)綁定了,不需要在運(yùn)行時(shí)再動(dòng)態(tài)綁定。

class PersonalLoan{ public final String getName(){  return "personal loan";
 }
} 
class CheapPersonalLoan extends PersonalLoan{ @Override
 public final String getName(){  return "cheap personal loan"; //compilation error: overridden method is final
 }
}

3 修飾類

使用final來修飾的類叫作final類

final類通常功能是完整的,不能被繼承

Java中有許多類是final的,譬如String, Interger以及其他包裝類

類不可以被繼承,但這并非表示final類的實(shí)例變量也不可變,除非給實(shí)例變量也增加final修飾

final class PersonalLoan{
} 
class CheapPersonalLoan extends PersonalLoan{ //compilation error: cannot inherit from final class
 }

一個(gè)類不可同時(shí)被abstract和final修飾

思考一個(gè)有趣的現(xiàn)象:

byte b1=1;byte b2=3;byte b3=b1+b2; //當(dāng)程序執(zhí)行到這一行的時(shí)候會(huì)出錯(cuò),因?yàn)閎1、b2可以自動(dòng)轉(zhuǎn)換成int類型的變量,運(yùn)算時(shí)java虛擬機(jī)對(duì)它進(jìn)行了轉(zhuǎn)換,結(jié)果導(dǎo)致把一個(gè)int賦值給bytefinal byte b1=1;final byte b2=3;byte b3=b1+b2; //不會(huì)出錯(cuò),相信你看了上面的解釋就知道原因了。

4 final關(guān)鍵字的好處

1 提高性能
JVM和Java應(yīng)用都會(huì)緩存final變量。

2 final變量可以安全的在多線程環(huán)境下進(jìn)行共享,而不需要額外的同步開銷。

3 使用final關(guān)鍵字,JVM會(huì)對(duì)方法、變量及類進(jìn)行優(yōu)化。

5 不可變類

創(chuàng)建不可變類要使用final關(guān)鍵字。不可變類是指它的對(duì)象一旦被創(chuàng)建了就不能被更改了。String是不可變類的代表。不可變類有很多好處,譬如它們的對(duì)象是只讀的,可以在多線程環(huán)境下安全的共享,不用額外的同步開銷等等。

6 其他重要知識(shí)點(diǎn)

不能夠?qū)inal變量再賦值

本地變量必須在聲明時(shí)賦值

在匿名類中所有變量都必須final

final關(guān)鍵字不同于finally關(guān)鍵字,后者用于異常處理

final關(guān)鍵字容易與finalize()方法搞混,后者是在Object類中定義的方法,是在垃圾回收之前被JVM調(diào)用的方法
接口中聲明的所有變量本身是final

final和abstract這兩個(gè)關(guān)鍵字反相關(guān),final類不能abstract

final方法在編譯階段綁定,稱為靜態(tài)綁定(static binding)

沒在聲明時(shí)初始化final變量的稱為空白final變量(blank final variable),須在構(gòu)造器中初始化,或調(diào)用this()初始化。不這么做的話,編譯器會(huì)報(bào)錯(cuò)“final變量(變量名)需要進(jìn)行初始化”

final變量就是常量,而且通常常量名要大寫
private final int COUNT = 10;

對(duì)于集合對(duì)象聲明為final指的是引用不能被更改,但是你可以向其中增加,刪除或者改變內(nèi)容。譬如:

private final List Loans = new ArrayList();list.add(“home loan”); //validlist.add("personal loan"); //validloans = new Vector(); //not valid

以上就是詳解Java-final關(guān)鍵字的詳細(xì)內(nèi)容,更多關(guān)于Java-final關(guān)鍵字的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中ResultSetMetaData 元數(shù)據(jù)的具體使用

    Java中ResultSetMetaData 元數(shù)據(jù)的具體使用

    本文主要介紹了Java中ResultSetMetaData 元數(shù)據(jù)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 詳解安裝Eclipse Maven插件的幾種方法

    詳解安裝Eclipse Maven插件的幾種方法

    本篇文章主要介紹了詳解安裝Eclipse Maven插件的幾種方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • 詳解Java使用JMH進(jìn)行基準(zhǔn)性能測試

    詳解Java使用JMH進(jìn)行基準(zhǔn)性能測試

    本文主要介紹了Java使用JMH進(jìn)行基準(zhǔn)性能測試,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • SpringBoot使用thymeleaf模板過程解析

    SpringBoot使用thymeleaf模板過程解析

    這篇文章主要介紹了SpringBoot使用thymeleaf模板過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java將中文轉(zhuǎn)化為拼音的簡單代碼示例

    Java將中文轉(zhuǎn)化為拼音的簡單代碼示例

    在我們使用手機(jī)通訊錄或各種APP的搜索功能時(shí),既可以根據(jù)中文搜索,也可以根據(jù)拼音搜索,這種時(shí)候就使用到了中文轉(zhuǎn)拼音的功能了,下面這篇文章主要給大家介紹了關(guān)于Java將中文轉(zhuǎn)化為拼音的簡單代碼示例,需要的朋友可以參考下
    2024-03-03
  • SparkSQL中的JSON內(nèi)置函數(shù)全解析

    SparkSQL中的JSON內(nèi)置函數(shù)全解析

    你是否曾經(jīng)為處理JSON數(shù)據(jù)而頭疼?SparkSQL為我們提供了強(qiáng)大的內(nèi)置JSON函數(shù),讓JSON處理變得輕而易舉,本文將帶你深入了解這些函數(shù),感興趣的朋友一起看看吧
    2024-08-08
  • java swing編程入門代碼編寫(java編程入門)

    java swing編程入門代碼編寫(java編程入門)

    Swing是一個(gè)為Java設(shè)計(jì)的GUI工具包,是用來做UI界面的,大家看了下面的介紹就要吧自己做java界面了
    2013-12-12
  • 詳解springMVC兩種方式實(shí)現(xiàn)多文件上傳及效率比較

    詳解springMVC兩種方式實(shí)現(xiàn)多文件上傳及效率比較

    本篇文章介紹了springMVC兩種方式實(shí)現(xiàn)多文件上傳及效率比較。springMVC實(shí)現(xiàn)多文件上傳有兩種,一種是字節(jié)流的方式進(jìn)行文件上傳,另外一種是使用springMVC包裝好的解析器進(jìn)行上傳,有興趣的可以了解一下。
    2016-12-12
  • IDEA+Maven搭建JavaWeb項(xiàng)目的方法步驟

    IDEA+Maven搭建JavaWeb項(xiàng)目的方法步驟

    本文主要介紹了IDEA+Maven搭建JavaWeb項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • spring boot 若依系統(tǒng)整合Ueditor部署時(shí)上傳圖片錯(cuò)誤問題

    spring boot 若依系統(tǒng)整合Ueditor部署時(shí)上傳圖片錯(cuò)誤問題

    這篇文章主要介紹了spring boot 若依系統(tǒng)整合Ueditor部署時(shí)上傳圖片錯(cuò)誤問題,本文給大家分享問題解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評(píng)論

秦皇岛市| 教育| 元谋县| 双桥区| 平利县| 库伦旗| 永春县| 正镶白旗| 鄱阳县| 光山县| 鄱阳县| 民县| 丰原市| 华亭县| 万山特区| 大厂| 丁青县| 乐清市| 青神县| 阜新市| 新龙县| 高密市| 屯昌县| 晋州市| 余干县| 涪陵区| 永州市| 静乐县| 武川县| 永泰县| 水城县| 大英县| 江北区| 丰都县| 健康| 娄烦县| 天台县| 鸡西市| 阳原县| 阿勒泰市| 永济市|