JAVA中有關(guān)鍵字static
,可以修飾方法或者字段。那么,static
修飾的方法和字段,與沒有static
修飾的方法和字段,有什么區(qū)別呢?
在JAVA中,大部分方法和字段都是沒有被static
修飾的,也被稱為實例變量和實例方法,而被static
修飾的則叫做靜態(tài)變量和靜態(tài)方法。
實例方法一般是一個new 出來的對象關(guān)聯(lián)的方法,只能在一個new出來的實例上使用,實例變量也是與new 出來的對象關(guān)聯(lián),不同的對象之間實例變量不互相影響。
實例方法內(nèi)部可以使用實例變量和靜態(tài)變量。
下面是一個相關(guān)示例:
// 類聲明
class ClassA {// 實例變量
private int val;
public ClassA(int val) {this.val = val;
}
// 實例方法
public void hello() {// 使用實例變量
System.out.println("hello" + val);
}
}
// 使用
ClassA classA1 = new ClassA(1);
// 使用實例方法
// 輸出 hello1
classA1.hello();
ClassA classA2 = new ClassA(2);
// 輸出 hello2
// classA2里面的val變量是獨立的,與classA1無關(guān)
classA2.hello();
靜態(tài)方法和靜態(tài)變量靜態(tài)變量和靜態(tài)方法是獨立存在的,并且每個類的靜態(tài)變量只有一份,不論這個類new了多少對象。所有new出來的對象都可以訪問到這一份數(shù)據(jù),對這份數(shù)據(jù)的任何修改,其他的實例都可以看到。
靜態(tài)方法由于是獨立存在的,不和任何一個實例關(guān)聯(lián),所以不能直接訪問實例變量和實例方法。如果想要訪問,只能通過某個實例的引用來訪問實例變量和實例方法。
以下面這個類為例,解釋一下上面的關(guān)系:
class ClassA {// 實例變量
private int val;
private static int staticVal;
}
關(guān)系如圖所示:
可以看到,靜態(tài)變量和靜態(tài)方法是獨立的,各個實例只是單向地訪問他們。另外,他們不僅僅可以被這個類的實例訪問,也可以被其他類直接訪問。
靜態(tài)變量和靜態(tài)方法的訪問方式靜態(tài)變量和靜態(tài)方法一般通過類名訪問,比如ClassA.staticVal
,它可以被實例的引用訪問,但是一般不建議,比如:classA1.staticVal
。使用類名訪問可以明確標(biāo)識出這是靜態(tài)變量,可以使代碼更加清晰。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
新聞名稱:Java中static和非static有什么區(qū)別-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://muchs.cn/article34/csgise.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、標(biāo)簽優(yōu)化、軟件開發(fā)、商城網(wǎng)站、網(wǎng)站制作、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容