真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中final修飾符怎么用

小編給大家分享一下java中final修飾符怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的武宣網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

一、final修飾符定義:

final關(guān)鍵字可用于修飾類、變量和方法

final修飾變量時,表示該變量一旦獲得了初始值就不可被改變(嚴(yán)格來說:final修飾得變量不可被改變,一旦獲得初始值,該final變量得值就不能被重新賦值)

final既可以修飾成員變量(類變量和實例變量),也可以修飾局部變量和形參

相關(guān)視頻學(xué)習(xí)教程:java在線學(xué)習(xí)

二、final成員變量語法規(guī)定:

final修飾的成員變量必須由程序員顯式地指定初始值,系統(tǒng)不會對final成員進(jìn)行隱式處初始化。

1、final修飾的類變量、實例變量能制定初始值的地方如下:

類變量:必須在靜態(tài)初始化塊中指定初始值或聲明該類變量時指定初始值,而且只能在兩個地方的其中之一指定

實例變量:必須在非靜態(tài)初始化塊、聲明該實例變量或構(gòu)造器中指定初始值,而且只能在三個地方的其中之一指定

注意:如果普通初始化塊已經(jīng)為某個實例變量指定了初始值,則不能再在構(gòu)造器中為該實例變量制定初始值

下面程序演示了final修飾成員變量的效果:

packagelextends;

publicclassFinalVariableTest{

//定義成員變量時指定默認(rèn)值,合法

finalinta=6;

//下面變量將在構(gòu)造器或初始化塊中分配初始值

finalStringstr;

finalintc;

finalstaticdoubled;

//既沒有指定默認(rèn)值,又沒有在初始化塊、構(gòu)造器中指定初始值

//下面定義的ch實例是不合法的

//finalcharch;

//初始化塊,可對沒有指定默認(rèn)值的實例變量指定初始值

{

//在初始化塊中為實例變量指定初始值,合法

str="Hello";

//定義a實例變量時已經(jīng)指定了默認(rèn)值

//不能為a重新賦值,因此下面賦值語句非法

//a=9;

}

//靜態(tài)初始化塊,可對沒有指定默認(rèn)值的類變量指定初始值

static{

//在靜態(tài)初始化塊中為類變量指定初始值,合法

d=5.6;

}

//構(gòu)造器,可以對既沒有指定默認(rèn)值,又沒有在初始化塊中,指定初始值的實例變量指定初始值

publicFinalVariableTest(){

//如果在初始化塊中已經(jīng)對str指定了初始值

//那么在構(gòu)造器中不能對final變量重新賦值,下面賦值語句非法

//str="java"

c=5;

}

publicvoidchangeFinal(){

//普通方法不能為final修飾的成員變量賦值

//d=1.2

//不能在普通方法中為final成員變量指定初始值

//ch='a';

}

publicstaticvoidmian(String[]args){

FinalVariableTestft=newFinalVariableTest();

System.out.println(ft.a);

System.out.println(ft.c);

System.out.println(ft.d);}

}

2、如果打算在構(gòu)造器、初始化塊對final成員變量進(jìn)行初始化,則不要在初始化之前就訪問成員變量的值。

packagelextends;

publicclassFinalErrorTest{

//定義一個final修飾的實例變量

//系統(tǒng)不會對final成員變量進(jìn)行默認(rèn)初始化

finalintage;

{

//age沒有初始化,所以此處代碼將引起錯誤,因為它試圖訪問一個未初始化的變量

//只要把定義age時的final修飾符去掉,程序就正確了

System.out.println(age);

age=6;

System.out.println(age);

}

publicstaticvoidmain(String[]args){

newFinalErrorTest();

}

}

三、final局部變量

1、定義:系統(tǒng)不會對局部變量進(jìn)行初始化,局部變量必須由程序員顯示初始化。因此使用final修飾局部變量時,既可以在定義時指定默認(rèn)值,也可以不指定默認(rèn)值。

下面程序示范了final修飾局部變量、形參:

(final修飾形參的情形,因為在調(diào)用該方法時,由系統(tǒng)根據(jù)傳入的參數(shù)來完成初始化,因此使用final修飾符不能被賦值。)

packagelextends;

publicclassFinalLocalVariable{

publicvoidtest(finalinta){

//不能對final修飾的形參賦值,下面語句非法

//a=5;

}

publicstaticvoidmian(String[]args){

//定義final局部變量時指定默認(rèn)值,則str變量無法重新賦值

finalStringstr="hello";

//下面賦值語句非法

//str="Java";

//定義final局部變量時沒有指定默認(rèn)值,則d變量可被賦值一次

finaldoubled;

d=5.6;

//對final變量重新賦值,下面語句非法

//d=6.4;

}

}

四、final修飾基本類型變量和引用類型變量的區(qū)別

使用final修飾的引用類型變量不能被重新賦值,但可以改變引用類型變量所引用對象的內(nèi)容

例如下面的iArr變量所引用的數(shù)組對象,final修飾后的iArr變量不能被重新賦值,但iArr所引用數(shù)組的數(shù)組元素可以被改變

eg.

//final修飾數(shù)組元素,iArr是一個引用變量

finalint[]iArr={5,6,12,9};

System.out.println(Arrays.toString(iArr));

//對數(shù)組元素進(jìn)行排序,合法

Arrays.sort(iArr);

System.out.println(Arrays.toString(iArr));

//對數(shù)組進(jìn)行元素賦值,合法

iArr[2]=-8;

System.out.println(Arrays.toString(iArr));

//下面語句對iArr重新賦值,非法

//iArr=null;

五、可執(zhí)行”宏替換“的final變量

1、對于一個final變量來說,不管它是類變量、實例變量,還是局部變量,只要該變量滿足三個條件,這個final變量就不再是一個變量,而是相當(dāng)于一個直接量。

(1)使用final修飾符修飾

(2)在定義該final變量時指定了初始值

(3)該初始值可以在編譯時就被確定下來

2、final修飾符有一個重要用途就是定義”宏變量“。當(dāng)定義final變量時就為該變量指定了初始值,而且該變量可以在變量時就確定下來,那么這個final變量本質(zhì)上就是一個”宏變量“,編譯器會把程序中所有用到該變量的地方直接替換成該變量的值。

3、

eg.

Strings1="瘋狂Java";

//s2變量引用的字符串可以在編譯時就確定下來

//因此s2直接引用變量池中已有的"瘋狂Java"字符串

Strings2="瘋狂"+"Java";

System.out.println(s1==s2);//true

//定義兩個字符串直接量

Stringstr1="瘋狂";

Stringstr2="Java";

Strings3=str1+str2;

System.out.println(s1==s3);//false

對于s3而言,它的值由str1和str2進(jìn)行連接運算得到的,由于str1、str2只是兩個普通變量,編譯器不會執(zhí)行”宏替換“,因此編譯器無法確定s3的值,也就無法讓s3指向字符串池中緩存的"瘋狂Java"。

以上是“java中final修飾符怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站名稱:java中final修飾符怎么用
本文URL:http://weahome.cn/article/jdpcoe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部