java static修飾符的問題

不設限發表於2011-12-07

下面的例子是一個使用了static修飾符修飾自己變數的類

按照通常的解釋是被static修飾的變數是被所有物件共享

的,但是如果你執行一下下面的程式,你就會發現不同的對

象所列印出來的結果是不一樣的,者就說明了,其實它們內

部引用的並不是同一值,因此並不能說被static變數所修飾

的變數是共享的,因為如果是共享的話,那麼所有人引用到

的值應該是一致的,但是結果卻不一致.



public class Test {
public static void main(String[] args) {
Person p1=new Person();
Person p2=new Person();
Person p3=new Person();
System.out.println(p3.getI());
System.out.println(p1.getI());
System.out.println(Person.total);
Person.total=1000;
System.out.println(p1.total);
}
}


class Person {
public static  int total=0;
private int i;
public Person() {
total++;
i=total;
}
public static int getTotal() {
return total;
}
public static void setTotal(int total) {
Person.total = total;
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
}

相關文章