JAVA中static什么作用?


是靜態修飾符,什么叫靜態修飾符呢?大家都知道,在程序中任何變量或者代碼都是在編譯時由系統自動 分配內存來存儲的,而所謂靜態就是指在編譯后所分配的內存會一直存在,直到程序退出內存才會釋放這個空間,也就是只要程序在運行,那么這塊內存就會一直存在。這樣做有什么意義呢?
在Java程序里面,所有的東西都是對象,而對象的抽象就是類,對於一個類而言,如果要使用他的成員,那么普通情況下必須先實例化對象后,通過對象的引用才能夠訪問這些成員,但是有種情況例外,就是該成員是用static聲明的(在這里所講排除了類的訪問控制),例如:
未聲明為static
class ClassA{
int b;
public void ex1(){

}
}
class ClassB{
void ex2{
in t i;
ClassA a = new ClassA();
i = a.b; //這里通過 對象引用訪問成員變量b
a.ex1; //這里通過 對象引用訪問成員函數ex1
}
}

聲明為static
class ClassA{
static int b;
static void ex1(){

}
}
class ClassB{
void ex2{
in t i;
i = ClassA.b; //這里通過類名訪問成員變量b
ClassA.ex1; //這里通過類名訪問成員函數ex1
}
}
通過以上兩種比較,就可以知道static用來修飾類成員的主要作用了,在java類庫當中有很多類成員都聲明為static,可以讓用戶不需要實例化對象就可以引用成員,最基本的有Integer.parseInt(),Float.parseFloat()等等用來把對象轉換為所需要的基本數據類型。這樣的變量和方法我們又叫做類變量和類方法。
接下來講一下被static修飾后的變量的值的問題,剛才在前面講過,被static修飾后的成員,在編譯時由 內存分配一塊內存空間,直到程序停止運行才會釋放,那么就是說該類的所有對象都會共享這塊內存空間,看一下下面這個例子:
class TStatic{
static in t i;

public TStatic(){
i = 4;
}

public TStatic(int j){
i = j;
}

public static void main(S tring args[]){
TStatic t = new TStatic(5); //聲明 對象引用,並實例化
TStatic tt = new TStatic(); //同上
System.out.println( t.i);
System.out.println(t t.i );
System.out.println( t.i);
}
}
這段代碼里面Tstatic類有一個static的int變量I,有兩個 構造函數,第一個用於初始化I為4,第二個用於初始化i為傳進函數的值,在main中所傳的值是5,程序首先聲明對象的引用t,然后調用帶參數的 構造函數實例化對象,此時對象t的成員變量I的值為5,接着聲明對象tt,調用無參數的 構造函數,那么就把對象tt的成員變量i的值初始化為4了,注意了,在這里i是static,那就是說該類的所有對象都共享該內存,那也就是說在實例化對象tt的時候改變了i的值,那么實際上對象 t的i值也變了,因為實際上他們引用的是同一個成員變量。最后打印的結果是三個4。呵呵,寫到這里大家是否明白了呢?不明白就再看看書或者多寫幾個例子印證一下,呵呵。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM