更新時間:2023-05-15 來源:黑馬程序員 瀏覽量:
在Java中,靜態變量和實例變量是兩種不同的變量類型,它們有以下的區別:
1.靜態變量屬于類,而不是類的任何實例。實例變量屬于類的實例。
2.靜態變量只有一個副本,無論類被實例化多少次,它始終是相同的。實例變量每個實例都有自己的副本。
3.靜態變量可以直接從類中訪問,無需實例化。實例變量必須通過實例化對象后才能訪問。
接下來我們看一段簡單的Java代碼示例,演示靜態變量和實例變量的區別:
public class Example { static int staticVariable = 10; // 靜態變量 int instanceVariable = 20; // 實例變量 public static void main(String[] args) { Example obj1 = new Example(); Example obj2 = new Example(); // 靜態變量可以通過類名直接訪問 System.out.println("靜態變量staticVariable值為:" + Example.staticVariable); // 實例變量必須通過實例對象訪問 System.out.println("obj1的實例變量instanceVariable值為:" + obj1.instanceVariable); System.out.println("obj2的實例變量instanceVariable值為:" + obj2.instanceVariable); // 修改靜態變量的值 Example.staticVariable = 30; // 打印修改后的靜態變量值 System.out.println("靜態變量staticVariable值為:" + Example.staticVariable); System.out.println("obj1的靜態變量staticVariable值為:" + obj1.staticVariable); System.out.println("obj2的靜態變量staticVariable值為:" + obj2.staticVariable); // 修改實例變量的值 obj1.instanceVariable = 40; // 打印修改后的實例變量值 System.out.println("obj1的實例變量instanceVariable值為:" + obj1.instanceVariable); System.out.println("obj2的實例變量instanceVariable值為:" + obj2.instanceVariable); } }
輸出結果如下:
靜態變量staticVariable值為:10 obj1的實例變量instanceVariable值為:20 obj2的實例變量instanceVariable值為:20 靜態變量staticVariable值為:30 obj1的靜態變量staticVariable值為:30 obj2的靜態變量staticVariable值為:30 obj1的實例變量instanceVariable值為:40 obj2的實例變量instanceVariable值為:20
可以看到,靜態變量只有一個副本,可以通過類名直接訪問。實例變量每個實例都有自己的副本,必須通過實例對象訪問。當修改靜態變量時,所有實例都會受到影響。當修改實例變量時,只有該實例會受到影響。