更新時(shí)間:2020-10-29 17:24:10 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1184次
雖然java編程是一門實(shí)操性的技術(shù),但是理論知識(shí)對(duì)于學(xué)好java來(lái)說(shuō)也是十分重要的。變量是是java零基礎(chǔ)的人在入門階段需要學(xué)習(xí)的重點(diǎn)內(nèi)容,今天這篇文章帶大家來(lái)學(xué)習(xí)java靜態(tài)變量的相關(guān)知識(shí),學(xué)習(xí)靜態(tài)變量是什么,有什么特點(diǎn)以及怎樣使用,一起來(lái)看下面的內(nèi)容吧。
先來(lái)看java靜態(tài)變量是什么,靜態(tài)變量:內(nèi)存中只有一份,Java虛擬機(jī)(JVM)只為靜態(tài)變量分配一次內(nèi)存,在加載類的過(guò)程中完成靜態(tài)變量的內(nèi)存分配。由于靜態(tài)變量屬于類,與類的實(shí)例無(wú)關(guān),因而可以直接通過(guò)類名訪問這類變量。通過(guò)類名.屬性的方式訪問靜態(tài)變量。

與靜態(tài)變量相對(duì)應(yīng)是靜態(tài)方法,靜態(tài)方法:方法前加static修飾符,表明該方法與某個(gè)具體實(shí)例無(wú)關(guān),僅僅是該類的一個(gè)公共方法。通過(guò)類名.方法的方式訪問靜態(tài)方法。靜態(tài)變量和靜態(tài)方法都屬于靜態(tài)對(duì)象,那么java靜態(tài)對(duì)象有什么好處和優(yōu)點(diǎn)呢?
(1)靜態(tài)對(duì)象的數(shù)據(jù)在全局是唯一的,一改都改。如果你想要處理的東西是整個(gè)程序中唯一的,弄成靜態(tài)是個(gè)好方法。 非靜態(tài)的東西你修改以后只是修改了他自己的數(shù)據(jù),但是不會(huì)影響其他同類對(duì)象的數(shù)據(jù);(2)引用方便。直接用 類名.靜態(tài)方法名或者類名,靜態(tài)變量名就可引用并且直接可以修改其屬性值,不用get和set方法;(3)保持?jǐn)?shù)據(jù)的唯一性。此數(shù)據(jù)全局都是唯一的,修改他的任何一處地方,在程序所有使用到的地方都將會(huì)體現(xiàn)到這些數(shù)據(jù)的修改。有效減少多余的浪費(fèi)。
使用java靜態(tài)變量的優(yōu)點(diǎn):不需要在進(jìn)行bai實(shí)例化。靜態(tài)變量的值,直接賦新值即可,不需要參數(shù)傳遞,之后可以直接進(jìn)行參數(shù)引用即可;靜態(tài)方法可以直接通過(guò)"類名.方法"的形式進(jìn)行方法調(diào)用。通常方法被多次調(diào)用,并且方法中沒有動(dòng)態(tài)方法引用的時(shí)候使用比較方便。
下面是一個(gè)靜態(tài)變量的例子,代碼如下:
class c1c {
private static int num = 0;
private static double pi = 3.14;
private double radius;
private int height;
public c1c(double r,int h)
{
radius = r;
height=h;
num++;
}
public void count()
{
System.out.print("創(chuàng)建了"+num+"個(gè)對(duì)象");
}
double area() {
return pi*radius*radius;
}
double volume() {
return area()*height;
}
}
public class cc{
public static void main(String[] args)
{
c1c volu1=new c1c(2.5,5);
volu1.count();
System.out.println("圓柱1的體積="+volu1.volume());
c1c volu2=new c1c(1.0,2);
volu2.count();
System.out.println("圓柱2的體積="+volu2.volume());
}
}

本例中聲明了一個(gè)靜態(tài)變量num用于記錄程序中共產(chǎn)生了多少個(gè)對(duì)象,因?yàn)閷?duì)象創(chuàng)建時(shí)會(huì)自動(dòng)調(diào)用構(gòu)造方法,所以在構(gòu)造方法中加入了“num++;”語(yǔ)句,這樣每創(chuàng)建一個(gè)對(duì)象就調(diào)用一次構(gòu)造方法,從而每產(chǎn)生一個(gè)對(duì)象,num的值就會(huì)自動(dòng)加1,此時(shí),因?yàn)殪o態(tài)變量是一個(gè)公共的存儲(chǔ)單元,所以類的任何一個(gè)對(duì)象去修改它時(shí),都是在對(duì)同一個(gè)內(nèi)存單元做操作。去掉聲明num的static后:private int num = 0。

可以看到num的值沒有變化,這是因?yàn)閚um成為實(shí)例變量后,對(duì)創(chuàng)建的不同對(duì)象來(lái)說(shuō),都有自己獨(dú)立的內(nèi)存來(lái)保存它的值,且不與其他對(duì)象共享,因此若修改了volu1的num值,volu2的num并不受影響。
以上就是對(duì)java靜態(tài)變量相關(guān)知識(shí)的介紹,都是關(guān)于java靜態(tài)變量的基礎(chǔ)內(nèi)容,所以希望大家認(rèn)真學(xué)習(xí),也希望上面的內(nèi)容能幫助朋友們理解靜態(tài)變量,同時(shí)可以在java教程中學(xué)習(xí)java靜態(tài)變量的使用。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)