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

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

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

static關(guān)鍵字

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

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

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

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

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

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

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

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

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

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

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

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

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.如果這個(gè)類里面已經(jīng)創(chuàng)建了實(shí)例對(duì)象,也可以通過實(shí)例對(duì)象訪問靜態(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ū)中存儲(chǔ)的,而靜態(tài)變量存在方法區(qū)的,不可能存在一個(gè)變量既存儲(chǔ)在方法區(qū)又存儲(chǔ)在棧區(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)行時(shí)會(huì)出現(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)行這段代碼的時(shí)候系統(tǒng)會(huì)識(shí)別到是Person類中的,per1.country就相當(dāng)于Person.country。所以不會(huì)出現(xiàn)空指針異常。

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

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

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

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

2.常見的問題

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

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

相關(guān)文章

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

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

    這篇文章主要介紹了Java中的泛型和泛型通配符詳解,泛型的作用就是在編譯的時(shí)候能夠檢查類型安全,并且所有的強(qiáng)制轉(zhuǎn)換都是自動(dòng)和隱式的在沒有泛型的情況的下,通過對(duì)類型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ì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 解決springboot+shiro 權(quán)限攔截失效的問題

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

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

    IDEA啟動(dòng)報(bào)錯(cuò)Internal?error.?Please?refer?to?https://jb.gg/i

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

    idea編譯時(shí)不提示任何錯(cuò)誤信息的問題及解決

    這篇文章主要介紹了idea編譯時(shí)不提示任何錯(cuò)誤信息的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    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路徑下面的文件,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • java中volatile關(guān)鍵字的作用與實(shí)例代碼

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

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

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

    今天給大家?guī)淼倪€是關(guān)于springboot的相關(guān)知識(shí),文章圍繞著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)建對(duì)象時(shí)完成初始化,當(dāng)我們?cè)趎ew一個(gè)對(duì)象并傳入?yún)?shù)的時(shí)候,會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)并完成參數(shù)的初始化,需要的朋友可以參考下
    2019-07-07

最新評(píng)論