在Java中,變量可以分為靜態變量和非靜態變量。這兩種變量的作用和使用方式有很大的不同。
首先,靜態變量是屬于類的,非靜態變量是屬于對象的。也就是說,靜態變量在所有對象間是共享的,而非靜態變量則是每個對象有一份獨立的副本。
public class Example { static int staticVar = 0; // 靜態變量 int instanceVar = 0; // 非靜態變量 public static void main(String[] args) { Example ex1 = new Example(); Example ex2 = new Example(); ex1.staticVar = 1; ex1.instanceVar = 2; ex2.staticVar = 3; ex2.instanceVar = 4; System.out.println("ex1.staticVar = " + ex1.staticVar); // 輸出 3 System.out.println("ex1.instanceVar = " + ex1.instanceVar); // 輸出 2 System.out.println("ex2.staticVar = " + ex2.staticVar); // 輸出 3 System.out.println("ex2.instanceVar = " + ex2.instanceVar); // 輸出 4 } }
從上面的代碼可以看出,靜態變量 staticVar 在 ex1 和 ex2 之間是共享的,修改一個對象的值會影響到其他對象。而非靜態變量 instanceVar 在每個對象間是獨立的,修改一個對象的值不會影響到其他對象。
還有一個區別是,靜態變量可以直接通過類名訪問和修改,而非靜態變量只能通過對象名訪問和修改。
public class Example { static int staticVar = 0; // 靜態變量 int instanceVar = 0; // 非靜態變量 public static void main(String[] args) { Example.staticVar = 1; // 直接通過類名訪問和修改靜態變量 Example ex1 = new Example(); ex1.instanceVar = 2; // 通過對象名訪問和修改非靜態變量 } }
總之,靜態變量和非靜態變量都有各自的使用場景和特點,根據具體的需求使用相應的方法即可。
上一篇php 寫入并發
下一篇css數字英文不換行