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

Java關(guān)鍵字詳解之final static this super的用法

 更新時間:2021年10月06日 13:20:20   作者:寧海沒有七號公園  
this用來調(diào)用目前類自身的成員變量,super多用來調(diào)用父類的成員,final多用來定義常量用的,static定義靜態(tài)變量方法用的,靜態(tài)變量方法只能被類本身調(diào)用,下文將詳細(xì)介紹,需要的朋友可以參考下

final,static,this,super 關(guān)鍵字總結(jié)

正文開始@Assassin

1. final 關(guān)鍵字:

final 關(guān)鍵字,意思是最終的、不可改變的,初始化之后就不能再次修改 ,用來修飾類、方法和變量,具有以下特點:

  • final 修飾的類不能被繼承,final類中的所有成員方法都會被隱式的指定為 final 方法;
  • final 修飾的方法不能被重寫;
  • final 修飾的變量是常量,如果是基本數(shù)據(jù)類型的變量,則其數(shù)值一旦在初始化之后便不能更改;如果是引用類型的變量,則在對其初始化之后便不能讓其指向另一個對象;

final的使用場景:使用 final 方法的原因有兩個。第一個原因是把方法鎖定,以防任何繼承類修改它的含義;第二個原因是效率。在早期的 Java 實現(xiàn)版本中,會將 final 方法轉(zhuǎn)為內(nèi)嵌調(diào)用。但是如果方法過于龐大,可能看不到內(nèi)嵌調(diào)用帶來的任何性能提升(現(xiàn)在的 Java 版本已經(jīng)不需要使用 final 方法進(jìn)行這些優(yōu)化了)。類中所有的 private 方法都隱式地指定為 final。

2. static 關(guān)鍵字:

static 關(guān)鍵字主要有以下四種使用場景:

  • 修飾成員變量和成員方法: 被static 修飾的成員屬于類,不屬于單個這個類的某個對象,也就是說被類中所有對象共享,可以并且建議通過類名調(diào)用(創(chuàng)建對象來調(diào)用也不報錯,不建議 )。被static聲明的成員變量屬于靜態(tài)成員變量,靜態(tài)變量 存放在 Java 內(nèi)存區(qū)域的方法區(qū)。調(diào)用格式:類名.靜態(tài)變量名類名.靜態(tài)方法名()
  • 靜態(tài)代碼塊: 靜態(tài)代碼塊定義在類中方法外, 靜態(tài)代碼塊在非靜態(tài)代碼塊之前執(zhí)行(靜態(tài)代碼塊—>非靜態(tài)代碼塊—>構(gòu)造方法)。 該類不管創(chuàng)建多少對象,靜態(tài)代碼塊只執(zhí)行一次;
  • 靜態(tài)內(nèi)部類(static 修飾類的話只能修飾內(nèi)部類): 靜態(tài)內(nèi)部類與非靜態(tài)內(nèi)部類之間存在一個最大的區(qū)別: 非靜態(tài)內(nèi)部類在編譯完成之后會隱含地保存著一個引用,該引用是指向創(chuàng)建它的外圍類,但是靜態(tài)內(nèi)部類卻沒有。沒有這個引用就意味著:1. 它的創(chuàng)建是不需要依賴外圍類的創(chuàng)建。2. 它不能使用任何外圍類的非 static 成員變量和方法。
  • 靜態(tài)導(dǎo)包(用來導(dǎo)入類中的靜態(tài)資源,1.5 之后的新特性): 格式為:import,static 這兩個關(guān)鍵字連用可以指定導(dǎo)入某個類中的指定靜態(tài)資源,并且不需要使用類名調(diào)用類中靜態(tài)成員,可以直接使用類中靜態(tài)成員變量和成員方法。

3. this 關(guān)鍵字:

this 是自身的一個對象的引用,可以簡單地理解為代表對象本身,(本質(zhì)上this是一個變量,存儲的是當(dāng)前對象的地址)。站在內(nèi)存的角度,也就是說:this是指向?qū)ο蟊旧淼囊粋€指針。

this 的用法在 Java 中大體可以分為3種:

  • 普通的直接引用

this是當(dāng)前對象的一個引用,相當(dāng)于是指向當(dāng)前對象本身。

  • 形參與成員名字重名,用 this 來區(qū)分:
class Person {
    private int age = 10;
    public Person(){
    System.out.println("初始化年齡:"+age);
}
    public int getAge(int age){
        this.age = age;
        return this.age;
    }
}
 
public class TestDemo {
    public static void main(String[] args) {
        Person assassin = new Person();
        System.out.println("assassin's age is " + assassin .getAge(12));
    }
}

運行結(jié)果:

在這里插入圖片描述

在這里插入圖片描述

可以看到,這里 age 是 getAge 成員方法的形參,this.age 是 Person 類的成員變量。

  • 引用構(gòu)造函數(shù)

下面與super一起講,thissuper很像,都是對象的引用;

4. super 關(guān)鍵字:

super可以理解為是指向自己父(超/基)類對象的一個指針,指向的是離自己最近的一個父類。

super 也有三種用法:

  • 普通的直接引用

this 類似,super 相當(dāng)于是指向當(dāng)前對象的父類,這樣就可以用 super.xxx 來引用父類的成員。

  • 子類中的成員變量或方法與父類中的成員變量或方法同名

實例:

package com.test;

class Country {
    String name;
    void value() {
        name = "China";
    }
}
class City extends Country {
    String name;
    void value() {
        name = "Shanghai";
        super.value();      //調(diào)用父類的方法
        System.out.println(name);
        System.out.println(super.name);
    }
    public static void main(String[] args) {
        City c=new City();
        c.value();
    }
}

