java中的final關(guān)鍵字詳解及實(shí)例
java中的final關(guān)鍵字詳解
final的作用隨著所修飾的類型而不同
1、final修飾類中的屬性或者變量
無論屬性是基本類型還是引用類型,final所起的作用都是變量里面存放的“值”不能變。
這個(gè)值,對(duì)于基本類型來說,變量里面放的就是實(shí)實(shí)在在的值,如1,“abc”等。
而引用類型變量里面放的是個(gè)地址,所以用final修飾引用類型變量指的是它里面的地址不能變,并不是說這個(gè)地址所指向的對(duì)象或數(shù)組的內(nèi)容不可以變,這個(gè)一定要注意。
例如:類中有一個(gè)屬性是final Person p=new Person("name"); 那么你不能對(duì)p進(jìn)行重新賦值,但是可以改變p里面屬性的值,p.setName('newName');
final修飾屬性,聲明變量時(shí)可以不賦值,而且一旦賦值就不能被修改了。對(duì)final屬性可以在三個(gè)地方賦值:聲明時(shí)、初始化塊中、構(gòu)造方法中??傊欢ㄒx值。
2、final修飾類中的方法
作用:可以被繼承,但繼承后不能被重寫。
3、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賦值給byte-----出錯(cuò)
如果對(duì)b1 b2加上final就不會(huì)出錯(cuò)
final byte b1=1; final byte b2=3; byte b3=b1+b2;//不會(huì)出錯(cuò),相信你看了上面的解釋就知道原因了。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
解決mybatis使用char類型字段查詢oracle數(shù)據(jù)庫時(shí)結(jié)果返回null問題
這篇文章主要介紹了mybatis使用char類型字段查詢oracle數(shù)據(jù)庫時(shí)結(jié)果返回null問題的解決方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06一文詳解Java中的動(dòng)態(tài)填充Html模版并轉(zhuǎn)PDF
在后端技術(shù)中,模板引擎和PDF生成工具是兩個(gè)非常重要的領(lǐng)域,Thymeleaf和wkhtmltopdf是這兩個(gè)領(lǐng)域的杰出代表,下面就來詳細(xì)介紹一下Thymeleaf和wkhtmltopdf的技術(shù)特點(diǎn)吧2023-12-12SpringBoot 配置文件加載位置與優(yōu)先級(jí)問題詳解
這篇文章主要介紹了SpringBoot 配置文件加載位置與優(yōu)先級(jí)問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09java 數(shù)據(jù)結(jié)構(gòu)之刪除鏈表中的元素實(shí)例代碼
這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)之刪除鏈表中的元素實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-01-01SpringBoot實(shí)現(xiàn)接口的各種參數(shù)校驗(yàn)的示例
本文主要介紹了SpringBoot實(shí)現(xiàn)接口的各種參數(shù)校驗(yàn)的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01