欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入了解Java中的static關(guān)鍵字

 更新時間:2022年11月16日 16:26:29   作者:糖芬蛋糕  
這篇文章主要為大家詳細(xì)介紹了Java中的static關(guān)鍵字的用法的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的小伙伴可以學(xué)習(xí)一下

static修飾成員變量

static修飾的成員變量,稱為靜態(tài)成員變量,靜態(tài)成員變量最大的特性:不屬于某個具體的對象,是所有對象所共 享的

public class Student{
    public String name;
    public String gender;
    public int  age;
    public double score;
    public static String classRoom = "Bit306";
Student(String name,String gender,int  age,double score){
    this.name=name;
    this.gender=gender;
    this.age=age;
    this.score=score;
}
    public static void main(String[] args) {
        // 靜態(tài)成員變量可以直接通過類名訪問
        System.out.println(Student.classRoom);
        Student s1 = new Student("Li leilei", "男", 18, 3.8);
        Student s2 = new Student("Han MeiMei", "女", 19, 4.0);
        Student s3 = new Student("Jim", "男", 18, 2.6);
        // 也可以通過對象訪問:但是classRoom是三個對象共享的
        System.out.println(s1.classRoom);
        System.out.println(s2.classRoom);
        System.out.println(s3.classRoom);
    }
}

此時通過代碼我們可以看到被static關(guān)鍵字修飾的成員屬于某個具體的對象,是所有對象所共 享的

【靜態(tài)成員變量特性】

  • 不屬于某個具體的對象,是類的屬性,所有對象共享的,不存儲在某個對象的空間中
  • 既可以通過對象訪問,也可以通過類名訪問,但一般更推薦使用類名訪問
  • 類變量存儲在方法區(qū)當(dāng)中
  • 生命周期伴隨類的一生(即:隨類的加載而創(chuàng)建,隨類的卸載而銷毀)

static修飾成員方法

一般類中的數(shù)據(jù)成員都設(shè)置為private,而成員方法設(shè)置為public,那static屬性應(yīng)該如何訪問呢?

public class Student{
    public String name;
    public String gender;
    public int  age;
    public double score;
    private static String classRoom = "Bit306";
Student(String name,String gender,int  age,double score){
    this.name=name;
    this.gender=gender;
    this.age=age;
    this.score=score;
}
}
class Textstudent{
    public static void main(String[] args) {
        // 靜態(tài)成員變量可以直接通過類名訪問
        System.out.println(Student.classRoom);
        Student s1 = new Student("Li leilei", "男", 18, 3.8);
        Student s2 = new Student("Han MeiMei", "女", 19, 4.0);
        Student s3 = new Student("Jim", "男", 18, 2.6);
        // 也可以通過對象訪問:但是classRoom是三個對象共享的
        System.out.println(s1.classRoom);
        System.out.println(s2.classRoom);
        System.out.println(s3.classRoom);
    }
}

此時我們會發(fā)現(xiàn)編譯器報錯

Java中,被static修飾的成員方法稱為靜態(tài)成員方法,是類的方法,不是某個對象所特有的。靜態(tài)成員一般是通過 靜態(tài)方法來訪問的

public class Student {
    public String name;
    public String gender;
    public int age;
    public double score;
    private static String classRoom = "Bit306";
    public static String getClassRoom() {
        return classRoom;
    }
}
 class Textstudent{
    public static void main(String[] args) {
        System.out.println(Student.getClassRoom());
    }
}

這里的getClassRoom成員方法要用static關(guān)鍵字修飾否則還要重新實例化對象,用static修飾后可以直接通過類名調(diào)用

【靜態(tài)方法特性】

1.不屬于某個具體的對象,是類方法

2.可以通過對象調(diào)用,也可以通過類名.靜態(tài)方法名(…)方式調(diào)用,更推薦使用后者

3.不能在靜態(tài)方法中訪問任何非靜態(tài)成員變量

public class Student {
    public String name;
    public String gender;
    public int age;
    public double score;
    private static String classRoom = "Bit306";
    public static String getClassRoom(){
        age += 1;
         return classRoom;
    }
}
 class Textstudent{
    public static void main(String[] args) {
        System.out.println(Student.getClassRoom());
    }
}

4.靜態(tài)方法中不能調(diào)用任何非靜態(tài)方法,因為非靜態(tài)方法有this參數(shù),在靜態(tài)方法中調(diào)用時候無法傳遞this引用

public static String getClassRoom(){
    doClass();
    return classRoom;
}
// 編譯報錯:Error:(35, 9) java: 無法從靜態(tài)上下文中引用非靜態(tài) 方法 doClass()

static成員變量初始化

靜態(tài)成員變量的初始化分為兩種:就地初始化 和 靜態(tài)代碼塊初始化

