Java 中的類欄位和例項欄位

Shikha Chaudhary 2023年10月12日
  1. Java 中的區域性變數
  2. Java 中的輸入引數
  3. Java 中的類欄位
  4. Java 中類欄位的屬性
  5. Java 中的例項欄位
  6. Java 中 Instance Field 的屬性
Java 中的類欄位和例項欄位

本文將學習 Java 程式語言的基本術語,如 Java 中的區域性變數、輸入引數、類欄位和例項欄位。

Java 中的區域性變數

範圍繫結到塊、方法或建構函式的變數稱為區域性變數。比如說,我們有一個方法,testing

我們宣告一個 val 變數並將 10 分配給這個方法。在 main 塊內寫入 print 語句。

public class Experiment {
  public static void testing() {
    int val = 10;
  }

  public static void main(String[] args) {
    // try printing the local variable of the function demo
    System.out.printf("%d", val);
  }
}

輸出:

error: cannot find symbol
      System.out.printf("%d", val);
                              ^
  symbol:   variable val
  location: class Experiment
1 error

儘管此程式碼中存在變數 val,但我們得到了一個錯誤。這裡,變數 valtesting() 方法的區域性變數。

由於它是在方法 testing 中定義的,所以它的範圍是有限的。當 print 語句試圖在這個範圍之外訪問這個變數時,我們會得到一個錯誤。

現在,在方法 testing 中宣告 print 語句並從 main 塊呼叫該方法。

public class Experiment {
  public static void testing() {
    int val = 10;
    System.out.printf("%d", val);
  }

  public static void main(String[] args) {
    // call the method
    testing();
  }
}

輸出:

10

這一次,print 語句從其範圍內訪問變數。

現在嘗試找出這段程式碼中的區域性變數。

public class Treat {
  public static void main(String[] args) {
    for (int i = 0, i < 1; i++) {
      System.out.println("You will get a Cake if you answer correctly!");
    }
  }
}

變數 i 是一個區域性變數。它的範圍僅限於 for 迴圈。

請注意有關區域性變數的以下幾點:

  • 我們不能使用諸如 publicprotectedprivate 之類的訪問修飾符來宣告區域性變數。
  • 這些變數在堆疊級別內部實現。

Java 中的輸入引數

某些資訊需要執行,而其他資訊可能不需要。看看這個方法 welcome

public class Greet {
  // a function that does not need any parameter or information
  public static void welcome() {
    System.out.println("Hello, we are happy you visited.");
  }
  public static void main(String[] args) {
    // call the function
    welcome();
  }
}

輸出:

Hello, we are happy you visited.

我們在不傳遞任何值的情況下呼叫該方法。我們不向此方法提供任何資訊,它可以正常執行。

public class Test {
  // a function that needs some information/parameter
  public static void hello(int x) {
    int a;
    System.out.println("Hello, we are happy you visited.");
    if (x < 18) {
      a = 18 - x;
      System.out.printf("Please come back after %d years.", a);
    }
  }
  public static void main(String[] args) {
    int age = 2;

    // call the function
    hello(age);
  }
}

輸出:

Hello, we are happy you visited.
Please come back after 16 years.

如果我們不傳遞 age 的值,方法 hello 將無法正確執行。

該方法通過括號內定義的變數 x 接收此值。變數 x 只不過是一個輸入引數,或者簡單地說,一個引數。

Java 中的輸入引數或引數是用於定義方法以幫助方法執行的變數。

不要將引數與引數混合。它們具有相同的價值,但它們不是一回事。

public class Test {
  // function to add ages
  public static int totalAge(int age1, int age2) {
    return age1 + age2;
  }
  public static void main(String[] args) {
    int a1 = 10;
    int a2 = 12;

    int total = totalAge(a1, a2);
    System.out.println("Sum of ages: " + total);
  }
}

輸出:

Sum of ages: 22

這裡,age1age2 是輸入引數。

Java 中的類欄位

類中的任何變數都可以在 Java 中稱為欄位pricequantityname 等所有變數都是欄位。

但是,請注意變數 quantitystatic 關鍵字開頭。在定義中帶有關鍵字 static 的此類欄位在 Java 中稱為類欄位。

類欄位在 Java 中也稱為變數或靜態欄位

class Cake {
  int price;
  static int quantity;
  string name;
}

Java 中類欄位的屬性

以下幾點是一個類欄位:

  • 必須使用 static 關鍵字宣告類欄位。
public static NameOfClass {
  static datatype name_of_variable;
}
  • 類的許多例項共享類欄位,因此類欄位是記憶體高效的。用非常簡單的話來說,一個例項欄位的值對於 Java 中一個類的所有例項都是相同的。
  • 我們可以使用類的例項和類名本身來訪問 Java 中的類欄位。請注意,訪問任何靜態欄位不一定需要例項。
class Cake {
  int price;
  static int quantity = 10;
  String name;

  public static void main(String[] args) {
    // create the object of Cake class
    Cake c1 = new Cake();

    // Access the class field using the object
    System.out.println(c1.quantity);

    // Access the class field using the class
    System.out.println(Cake.quantity);
  }
}

輸出:

10
10

在上面的例子中,我們使用像這樣的 dot 運算子 - c1.quantity 使用物件訪問類欄位。同樣,要按類訪問變數,請使用類名 Cake.quantity

Java 中的例項欄位

public class Cake {
  int cost;
  String flavor;

  public Cake(int cost, String flavor) {
    this.cost = cost;
    this.flavor = flavor;
  }

  public int expense() {
    return cost;
  }

  public static void main(String[] args) {
    Cake cake1 = new Cake(1000, "Choco lava");
    Cake cake2 = new Cake(2000, "Pineapple");

    System.out.println(cake1.expense());
    System.out.println(cake2.expense());
  }
}

輸出:

1000
2000

在類 Cake 中,我們有兩個變數 - costflavor。我們建立 cake1cake2

這些可以為不同物件取不同值的變數稱為例項變數例項欄位

Java 中 Instance Field 的屬性

java 中的例項欄位也稱為非靜態變數。以下是關於例項欄位的幾點。

  • 例項欄位不是用 Java 的 static 關鍵字宣告的。
public class ClassName {
  datatype variable_name;
}
  • 它們不與所有例項共享。在 Java 中,每個例項都可以有其唯一的例項欄位值。
  • 你看到了我們如何在類本身的幫助下訪問類欄位。好吧,這對於 Java 中的例項欄位來說是不正確的。我們需要一個 instance/object 來訪問 Java 中的例項欄位。
  • 我們可以將任何訪問說明符與 Java 中的例項欄位一起使用。請參閱此文件以瞭解有關 Java 中的欄位的更多資訊。