運行結(jié)果:

在這里插入圖片描述

在這里插入圖片描述

可以看到,這里既調(diào)用了父類的方法,也調(diào)用了父類的變量。若不調(diào)用父類方法 value(),只調(diào)用父類變量 name 的話,則父類 name 值為默認(rèn)值 null。

  • 引用構(gòu)造函數(shù)

super(參數(shù)):調(diào)用父類中的某一個構(gòu)造函數(shù)(應(yīng)該為構(gòu)造函數(shù)中的第一條語句)。
this(參數(shù)):調(diào)用本類中另一種形式的構(gòu)造函數(shù)(應(yīng)該為構(gòu)造函數(shù)中的第一條語句)。

使用 this 和 super 要注意的問題:

  • 在構(gòu)造器中使用 super() 調(diào)用父類中的其他構(gòu)造方法時,該語句必須處于構(gòu)造器的首行,否則編譯器會報錯。另外,this 調(diào)用本類中的其他構(gòu)造方法時,也要放在首行。-this、super不能用在static方法中。

簡單解釋一下:

static 修飾的成員屬于類,不屬于單個這個類的某個對象,被類中所有對象共享。而 this 代表對本類對象的引用,指向本類對象;而 super 代表對父類對象的引用,指向父類對象;所以, thissuper 是屬于對象范疇的東西,而靜態(tài)方法是屬于類范疇的東西。

到此這篇關(guān)于Java關(guān)鍵字詳解之final static this super的用法的文章就介紹到這了,更多相關(guān)Java final 用法 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實現(xiàn)簡單的圖書借閱系統(tǒng)

    java實現(xiàn)簡單的圖書借閱系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)簡單的圖書借閱系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java中將多個PDF文件合并為一個PDF的方法步驟

    Java中將多個PDF文件合并為一個PDF的方法步驟

    這篇文章主要給大家介紹了關(guān)于Java中將多個PDF文件合并為一個PDF的方法步驟, Java PDF合并是指將多個PDF文件合并成一個PDF文件的過程,需要的朋友可以參考下
    2023-09-09
  • Java使用ObjectMapper的簡單示例

    Java使用ObjectMapper的簡單示例

    這篇文章主要介紹了Java使用ObjectMapper的簡單示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java JDK11的下載與安裝教程

    Java JDK11的下載與安裝教程

    這篇文章主要介紹了Java JDK11的下載與安裝,本文以win10為例給大家講解win10系統(tǒng)下載安裝jdk11的教程,需要的朋友可以參考下
    2023-05-05
  • Java從控制臺接受輸入字符的簡單方法

    Java從控制臺接受輸入字符的簡單方法

    這篇文章主要介紹了Java從控制臺接受輸入字符的簡單方法,需要的朋友可以參考下
    2014-02-02
  • SpringBoot使用mybatis-plus分頁查詢無效的問題解決

    SpringBoot使用mybatis-plus分頁查詢無效的問題解決

    MyBatis-Plus提供了很多便捷的功能,包括分頁查詢,本文主要介紹了SpringBoot使用mybatis-plus分頁查詢無效的問題解決,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 簡單的java圖片處理類(圖片水印 圖片縮放)

    簡單的java圖片處理類(圖片水印 圖片縮放)

    本圖片處理類功能非常之強(qiáng)大可以實現(xiàn)幾乎所有WEB開發(fā)中對圖像的處理功能都集成了,包括有縮放圖像、切割圖像、圖像類型轉(zhuǎn)換、彩色轉(zhuǎn)黑白、文字水印、圖片水印等功能
    2013-11-11
  • SpringBoot配置MongoDB多數(shù)據(jù)源的方法步驟

    SpringBoot配置MongoDB多數(shù)據(jù)源的方法步驟

    這篇文章主要介紹了SpringBoot配置MongoDB多數(shù)據(jù)源的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Spring  ApplicationContextAware 接口的作用及使用方式

    Spring  ApplicationContextAware 接口的作用及使用方式

    Spring提供了許多回調(diào)接口,用于Bean生命周期中執(zhí)行特定的操作,通過實現(xiàn)ApplicationContextAware接口,Spring提供了一種便捷的方式讓 Bean獲取對Spring容器的引用,本文介紹ApplicationContextAware接口的作用、使用方式,以及在實際應(yīng)用中的常見場景,感興趣的朋友一起看看吧
    2024-01-01
  • 使用kotlin集成springboot開發(fā)的超詳細(xì)教程

    使用kotlin集成springboot開發(fā)的超詳細(xì)教程

    目前大多數(shù)都在使用java集成 springboot進(jìn)行開發(fā),本文演示僅僅將 java換成 kotlin,其他不變的情況下進(jìn)行開發(fā),需要的朋友可以參考下
    2021-09-09

最新評論

稷山县| 二连浩特市| 东丰县| 达尔| 开远市| 中阳县| 盐城市| 泰和县| 宜州市| 岢岚县| 上饶县| 三亚市| 灯塔市| 宝山区| 上犹县| 含山县| 鲁山县| 曲周县| 孙吴县| 安泽县| 宝鸡市| 石门县| 周至县| 英德市| 留坝县| 长治县| 白银市| 扎鲁特旗| 霸州市| 平凉市| 北京市| 阳东县| 安庆市| 民勤县| 三明市| 囊谦县| 德钦县| 灌云县| 喜德县| 盐城市| 旬邑县|