不平凡軟件,始于2014
首頁(yè) | 加入收藏 | 設(shè)為首頁(yè)
不平凡軟件,始于2014
首頁(yè) | 加入收藏 | 設(shè)為首頁(yè)
您當(dāng)前的位置:首頁(yè) > 精彩分享>詳細(xì)
不平凡和您談---【Java基礎(chǔ)】static關(guān)鍵字相關(guān)
看了上面是不是想睡覺(jué)了,單純的概念是挺煩人的,那下面讓我們?cè)趯?shí)際代碼中來(lái)加深對(duì)他們的認(rèn)知。
方法的調(diào)用可以分為兩種:
沒(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//一群狗狗
結(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)
相關(guān)新聞換一組