不平凡軟件,始于2014
不平凡和您談---【Java基礎】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//一群狗狗
結果如下:
為什么是這種結果呢?這就是static修飾的字段屬于類成員,存儲在專門的靜態區域中。(PS:在類加載時就為其創建空間,所以比較消耗性能)。一般 static方法用在做工具類的方法的時候,如Arrays類(java.util.Arrays)中,大量使用static方法,可在JDK API中查看。
而沒被static修飾的age(實例成員)則不會有這種效果。(PS:int定義一個數字默認值為0,所以d2.age輸出0)
相關新聞換一組