91亚洲精品国产第一区_和女领导做爰呻吟_天干天夜啪天天碰_黄色在线免费电影

不平凡軟件,始于2014

首頁 | 加入收藏 | 設為首頁

15565077981

您當前的位置:首頁 >  精彩分享>詳細

不平凡和您談---【Java基礎】static關鍵字相關

發布者: 鄭州軟件開發 10-30

static關鍵字特點:

  • 隨著類的加載而加載。
  • 優先于對象存在。
  • 被所有對象共享
  • 可以直接被類名調用。

    使用注意:

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

    看了上面是不是想睡覺了,單純的概念是挺煩人的,那下面讓我們在實際代碼中來加深對他們的認知。

    方法的調用可以分為兩種:

  1. 對象調用: 對象.方法(實參)
  2. 類調用: 這個方法所在類的名字.方法(實參)//前提是這個方法必須被static修飾。

    沒有使用static修飾的方法或字段,屬于對象。為實例成員。

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

    對他們的調用:

    若是實例成員:只能通過對象來調用。

    若是類成員:可以通過類名調用,也可以通過對象來調用。

    好吧,下面小程序來了。

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

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

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

    上面程序也說明了上面提到的:若是實例成員:只能通過對象來調用。若是類成員:可以通過類名調用,也可以通過對象來調用。但是在調用類成員時建議用類名來調用,因為在底層,對象來調用類成員,也會轉換為類名調用。

    下面必須提到的是:靜態區域。它是在JVM內存中的一塊專門存儲類成員的存儲區域。

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

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

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

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


結果如下:

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

    而沒被static修飾的age(實例成員)則不會有這種效果。(PS:int定義一個數字默認值為0,所以d2.age輸出0)


返回列表

上一篇

商城網站賣產品運用好“綁”字可以讓你的銷量直線上升

下一篇

軟件定制的好處

相關新聞

相關案例