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

Java中static與instance的區(qū)別及作用詳解

 更新時(shí)間:2023年07月04日 10:06:11   作者:LTLXX  
這篇文章主要為大家介紹了Java中static與instance的區(qū)別及作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1.概念:

java中有個(gè)關(guān)鍵字叫static,翻譯為靜態(tài),用來修飾屬性和方法。它所修飾的屬性叫靜態(tài)屬性或類變量,修飾的方法叫靜態(tài)方法或者類方法。而沒有使用static修飾的屬性和方法就叫實(shí)例變量和方法,即instance翻譯為實(shí)例的意思。

2.static與instance的作用:

static實(shí)現(xiàn)了在同一個(gè)類的對象中共享數(shù)據(jù)。即同一個(gè)類中的不同對象都需要用到的屬性,就像一個(gè)班級類,它的每個(gè)學(xué)生對象都會(huì)用到班級名稱,是他們所共有的,每一個(gè)學(xué)生對象都共享這個(gè)班級名稱,就需要使用static來修飾。

而instance則是每個(gè)學(xué)生對象自己所獨(dú)有的屬性,例如每個(gè)學(xué)生對象都有自己的名字、身高、年齡等屬性就是instance修飾,但只有static才需要特別寫出來,instance就不用寫出來。

3.static修飾屬性和方法:

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

   static String className;

2.static修飾方法(靜態(tài)方法):

   public static void getScore(){
    }

4.instance屬性和方法:

1.實(shí)例屬性:

   String name;

2.實(shí)例方法:

   public void getScore(){
    }

5.static與instance的區(qū)別:

1.加載時(shí)間不同:

  • 靜態(tài)屬性和方法是在首次出現(xiàn)類名時(shí),為類的靜態(tài)屬性和方法分配內(nèi)存。
  • 實(shí)例屬性和方法是類new對象的時(shí)候,為類的實(shí)例屬性和方法分配內(nèi)存。

2.份數(shù)不同:

  • 靜態(tài)屬性和方法只有一份多個(gè)對象享用,而實(shí)例屬性和方法是有多少個(gè)對象就有多少份。

3.初始化方法不同:

靜態(tài)變量是除了通過定義時(shí)手動(dòng)確定外還可以通過static塊(靜態(tài)塊)來初始化。

例如:

 static int age=0;    //定義時(shí)手動(dòng)初始化。
//靜態(tài)塊,為static變量初始化,靜態(tài)塊在首次類名出現(xiàn)時(shí)調(diào)用,但后于分配靜態(tài)變量。
 static{
        age = 20;
    }

靜態(tài)塊:

類名首次出現(xiàn)時(shí),先為靜態(tài)變量分配內(nèi)存,然后調(diào)用靜態(tài)塊,靜態(tài)塊可以為靜態(tài)變量初始化。靜態(tài)塊只在類名首次出現(xiàn)時(shí)調(diào)用一次,以后再也不調(diào)用了。

  • 動(dòng)態(tài)變量則是除了定義時(shí)手動(dòng)賦值外還通過構(gòu)造方法賦值(一般用構(gòu)造方法初始化)

例如:

    String name= "張三";    //定義時(shí)手動(dòng)初始化。
    Test(String name){       //帶一個(gè)參數(shù)的構(gòu)造方法。
        this.name=name;
    }
    public static void main(String[] args) {
        Test t1=new Test("張三");     //通過構(gòu)造方法初始化。
    }

4.內(nèi)存存放地址不同:

  • 靜態(tài)變量被分配在方法區(qū)中,常駐內(nèi)存,永不回收。
  • 實(shí)例變量被分配在堆中,用完回收。

5.調(diào)用方法不同:

  • 靜態(tài)方法只可以調(diào)靜態(tài)方法和變量不可以調(diào)用實(shí)例方法和變量。
  • 實(shí)例方法既可以調(diào)用實(shí)例變量和方法還可以調(diào)用靜態(tài)變量和方法。
    原因:靜態(tài)方法是在首次出現(xiàn)類名時(shí)分配內(nèi)存調(diào)用的此時(shí)并不知道有沒有實(shí)例變量和方法。

