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

Java中的static關(guān)鍵字修飾屬性和方法(推薦)

 更新時間:2022年04月14日 14:27:53   作者:俚語h。  
這篇文章主要介紹了Java中的static關(guān)鍵字修飾屬性和方法,包括哪些成員屬性可以被static修飾,靜態(tài)屬性的訪問方法示例詳解,需要的朋友可以參考下

static關(guān)鍵字

static關(guān)鍵詞與對象無關(guān)。
static關(guān)鍵字主要修飾四個部分的內(nèi)容

這里我們主要介紹static修飾屬性和修飾方法。

1.static修飾屬性(靜態(tài)屬性)

1.1.哪些成員屬性可以被static修飾。

我們把static修飾的屬性稱為靜態(tài)屬性,又叫類屬性。一個類里面的所有實(shí)例的這個屬性值都相同,我們就可以把這個屬性用static修飾,所有實(shí)例共享這個屬性值。靜態(tài)屬性在程序運(yùn)行中是保存在方法區(qū)中的,而非靜態(tài)成員屬性在創(chuàng)建一個個實(shí)例對象時,和這個對象一樣存儲在堆區(qū)。

1.1.1.所有實(shí)例的某個屬性的值是一樣的,就可以使用static關(guān)鍵字修飾

例如:生活在同一個城市的所有人的所在地區(qū)屬性值是一樣的。
那么在定義這個屬性時就可以使用static關(guān)鍵字修飾。

public class Person {
    String name;
    int    age;
    String sex;
    //所在地區(qū)
    static String country;
}
1.1.2.類中的final常量

使用final修飾的常量的值是不能夠被改變的,那么就意味著這個類中,所有實(shí)例的這個屬性的值是一樣的。非靜態(tài)成員屬性每次在創(chuàng)建實(shí)例時都會開辟內(nèi)存,如果將final修飾的常量定義成靜態(tài)屬性,就可以節(jié)省每次創(chuàng)建實(shí)例后的一點(diǎn)內(nèi)存。
注意:定義final成員屬性時一定要賦初值。

public class Person {
    String name;
    String sex;
    //所在地區(qū)
    static String country;
    static final int age=18;

1.2.靜態(tài)屬性的訪問。

1.靜態(tài)屬性又稱為類屬性,對靜態(tài)屬性的訪問不需要創(chuàng)建對象,可以直接使用類名稱去訪問。

public class Person {
    String name;
    int    age;
    String sex;
    //所在地區(qū)
    static String country;

    public static void main(String[] args) {
        System.out.println(Person.country);
    }
}

2.如果這個類里面已經(jīng)創(chuàng)建了實(shí)例對象,也可以通過實(shí)例對象訪問靜態(tài)屬性。(不推薦)

public class Person {
    String name;
    int    age;
    String sex;
    //所在地區(qū)
    static String country;

    public static void main(String[] args) {
        Person per1=new Person();
        System.out.println(per1.country);
    }
}

我們就以前面這段代碼解釋一下代碼運(yùn)行過程中內(nèi)存中的變化。

思考題:
1.我們可以在方法中定義靜態(tài)變量嗎?
答:不可以。方法中的變量是方法在被調(diào)用之后在棧區(qū)中存儲的,而靜態(tài)變量存在方法區(qū)的,不可能存在一個變量既存儲在方法區(qū)又存儲在棧區(qū)。
2.

public class Person {
    String name;
    String sex;
    //所在地區(qū)
    static String country;
    static final int age=18;

    public static void main(String[] args) {
        Person per1=new Person();
        per1=null;
        System.out.println(per1.name);
    }
}

上面這串代碼在運(yùn)行時會出現(xiàn)

即:空指針異常,這段代碼中,per1引用指向的地址為空。
那么

public class Person {
    String name;
    String sex;
    //所在地區(qū)
    static String country;
    static final int age=18;

    public static void main(String[] args) {
        Person per1=new Person();
        per1=null;
        System.out.println(per1.country);
    }
}

這段代碼可以運(yùn)行嗎?
答:可以的。因?yàn)閏onutry屬性是靜態(tài)屬性。運(yùn)行這段代碼的時候系統(tǒng)會識別到是Person類中的,per1.country就相當(dāng)于Person.country。所以不會出現(xiàn)空指針異常。

2.static關(guān)鍵字修飾方法

static關(guān)鍵字修飾的方法又叫類方法,工具方法,靜態(tài)方法。同樣的,他也是可以直接使用類名稱.方法名稱調(diào)用。沒有對象就可以訪問。

1.那些方法可以使用static修飾

