萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> java變量的區別淺析

java變量的區別淺析

 對於java的變量天天見到,但有時候別人問起它們的區別有時候也說不全,所以就找了些資料整理了整理...

類變量也叫靜態變量,也就是在變量前加了static 的變量; 實例變量也叫對象變量,即沒加static 的變量; 兩者區別在於: 類變量(靜態變量)是所有對象共有,其中一個對象將它值改變,其他對象得到的就是改變後的結果,並且類變量是可以直接通過類名來調用的 如:A.xingS; 而實例變量則屬對象私有,某一個對象將其值改變,不影響其他對象,實例變量顧名思義是屬於實例的,所以只能通過實例來調用 如:A a=new A(); a.name; 舉個不太恰當的例子:類變量就好比一個人的姓氏,實例變量就相當於人的名字,如果它父親把姓改了,那它所有的兄弟姐妹姓都得改,但是它們的名字還是各用各的。 例: 代碼如下: public class A{   static  int xingS = 0; //類變量    private int name = 0; //實例變量    String id; //實例變量   private String colorType; //實例變量    private int size; //實例變量    private static String depart; //類變量   f inal String name="zwm"; //常量 }  public class B{    public void main (String[] args){        A son1= new A();        A son2= new A();        son1.xingS = 3;  // 等同於  A.xingS = 3;        son1.name = 4 ;        System.out.println(son2.xingS); //結果為3        //類變量是針對所有對象的,所以son1改變xingS,son2的a也改變        System.out.println(son2.name); //結果為0        //實例只改變自身的,所以son1對象的name改變,不影響對象son2的name變量   } }   類變量又叫靜態成員變量,它不需要創建對象就可以已經在內存中存在了,而在創建實例對象的時候, 內存中會為每一個實例對象的每一個非靜態成員變量開辟一段內存空間,用來存儲這個對象所有的非靜態成員變量值。 即使兩個不同的實例對象是屬於同一個class類,但是它們的同名非靜態成員變量在內存中占用的空間是不同的, 而靜態成員變量也就是類變量相同。所有的實例對象都共用一個類變量,內存中只有一處空間是放這個類變量值的。 因此,如果一個對象把類變量值改了,另外一個對象再取類變量值就是改過之後的了。 
copyright © 萬盛學電腦網 all rights reserved