案例分析:

public class Test {
    static int age;
    public static void main(String[] args) {
        age = 2;   //此方法正確,都是靜態(tài)的,類名首次出現(xiàn)就分內(nèi)存
    }
}
public class Test {
    public static void main(String[] args) {
    }
    public void sayHello(){
    }
    public static void sayHi(){   //報(bào)錯(cuò),不知道sayHello()有沒有
        sayHello();
    }
}
public class Test {
    int age;
    public static void main(String[] args) {   //報(bào)錯(cuò),不知道age屬性有沒有。
        age = 2;
    }
}
public class Test {
    int age;
    public static void main(String[] args) {   //正確,創(chuàng)建對象new Test()調(diào)用屬性age表明已存在age屬性就能調(diào)用
        new Test().age = 2;
    }
}

以上就是Java中static與instance的區(qū)別及作用詳解的詳細(xì)內(nèi)容,更多關(guān)于Java static instance區(qū)別的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java實(shí)現(xiàn)簡單的抽牌游戲

    Java實(shí)現(xiàn)簡單的抽牌游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單的抽牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Java接口定義與實(shí)現(xiàn)方法分析

    Java接口定義與實(shí)現(xiàn)方法分析

    這篇文章主要介紹了Java接口定義與實(shí)現(xiàn)方法,簡單說明了接口的概念、功能,并結(jié)合實(shí)例形式分析了接口的相關(guān)定義與使用技巧,需要的朋友可以參考下
    2017-11-11
  • MyBatis動(dòng)態(tài)SQL之<choose><when><o(jì)therwise>標(biāo)簽的使用

    MyBatis動(dòng)態(tài)SQL之<choose><when><o(jì)therwise>標(biāo)簽的使用

    MyBatis中動(dòng)態(tài)語句choose-when-otherwise 類似于Java中的switch-case-default語句,本文就來介紹一下MyBatis動(dòng)態(tài)SQL之<choose><when><o(jì)therwise>標(biāo)簽的使用,感興趣的可以了解一下
    2023-09-09
  • 使用代碼生成器自定義Entity的部分注解

    使用代碼生成器自定義Entity的部分注解

    這篇文章主要介紹了使用代碼生成器自定義Entity的部分注解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Mybatis-Plus可能導(dǎo)致死鎖的問題分析及解決辦法

    Mybatis-Plus可能導(dǎo)致死鎖的問題分析及解決辦法

    這篇文章給大家主要介紹了Mybatis-Plus可能導(dǎo)致死鎖的問題分析及解決辦法,文中通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-12-12
  • js-tab選項(xiàng)卡

    js-tab選項(xiàng)卡

    本文主要介紹了js-tab選項(xiàng)卡的示例代碼。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Java多線程通信問題深入了解

    Java多線程通信問題深入了解

    下面小編就為大家?guī)硪黄钊肜斫釰AVA多線程之線程間的通信方式。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-07-07
  • Java獲取兩個(gè)集合List的交集、補(bǔ)集、并集(相加)和差集(相減)的幾種方式

    Java獲取兩個(gè)集合List的交集、補(bǔ)集、并集(相加)和差集(相減)的幾種方式

    這篇文章主要介紹了Java獲取兩個(gè)集合List的交集、補(bǔ)集、并集(相加)和差集(相減)的幾種方式,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2025-04-04
  • SpringBoot路徑映射實(shí)現(xiàn)過程圖解

    SpringBoot路徑映射實(shí)現(xiàn)過程圖解

    這篇文章主要介紹了SpringBoot路徑映射實(shí)現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Windows Zookeeper安裝過程及啟動(dòng)圖解

    Windows Zookeeper安裝過程及啟動(dòng)圖解

    這篇文章主要介紹了Windows Zookeeper安裝過程及啟動(dòng)圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12

最新評論