1.工具類的方法設(shè)置為static方法
例如:
Arrays.sort(int [ ]):傳入一個int[ ]就可以使用,不需要創(chuàng)建對象去使用
2.一個程序的主方法
程序的主方法就是程序的入口,如果設(shè)置成非靜態(tài)方法,那么主方法的使用就需要創(chuàng)建對象,而程序都沒有入口進(jìn)入,怎么去創(chuàng)建對象,程序就無法運(yùn)行。因此程序的主方法要設(shè)置成靜態(tài)方法,直接使用,不需要創(chuàng)建對象。

2.常見的問題

1.靜態(tài)方法能否訪問成員變量和成員方法
答:不能。靜態(tài)方法的訪問是不需要創(chuàng)建對象的,也就是說靜態(tài)方法使用中是沒有對象的,而成員方法和成員變量的使用是需要創(chuàng)建對象的,所以靜態(tài)方法是無法訪問成員變量和成員方法。
2.成員方法能否訪問靜態(tài)屬性和靜態(tài)方法。
答:可以,成員方法的訪問前提是有對象,靜態(tài)方法和靜態(tài)屬性的訪問是沒有前提條件的。因此成員方法都可以訪問,那么靜態(tài)方法和靜態(tài)屬性是一定可以訪問的
3.普通的類能否使用static修飾(不是內(nèi)部類)。
答:不可以。類定義出來就是產(chǎn)生相應(yīng)實(shí)例對象的,而用static修飾之后這個類沒有對象就可以調(diào)用了,這個類就沒有存在的意義了。在編譯過程中程序也會報錯。

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

相關(guān)文章

  • Java中的泛型和泛型通配符詳解

    Java中的泛型和泛型通配符詳解

    這篇文章主要介紹了Java中的泛型和泛型通配符詳解,泛型的作用就是在編譯的時候能夠檢查類型安全,并且所有的強(qiáng)制轉(zhuǎn)換都是自動和隱式的在沒有泛型的情況的下,通過對類型Object的引用來實(shí)現(xiàn)參數(shù)的“任意化”,需要的朋友可以參考下
    2023-07-07
  • IntelliJ IDEA2020.2.2創(chuàng)建Servlet方法及404問題

    IntelliJ IDEA2020.2.2創(chuàng)建Servlet方法及404問題

    這篇文章主要介紹了IntelliJ IDEA2020.2.2創(chuàng)建Servlet方法及404問題,這里小編使用的2020.2.2企業(yè)破解版本,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 解決springboot+shiro 權(quán)限攔截失效的問題

    解決springboot+shiro 權(quán)限攔截失效的問題

    這篇文章主要介紹了解決springboot+shiro 權(quán)限攔截失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • IDEA啟動報錯Internal?error.?Please?refer?to?https://jb.gg/ide/critical-startup-errors解決辦法

    IDEA啟動報錯Internal?error.?Please?refer?to?https://jb.gg/i

    這篇文章主要介紹了IDEA啟動報錯Internal?error.?Please?refer?to?https://jb.gg/ide/critical-startup-errors解決辦法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • idea編譯時不提示任何錯誤信息的問題及解決

    idea編譯時不提示任何錯誤信息的問題及解決

    這篇文章主要介紹了idea編譯時不提示任何錯誤信息的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java List轉(zhuǎn)換成String數(shù)組幾種實(shí)現(xiàn)方式詳解

    Java List轉(zhuǎn)換成String數(shù)組幾種實(shí)現(xiàn)方式詳解

    這篇文章主要介紹了Java List轉(zhuǎn)換成String數(shù)組幾種實(shí)現(xiàn)方式詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 淺談web項(xiàng)目讀取classpath路徑下面的文件

    淺談web項(xiàng)目讀取classpath路徑下面的文件

    這篇文章主要介紹了淺談web項(xiàng)目讀取classpath路徑下面的文件,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • java中volatile關(guān)鍵字的作用與實(shí)例代碼

    java中volatile關(guān)鍵字的作用與實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于java中volatile關(guān)鍵字的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • springboot集成Mybatis的詳細(xì)教程

    springboot集成Mybatis的詳細(xì)教程

    今天給大家?guī)淼倪€是關(guān)于springboot的相關(guān)知識,文章圍繞著springboot集成Mybatis的詳細(xì)教程展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java中構(gòu)造方法set/get和toString的使用詳解

    Java中構(gòu)造方法set/get和toString的使用詳解

    這篇文章主要介紹了Java中構(gòu)造方法set/get和toString的使用詳解,構(gòu)造函數(shù)的最大作用就是創(chuàng)建對象時完成初始化,當(dāng)我們在new一個對象并傳入?yún)?shù)的時候,會自動調(diào)用構(gòu)造函數(shù)并完成參數(shù)的初始化,需要的朋友可以參考下
    2019-07-07

最新評論