就地初始化

public class Student{
    private String name;
    private String gender;
    private int  age;
    private double score;
    private static String classRoom = "Bit306";  
}

靜態(tài)代碼塊初始化

  static {
        classRoom = "bit306";
   }

使用static定義的代碼塊稱為靜態(tài)代碼塊。一般用于初始化靜態(tài)成員變量。

默認(rèn)初始化

public class Student{
    private String name;
    private String gender;
    private int  age;
    private double score;

通過提供get和set方法初始化

  public static String getClassRoom() {
        return classRoom;
    }

???????    public static void setClassRoom(String classRoom) {
        Student.classRoom = classRoom;
    }

其中g(shù)et方法是獲取修改后的值,set方法是設(shè)置static修飾的值

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

相關(guān)文章

  • 解讀@RequestBody與post請求的關(guān)系

    解讀@RequestBody與post請求的關(guān)系

    這篇文章主要介紹了解讀@RequestBody與post請求的關(guān)系,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 解決Java調(diào)用BAT批處理不彈出cmd窗口的方法分析

    解決Java調(diào)用BAT批處理不彈出cmd窗口的方法分析

    本篇文章是對Java調(diào)用BAT批處理不彈出cmd窗口的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 解決FeignClient重試機(jī)制造成的接口冪等性

    解決FeignClient重試機(jī)制造成的接口冪等性

    這篇文章主要介紹了解決FeignClient重試機(jī)制造成的接口冪等性問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot3使用Jasypt實現(xiàn)配置文件信息加密的方法

    SpringBoot3使用Jasypt實現(xiàn)配置文件信息加密的方法

    對于一些單體項目而言,在沒有使用SpringCloud的情況下,配置文件中包含著大量的敏感信息,如果這些信息泄露出去將會對企業(yè)的資產(chǎn)產(chǎn)生重大威脅,因此,對配置文件中的敏感信息加密是一件極其必要的事,所以本文介紹了SpringBoot3使用Jasypt實現(xiàn)配置文件信息加密的方法
    2024-07-07
  • 詳解Java線程池是如何重復(fù)利用空閑線程的

    詳解Java線程池是如何重復(fù)利用空閑線程的

    在Java開發(fā)中,經(jīng)常需要創(chuàng)建線程去執(zhí)行一些任務(wù),實現(xiàn)起來也非常方便,此時,我們很自然會想到使用線程池來解決這個問題,文中給大家提到使用線程池的好處,對Java線程池空閑線程知識感興趣的朋友一起看看吧
    2021-06-06
  • 深入理解SpringMVC中央調(diào)度器DispatcherServlet

    深入理解SpringMVC中央調(diào)度器DispatcherServlet

    這篇文章主要介紹了SpringMVC核心之中央調(diào)度器DispatcherServlet的相關(guān)知識,包括SpringMVC請求處理過程及SrpingMVC容器和spring?IOC容器關(guān)系,需要的朋友可以參考下
    2022-05-05
  • Spring MVC+FastJson+Swagger集成的完整實例教程

    Spring MVC+FastJson+Swagger集成的完整實例教程

    這篇文章主要給大家分享介紹了關(guān)于Spring MVC+FastJson+Swagger集成的完整實例教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Java開發(fā)之Spring連接數(shù)據(jù)庫方法實例分析

    Java開發(fā)之Spring連接數(shù)據(jù)庫方法實例分析

    這篇文章主要介紹了Java開發(fā)之Spring連接數(shù)據(jù)庫方法,以實例形式較為詳細(xì)的分析了Java Spring開發(fā)中針對數(shù)據(jù)庫的相關(guān)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Java中JVM的雙親委派、內(nèi)存溢出、垃圾回收和調(diào)優(yōu)詳解

    Java中JVM的雙親委派、內(nèi)存溢出、垃圾回收和調(diào)優(yōu)詳解

    這篇文章主要介紹了Java中JVM的雙親委派、內(nèi)存溢出、垃圾回收和調(diào)優(yōu)詳解,類加載器是Java虛擬機(jī)(JVM)的一個重要組成部分,它的主要作用是將類的字節(jié)碼加載到內(nèi)存中,并生成對應(yīng)的Class對象,需要的朋友可以參考下
    2023-07-07
  • 淺談一下SpringBoot中的異步任務(wù)

    淺談一下SpringBoot中的異步任務(wù)

    這篇文章主要介紹了淺談一下SpringBoot中的異步任務(wù),SpringBoot 中的異步任務(wù)主要是指在 SpringBoot 中使用異步線程完成處理任務(wù),在 SpringBoot 中使用異步線程非常簡單,只需要兩個注解就可以搞定,需要的朋友可以參考下
    2023-10-10

最新評論