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
,但我們得到了一個錯誤。這裡,變數 val
是 testing()
方法的區域性變數。
由於它是在方法 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
迴圈。
請注意有關區域性變數的以下幾點:
- 我們不能使用諸如
public
、protected
和private
之類的訪問修飾符來宣告區域性變數。 - 這些變數在堆疊級別內部實現。
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
這裡,age1
和 age2
是輸入引數。
Java 中的類欄位
類中的任何變數都可以在 Java 中稱為欄位
。price
、quantity
和 name
等所有變數都是欄位。
但是,請注意變數 quantity
以 static
關鍵字開頭。在定義中帶有關鍵字 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
中,我們有兩個變數 - cost
和 flavor
。我們建立 cake1
和 cake2
。
這些可以為不同物件取不同值的變數稱為例項變數
或例項欄位
。
Java 中 Instance Field
的屬性
java 中的例項欄位也稱為非靜態變數。以下是關於例項欄位的幾點。
- 例項欄位不是用 Java 的
static
關鍵字宣告的。
public class ClassName {
datatype variable_name;
}
- 它們不與所有例項共享。在 Java 中,每個例項都可以有其唯一的例項欄位值。
- 你看到了我們如何在類本身的幫助下訪問類欄位。好吧,這對於 Java 中的例項欄位來說是不正確的。我們需要一個
instance/object
來訪問 Java 中的例項欄位。 - 我們可以將任何訪問說明符與 Java 中的例項欄位一起使用。請參閱此文件以瞭解有關 Java 中的欄位的更多資訊。