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