不平凡軟件,始于2014

首頁(yè) | 加入收藏 | 設(shè)為首頁(yè)

15565077981

您當(dāng)前的位置:首頁(yè) >  精彩分享>詳細(xì)

不平凡和您談---【Java基礎(chǔ)】static關(guān)鍵字相關(guān)

發(fā)布者: 鄭州軟件開發(fā) 10-30

static關(guān)鍵字特點(diǎn):

  • 隨著類的加載而加載。
  • 優(yōu)先于對(duì)象存在。
  • 被所有對(duì)象共享
  • 可以直接被類名調(diào)用。

    使用注意:

  • 靜態(tài)方法只能訪問(wèn)靜態(tài)成員。
  • 但非靜態(tài)成員可以訪問(wèn)靜態(tài)成員。
  • 靜態(tài)方法中不能使用this,super關(guān)鍵字。
  • 主方法(main)是靜態(tài)的。

    看了上面是不是想睡覺(jué)了,單純的概念是挺煩人的,那下面讓我們?cè)趯?shí)際代碼中來(lái)加深對(duì)他們的認(rèn)知。

    方法的調(diào)用可以分為兩種:

  1. 對(duì)象調(diào)用: 對(duì)象.方法(實(shí)參)
  2. 類調(diào)用: 這個(gè)方法所在類的名字.方法(實(shí)參)//前提是這個(gè)方法必須被static修飾。

    沒(méi)有使用static修飾的方法或字段,屬于對(duì)象。為實(shí)例成員。

    使用static修飾的方法或字段,屬于類。為類成員。

    對(duì)他們的調(diào)用:

    若是實(shí)例成員:只能通過(guò)對(duì)象來(lái)調(diào)用。

    若是類成員:可以通過(guò)類名調(diào)用,也可以通過(guò)對(duì)象來(lái)調(diào)用。

    好吧,下面小程序來(lái)了。

class dog//一群狗狗
{
    String name;
    int age;//沒(méi)有使用static修飾,屬于對(duì)象,為實(shí)例成員。
    //狗的名字,年齡,每只狗都不同,能隨意變。

    static int num=100;//使用static修飾,屬于類,為類成員。
    //而狗的總數(shù)是不變的。
}
class day5lesson2
{
    public static void main(String[] args)
    {
        System.out.println("通過(guò)類名來(lái)調(diào)用類成員-->"+dog.num);//編譯通過(guò)
        //System.out.println("通過(guò)類名來(lái)調(diào)用實(shí)例成員-->"+dog.name);//編譯不通過(guò)
        System.out.println("通過(guò)對(duì)象來(lái)調(diào)用類成員-->"+new dog().num);//運(yùn)行通過(guò)
        System.out.println("通過(guò)對(duì)象來(lái)調(diào)用實(shí)例成員-->"+new dog().name);//運(yùn)行通過(guò)
    }
}

上面代碼中被注釋掉的不能通過(guò)的代碼的錯(cuò)題提示如下:

    上面程序也說(shuō)明了上面提到的:若是實(shí)例成員:只能通過(guò)對(duì)象來(lái)調(diào)用。若是類成員:可以通過(guò)類名調(diào)用,也可以通過(guò)對(duì)象來(lái)調(diào)用。但是在調(diào)用類成員時(shí)建議用類名來(lái)調(diào)用,因?yàn)樵诘讓?,?duì)象來(lái)調(diào)用類成員,也會(huì)轉(zhuǎn)換為類名調(diào)用。

    下面必須提到的是:靜態(tài)區(qū)域。它是在JVM內(nèi)存中的一塊專門存儲(chǔ)類成員的存儲(chǔ)區(qū)域。

    我們修改一下上面一段程序的主方法:

class dog//一群狗狗
{
    String name;
    int age;//沒(méi)有使用static修飾,屬于對(duì)象,為實(shí)例成員。
    //狗的名字,年齡,每只狗都不同,能隨意變。
    static int num=100;//使用static修飾,屬于類,為類成員。
    //而狗的總數(shù)是不變的。
}
class day5lesson2
{
    public static void main(String[] args)
    {
        dog d1=new dog();
        dog d2=new dog();//聲明2個(gè)對(duì)象

        d1.num=111;//用d1修改類成員。
        System.out.println("d1.num="+d1.num);
        System.out.println("d2.num="+d2.num);//輸出

        d1.age=111;//用d1修改實(shí)例成員。
        System.out.println("d1.age="+d1.age);
        System.out.println("d2.age="+d2.age);//輸出
    }
}


結(jié)果如下:

    為什么是這種結(jié)果呢?這就是static修飾的字段屬于類成員,存儲(chǔ)在專門的靜態(tài)區(qū)域中。(PS:在類加載時(shí)就為其創(chuàng)建空間,所以比較消耗性能)。一般 static方法用在做工具類的方法的時(shí)候,如Arrays類(java.util.Arrays)中,大量使用static方法,可在JDK API中查看。

    而沒(méi)被static修飾的age(實(shí)例成員)則不會(huì)有這種效果。(PS:int定義一個(gè)數(shù)字默認(rèn)值為0,所以d2.age輸出0)


返回列表

上一篇

商城網(wǎng)站賣產(chǎn)品運(yùn)用好“綁”字可以讓你的銷量直線上升

下一篇

軟件定制的好處

相關(guān)新聞

相關(guān)案例