欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

java面向?qū)ο笾械膄inal修飾符怎么用

這篇文章將為大家詳細講解有關java面向?qū)ο笾械膄inal修飾符,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)主要從事網(wǎng)頁設計、PC網(wǎng)站建設(電腦版網(wǎng)站建設)、wap網(wǎng)站建設(手機版網(wǎng)站建設)、成都響應式網(wǎng)站建設公司、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、小程序制作等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設行業(yè)積累了豐富的成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站設計、網(wǎng)絡營銷經(jīng)驗,集策劃、開發(fā)、設計、營銷、管理等多方位專業(yè)化運作于一體。

一、final修飾符定義:

final關鍵字可用于修飾類、變量和方法

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

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

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

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

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

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

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

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

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

package lextends;
public class FinalVariableTest {
    //定義成員變量時指定默認值,合法
    final int a = 6;
    //下面變量將在構(gòu)造器或初始化塊中分配初始值
    final String str;
    final int c;
    final static double d;

    //既沒有指定默認值,又沒有在初始化塊、構(gòu)造器中指定初始值
    //下面定義的ch實例是不合法的
    //final char ch;
    //初始化塊,可對沒有指定默認值的實例變量指定初始值
    {
        //在初始化塊中為實例變量指定初始值,合法
        str = "Hello";
        //定義a實例變量時已經(jīng)指定了默認值
        //不能為a重新賦值,因此下面賦值語句非法
        //a=9;
    }

    //靜態(tài)初始化塊,可對沒有指定默認值的類變量指定初始值
    static {
        //在靜態(tài)初始化塊中為類變量指定初始值,合法
        d = 5.6;
    }

    //構(gòu)造器,可以對既沒有指定默認值,又沒有在初始化塊中,指定初始值的實例變量指定初始值
    public FinalVariableTest() {
        //如果在初始化塊中已經(jīng)對str指定了初始值
        //那么在構(gòu)造器中不能對final變量重新賦值,下面賦值語句非法
        //str="java"
        c = 5;
    }

    public void changeFinal() {
        //普通方法不能為final修飾的成員變量賦值
        //d=1.2
        //不能在普通方法中為final成員變量指定初始值
        //ch = 'a';
    }
public static void mian(String[] args){
    FinalVariableTest ft= new FinalVariableTest();
    System.out.println(ft.a);
    System.out.println(ft.c);
    System.out.println(ft.d);}
}

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

package lextends;
public class FinalErrorTest {
    //定義一個final修飾的實例變量
    //系統(tǒng)不會對final成員變量進行默認初始化
    final int age;
    {
        //age沒有初始化,所以此處代碼將引起錯誤,因為它試圖訪問一個未初始化的變量
        //只要把定義age時的final修飾符去掉,程序就正確了
        System.out.println(age);
        
        age=6;
        System.out.println(age);
    }
    public static void main(String[] args){
        new FinalErrorTest();
    }
}

三、final局部變量

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

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

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

package lextends;
public class FinalLocalVariable {
    public void test(final int a){
        //不能對final修飾的形參賦值,下面語句非法
        //a=5;
    }
    public static void mian(String[] args){
        //定義final局部變量時指定默認值,則str變量無法重新賦值
        final String str="hello";
        //下面賦值語句非法
        //str="Java";
        
        //定義final局部變量時沒有指定默認值,則d變量可被賦值一次
        final double d;
        d=5.6;
        //對final變量重新賦值,下面語句非法
        //d=6.4;
    }
}

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

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

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

eg.
//final修飾數(shù)組元素,iArr是一個引用變量
final int[] iArr={5,6,12,9};
System.out.println(Arrays.toString(iArr));
//對數(shù)組元素進行排序,合法
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
//對數(shù)組進行元素賦值,合法
iArr[2]=-8;
System.out.println(Arrays.toString(iArr));
//下面語句對iArr重新賦值,非法
//iArr=null;

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

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

(1)使用final修飾符修飾

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

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

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

3、

eg.
String s1="瘋狂Java";
//s2變量引用的字符串可以在編譯時就確定下來
//因此s2直接引用變量池中已有的"瘋狂Java"字符串
String s2="瘋狂"+"Java";
System.out.println(s1==s2);//true

//定義兩個字符串直接量
String str1="瘋狂";
String str2="Java";
String s3=str1+str2;
System.out.println(s1==s3);//false

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

關于java面向?qū)ο笾械膄inal修飾符就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

文章題目:java面向?qū)ο笾械膄inal修飾符怎么用
標題來源:http://aaarwkj.com/article18/peiodp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站商城網(wǎng)站、動態(tài)網(wǎng)站、服務器托管、響應式網(wǎng)站、移動網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
不卡二卡三卡四卡精品| 久久久人妻精品一区二区三区四区| 在线观看免费完整观看一区二区| 日本欧美国产污黄在线观看| 精品一区二区三区亚洲| 欧美日韩一区二区三区福利| 久久久久精品久久久| 蜜臀视频在线观看免费| av在线手机中文字幕| 免费看男人添女人无遮挡| 青青草最新网址在线观看视频| 亚洲日本国产精品第一页| 国产精品午夜福利天堂| 黄色国产一区二区三区| 视频在线免费观看97| 国产黄片一区二区不卡| 欧美一区二区三区午夜| 日韩欧美精品一区二区三区四区| 中文字幕国产精品专区| 初爱视频教程完整版韩国| 亚洲人成伊人久久成| 国产日韩欧美国产精品| 久久精品国产亚洲av不卡| 国产一区二区三区性色| 色哟哟网站在线精品视频| 国产白丝免费在线观看| 久久人婷婷人人澡人人爽| 91在线看片国产免费观看| av黄色资源在线观看| 国产亚洲高清国产拍精品久久| 亚洲av色网在线观看| 精品偷拍污视频一区二区| av亚洲天堂免费观看| 91麻豆成人国产在线观看| 欧美日韩在线观看黄色| 国产成人原创免费观看| 色婷婷亚洲一区二区三区| 天堂av在线网址观看| 免费人成在线观看网站免费观看| 国产夫妻自拍在线视频| 精品亚洲一区二区三区四|