本文主要介紹了final關(guān)鍵字的使用方法及原理
我們提供的服務(wù)有:網(wǎng)站制作、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、榕江ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的榕江網(wǎng)站制作公司
具體代碼在我的GitHub中可以找到
https://github.com/h3pl/MyTech
文章首發(fā)于我的個(gè)人博客:
https://h3pl.github.io/2018/04/23/javase4
final關(guān)鍵字可以修飾類、方法和引用。
修飾類,該類不能被繼承。并且這個(gè)類的對(duì)象在堆中分配內(nèi)存后地址不可變。
修飾方法,方法不能被子類重寫。
修飾引用,引用無法改變,對(duì)于基本類型,無法修改值,對(duì)于引用,雖然不能修改地址值,但是可以對(duì)指向?qū)ο蟮膬?nèi)部進(jìn)行修改。
比如char[0] = 'a'。不改變對(duì)象內(nèi)存地址,只改變了值。
具體看一下下面的栗子:
final class Fi { int a; final int b = 0; Integer s;
} class Si{ //一般情況下final修飾的變量一定要被初始化。 //只有下面這種情況例外,要求該變量必須在構(gòu)造方法中被初始化。 //并且不能有空參數(shù)的構(gòu)造方法。 //這樣就可以讓每個(gè)實(shí)例都有一個(gè)不同的變量,并且這個(gè)變量在每個(gè)實(shí)例中只會(huì)被初始化一次 //于是這個(gè)變量在單個(gè)實(shí)例里就是常量了。 final int s ; Si(int s) { this.s = s; } } class Bi { final int a = 1; final void go() { //final修飾方法無法被繼承 } } class Ci extends Bi { final int a = 1; // void go() { // //final修飾方法無法被繼承 // } } final char[]a = {'a'}; final int[]b = {1};
@Test public void final修飾類() { //引用沒有被final修飾,所以是可變的。 //final只修飾了Fi類型,即Fi實(shí)例化的對(duì)象在堆中內(nèi)存地址是不可變的。 //雖然內(nèi)存地址不可變,但是可以對(duì)內(nèi)部的數(shù)據(jù)做改變。 Fi f = new Fi(); f.a = 1; System.out.println(f); f.a = 2; System.out.println(f); //改變實(shí)例中的值并不改變內(nèi)存地址。 Fi ff = f; //讓引用指向新的Fi對(duì)象,原來的f對(duì)象由新的引用ff持有。 //引用的指向改變也不會(huì)改變?cè)瓉韺?duì)象的地址 f = new Fi(); System.out.println(f); System.out.println(ff); }
@Test public void final修飾方法() { Bi bi = new Bi(); bi.go();//該方法無法被子類Ci重寫 }
@Test public void final修飾基本類型變量和引用() { final int a = 1; final int[] b = {1}; final int[] c = {1}; // b = c;報(bào)錯(cuò) b[0] = 1; final String aa = "a"; final Fi f = new Fi(); //aa = "b";報(bào)錯(cuò) // f = null;//報(bào)錯(cuò) f.a = 1; }
關(guān)于字符串的內(nèi)容可以在上一節(jié)查看:
https://blog.csdn.net/a724888/article/details/80042298
關(guān)于抽象類和接口的內(nèi)容可以在下一節(jié)查看:
https://blog.csdn.net/a724888/article/details/80061047
更多內(nèi)容請(qǐng)關(guān)注微信公眾號(hào)【Java技術(shù)江湖】
這是一位阿里 Java 工程師的技術(shù)小站,作者黃小斜,專注 Java 相關(guān)技術(shù):SSM、SpringBoot、MySQL、分布式、中間件、集群、Linux、網(wǎng)絡(luò)、多線程,偶爾講點(diǎn)Docker、ELK,同時(shí)也分享技術(shù)干貨和學(xué)習(xí)經(jīng)驗(yàn),致力于Java全棧開發(fā)?。P(guān)注公眾號(hào)后回復(fù)”資料“即可領(lǐng)取 3T 免費(fèi)技術(shù)學(xué)習(xí)資源以及我我原創(chuàng)的程序員校招指南、Java學(xué)習(xí)指南等資源)
**
cdn.xitu.io/2019/4/6/169f1735fd0d1d16?w=900&h=500&f=jpeg&s=109856">
標(biāo)題名稱:java基礎(chǔ)4:深入理解final關(guān)鍵字
網(wǎng)頁URL:http://sd-ha.com/article40/ggiceo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、品牌網(wǎng)站建設(shè)、用戶體驗(yàn)、商城網(wǎng)站、小程序開發(fā)、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)