關於這部份我參考了「Ken Yang筆記」,寫得很清楚,例子也很好懂。
class test{
static int iValue = 0;
public test() {
}
}
public class main {
public static void main(String[] argv) {
test test1 = new test();
test test2 = new test();
System.out.println(test1.iValue);
test2.iValue = 10;
System.out.println(test2.iValue);
System.out.println(test1.iValue);
}
}
特性1:只有一個值
class 的test裡面宣告一個ivalue的static = 0,
所以test1.ivalue印出來是多少呢?當然是1嘛。
接下來,test2.ivalue賦值為10,
所以,test2.ivalue印出來會是多少呢?答案是10,沒有問題。
再來,回頭把test1.ivalue印出來又會是多少呢?很簡單嘛,是0,
真的嗎?實際結果是10啊,為什麼呢?這就是static的持性,
Ivalue只佔一組記憶體,不管你是test1到test10,itest的值卻只有一個。
特性2:可直接取用
class test{
static int iValue = 0;
public test() {
}
}
public class main {
public static void main(String[] argv) {
System.out.println(test.iValue);
}
}
即使不new object出來,可直接取用test.ivalue。
換言之,如果class test裡面的static刪掉,則不能直接取用。