阿摩線上測驗 登入

申論題資訊

試卷:94年 - 94 關務特種考試_四等_資訊處理:程式語言概要#34395
科目:程式語言
年份:94年
排序:0

申論題內容

三、Java 程式語言中,class 內的 static 與非 static 欄位(fields)有何不同?請舉例說明其 不同之用法。(20 分)

詳解 (共 1 筆)

詳解 提供者:s1121ks011 s1121ks011
在Java程式語言中,class內的static與非static字段(fields)有以下不同:
1. **靜態字段(Static Fields)**:
   - 靜態字段是被聲明為static關鍵字的字段,這意味著它屬於整個類,而不是特定的實例。靜態字段只會在記憶體中分配一次,並且所有該類的實例都共享同一份靜態字段的內存空間。
   - 靜態字段可以直接通過類名來訪問,而不需要先創建該類的實例。
   - 靜態字段通常用於表示類的特定屬性,如常數或共享數據。
   ```java
   public class Example {
       public static int count = 0; // 靜態字段
   }
   ```
2. **非靜態字段(Non-Static Fields)**:
   - 非靜態字段是普通的實例字段,它屬於類的每個實例。每個類的實例都會擁有自己獨立的非靜態字段。
   - 非靜態字段需要先創建類的實例,然後通過該實例來訪問。
   - 非靜態字段通常用於表示對象的特定狀態或屬性。
   ```java
   public class Example {
       public int value; // 非靜態字段
   }
   ```
舉例來說,假設我們有一個表示汽車的類Car,其中有靜態字段numberOfCars表示汽車的總數,以及非靜態字段brand表示汽車的品牌。這樣設計的話,所有汽車共享同一個numberOfCars,而每輛汽車都有自己獨立的brand。
```java
public class Car {
    public static int numberOfCars = 0; // 靜態字段
    public String brand; // 非靜態字段
    
    public Car(String brand) {
        this.brand = brand;
        numberOfCars++; // 每次創建新的Car對象,靜態字段numberOfCars加1
    }
}
```
使用示例:
```java
Car car1 = new Car("Toyota");
Car car2 = new Car("Honda");
System.out.println(Car.numberOfCars); // 輸出:2
System.out.println(car1.brand); // 輸出:Toyota
System.out.println(car2.brand); // 輸出:Honda
```
在這個例子中,numberOfCars是靜態字段,表示汽車的總數,而brand是非靜態字段,表示每輛汽車的品牌。