Java 中的static屬性 主要用于保持?jǐn)?shù)據(jù)唯一性。 你可以用Random測試一下 import java.util.Random;
class Test1{
Random ran = new Random();
static Random ran2 = new Random(); static int i = ran2.nextInt(100); static int a =ran2.nextInt(100);
int b = ran.nextInt(100);
int c = ran.nextInt(100);
public Test1(){
System.out.println("靜態(tài)屬性i = " + i + ";a = " +a ); System.out.println("非靜態(tài)屬性 b = " + b +";c = " +c );
}
public static void method(){
i=90; } }
class Test{
public static void main(String[] args){ new Test1(); new Test1();
}
}
從上面的運(yùn)行結(jié)果我們可以看到靜態(tài)屬性的值在內(nèi)存中是唯一一份的(即只初始化一次)。 當(dāng)你感覺你需要數(shù)據(jù)唯一性,或者有時(shí)候你不想創(chuàng)建整個(gè)類的對(duì)象,經(jīng)常用到其中一個(gè)對(duì)象而已的話,那么干脆就把這個(gè)變量或?qū)ο蠖x為static。 可以直接用類名引用! 靜態(tài)屬性不屬于類實(shí)例的一部分,你可以在上面Test1的構(gòu)造函數(shù)中見證這一點(diǎn)。 即使我們實(shí)例了Test1兩次,但i 和 a 依然不變。
至于說什么時(shí)候可以用和不可以用的話 那么就是static變量只能做為全局變量,假設(shè)你把static聲明在方法里那么一定會(huì)出錯(cuò)的。因?yàn)榫植孔兞柯暶鳛閟tatic是完全沒有意義的。
修飾成員使數(shù)據(jù)一直存于內(nèi)存,已方便調(diào)用,適合常量定義 修飾方法,無需初始化該方法所在類的對(duì)象,直接可以通過類名.方法名的方式來調(diào)用,方便快捷。
static 修飾的變量 就是在程序啟動(dòng)的時(shí)候在內(nèi)存一直存在,直到程序關(guān)閉。
static 是靜態(tài),
他告訴虛擬機(jī),說,我用這個(gè)修飾的,你給我放在靜態(tài)池里面(內(nèi)存),并且,先給我執(zhí)行。 static 修飾的,會(huì)先于非靜態(tài)修飾的, 比如 1. private String abc = "123"; 2. private static String abc = "123" 1的執(zhí)行條件是,當(dāng)虛擬機(jī),實(shí)例化了某個(gè)類,這個(gè)abc才賦值。 2.的執(zhí)行條件是,當(dāng)虛擬機(jī),一執(zhí)行,就把a(bǔ)bc賦值了。這就是為什么,靜態(tài)方法,不需要實(shí)例化類,就能使用的原因, |
|