Java 中的類欄位和例項欄位

Shikha Chaudhary 2023年1月30日 2022年4月22日
  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 中的欄位的更多資訊。