Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤與異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 與框架

Java 類參考

Java 有用資源

Java - 變數型別



什麼是 Java 變數?

變數為我們提供了程式可以操作的命名儲存。Java 中的每個變數都具有特定的型別,該型別決定變數記憶體的大小和佈局;儲存在該記憶體中的值的範圍;以及可以應用於變數的操作集。

變數宣告和初始化

在使用變數之前,必須先宣告所有變數。Java 變數透過指定資料型別後跟變數名來宣告。要分配值,請使用賦值 (=) 運算子後跟值。每個宣告或初始化語句都必須以分號 (;) 結尾。

語法

以下是變數宣告的基本形式:

data type variable [ = value][, variable [ = value] ...] ;

這裡 資料型別Java 的資料型別 之一,而 變數 是變數的名稱。要宣告指定型別的一個以上變數,可以使用逗號分隔的列表。

有效變數宣告和初始化示例

以下是 Java 中變數宣告和初始化的有效示例:

int a, b, c;         // Declares three ints, a, b, and c.
int a = 10, b = 10;  // Example of initialization
byte B = 22;         // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a';        // the char variable a iis initialized with value 'a'

Java 變數型別

以下是三種類型的 Java 變數

  1. 區域性變數
  2. 例項變數
  3. 類/靜態變數

1. Java 區域性變數

  • 區域性變數在 方法構造方法 或程式碼塊中宣告。

  • 當進入方法、構造方法或程式碼塊時建立區域性變數,並且一旦退出方法、構造方法或程式碼塊,該變數將被銷燬。

  • 訪問修飾符 不能用於區域性變數。

  • 區域性變數僅在其宣告的方法、構造方法或程式碼塊內可見。

  • 區域性變數在內部以棧級別實現。

  • 區域性變數沒有預設值,因此應在第一次使用之前宣告區域性變數併為其分配初始值。

示例 1:變數的區域性作用域以及初始化

這裡,age 是一個區域性變數。它在 pupAge() 方法內定義,其作用域僅限於此方法。

public class Test {
   public void pupAge() {
      int age = 0;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

輸出

Puppy age is: 7

示例 2:變數的區域性作用域,未初始化

以下示例在未初始化的情況下使用 age,因此在編譯時會報錯。

public class Test {
   public void pupAge() {
      int age;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

輸出

Test.java:4:variable number might not have been initialized
age = age + 7;
         ^
1 error

2. Java 例項變數

  • 例項變數在 中宣告,但在方法、構造方法或任何程式碼塊之外。

  • 當在堆中為物件分配空間時,會為每個例項變數值建立一個插槽。

  • 使用關鍵字“new”建立物件時建立例項變數,並在銷燬物件時銷燬例項變數。

  • 例項變數儲存必須由多個方法、構造方法或程式碼塊引用的值,或者物件狀態的基本部分,這些部分必須存在於整個類中。

  • 例項變數可以在類級別在使用之前或之後宣告。

  • 可以為例項變數提供訪問修飾符。

  • 類中的所有方法、構造方法和程式碼塊都可以看到例項變數。通常,建議將這些變數設為私有(訪問級別)。但是,可以使用訪問修飾符為子類提供這些變數的可見性。

  • 例項變數具有預設值。對於數字,預設值為 0,對於布林值,預設值為 false,對於物件引用,預設值為 null。可以在宣告期間或在構造方法內分配值。

  • 可以透過在類內部呼叫變數名來直接訪問例項變數。但是,在靜態方法中(當例項變數被賦予可訪問性時),應使用完全限定名來呼叫它們。ObjectReference.VariableName

Java 例項變數示例

import java.io.*;

public class Employee {

   // this instance variable is visible for any child class.
   public String name;

   // salary  variable is visible in Employee class only.
   private double salary;

   // The name variable is assigned in the constructor.
   public Employee (String empName) {
      name = empName;
   }

   // The salary variable is assigned a value.
   public void setSalary(double empSal) {
      salary = empSal;
   }

   // This method prints the employee details.
   public void printEmp() {
      System.out.println("name  : " + name );
      System.out.println("salary :" + salary);
   }

   public static void main(String args[]) {
      Employee empOne = new Employee("Ransika");
      empOne.setSalary(1000);
      empOne.printEmp();
   }
}

輸出

name  : Ransika
salary :1000.0

3. Java 類/靜態變數

  • 類變數也稱為靜態變數,在類中使用 static 關鍵字宣告,但在方法、構造方法或程式碼塊之外。

  • 無論從該類建立多少個物件,每個類變數在每個類中都只有一份副本。

  • 靜態變數很少使用,除非宣告為常量。常量是指宣告為 public/private、final 和 static 的變數。常量變數的值在其初始值後永遠不會改變。

  • 靜態變數儲存在靜態記憶體中。除了宣告為 final 並用作 public 或 private 常量之外,很少使用靜態變數。

  • 靜態變數在程式啟動時建立,在程式停止時銷燬。

  • 可見性與例項變數類似。但是,大多數靜態變數都宣告為 public,因為它們必須可供類的使用者使用。

  • 預設值與例項變數相同。對於數字,預設值為 0;對於布林值,為 false;對於物件引用,為 null。可以在宣告期間或在建構函式中分配值。此外,可以在特殊的靜態初始化塊中分配值。

  • 可以透過使用類名 `ClassName.VariableName` 呼叫來訪問靜態變數。

  • 當將類變數宣告為 public static final 時,變數名(常量)全部大寫。如果靜態變數不是 public 和 final,則命名語法與例項變數和區域性變數相同。

Java 類/靜態變數示例

import java.io.*;

public class Employee {

   // salary  variable is a private static variable
   private static double salary;

   // DEPARTMENT is a constant
   public static final String DEPARTMENT = "Development ";

   public static void main(String args[]) {
      salary = 1000;
      System.out.println(DEPARTMENT + "average salary:" + salary);
   }
}

輸出

Development average salary:1000

注意 - 如果從外部類訪問變數,則應將常量訪問為 Employee.DEPARTMENT

下一步是什麼?

您已在本節中使用了訪問修飾符(public 和 private)。下一節將詳細解釋訪問修飾符和非訪問修飾符。

廣告