詳解Java中staitc關(guān)鍵字
一、static定義
static是靜態(tài)修飾符意思,什么叫靜態(tài)修飾符呢?大家都知道,在程序中任何變量或者代碼都是在編譯時(shí)由系統(tǒng)自動(dòng)分配內(nèi)存來(lái)存儲(chǔ)的,而所謂靜態(tài)就是指在編譯后所分配的內(nèi)存會(huì)一直存在,直到程序退出內(nèi)存才會(huì)釋放這個(gè)空間,也就是只要程序在運(yùn)行,那么這塊內(nèi)存就會(huì)一直存在。這樣做有什么意義呢?
在Java程序里面,萬(wàn)物皆對(duì)象,而對(duì)象的抽象就是類,對(duì)于一個(gè)類而言,如果要使用他的成員,那么普通情況下必須先實(shí)例化對(duì)象后,通過(guò)對(duì)象的引用才能夠訪問(wèn)這些成員,但是有種情況例外,就是該成員是用static聲明的。
static聲明的靜態(tài)變量可以直接通過(guò)類名調(diào)用!
1 class Demo{ 2 public static void main(String[] args) 3 { 4 Person p = new Person(); 5 System.out.println(p.country); //1、新建對(duì)象調(diào)用 6 System.out.println(Person.country); //2、通過(guò)類名直接調(diào)用 7 } 8 } 9 class Person{ 10 static String country = "china"; 11 } |
二、static特點(diǎn)
由此我們得出static的特點(diǎn)。
a、static是一個(gè)修飾符,用于修飾成員。
b、static修飾的成員被所有的對(duì)象共享。
c、static優(yōu)先于對(duì)象存在,static成員隨著類的加載就已經(jīng)存在。
d、static修飾成員多一種調(diào)用方式--通過(guò)類名調(diào)用。
三、成員變量和靜態(tài)變量區(qū)別?
1.兩個(gè)變量的生命周期同
成員變量隨對(duì)象創(chuàng)建存在,隨對(duì)象回收而釋放。
靜態(tài)變量隨類的加載而存在,同樣也隨著類而消失。
2、調(diào)用方式
成員變量只能被對(duì)象調(diào)用。
靜態(tài)變量能被對(duì)象調(diào)用,還可以被類名調(diào)用。
3、內(nèi)存中存儲(chǔ)位置不同。
成員變量存儲(chǔ)在堆內(nèi)存中。
靜態(tài)變量存儲(chǔ)在方法區(qū)(共享數(shù)據(jù)區(qū))的靜態(tài)區(qū)。
四、靜態(tài)使用注意事項(xiàng)
1、靜態(tài)方法只能訪問(wèn)靜態(tài)成員。
2、靜態(tài)方法中不可以用this或super關(guān)鍵字。
3、主函數(shù)都是靜態(tài)的。
class Demo{ public static void main(String[] args) { Person.show(); } } class Person{ static String country = "china"; String name = "jinfulin"; public static void show() { System.out.print(country); //正確 //System.out.print(name); //錯(cuò)誤 } } |
posted on 2014-11-14 10:02 順其自然EVO 閱讀(351) 評(píng)論(1) 編輯 收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