天天看點

Java 變量與常量(學習 Java 程式設計語言 006)

1. 聲明變量

在 Java 中,使用變量來存儲值,每個變量都有一個類型(type)。在聲明變量時,先指定變量的類型,然後是變量名,變量的聲明以分号結束。這裡有一些聲明變量的示例:

double salary;
int vacationDays;
long earthPopulation;
boolean done;           

2. 變量的命名

變量名必須是一個以字母開頭并由字母或數字構成的序列。

  • 變量名中所有的字元都是有意義的,并且大小寫敏感。
  • 變量名的長度基本上沒有限制。
  • 不能使用 Java 保留字作為變量名。
  • $ 不能用于變量命名。
    盡管 $ 是一個合法的 Java 字元,但不要在你自己的代碼中使用這個字元。它隻用在 Java 編譯器或其他工具生成的名字中。
  • 在 Java 9 中,單下換線_不能作為變量名。
    将來的版本可能使用_作為通配符。

與大多數程式設計語言相比,Java 中的“字母” 和 “數字”的範圍更大。字母包括 'A' ~ 'Z'、'a' ~ 'z'、'_' 、'$' 或在某種語言中表示字母的 Unicode 字元。例如,德國的使用者可以在變量名中使用字母 'ä';希臘人可以用 π。同樣,數字包括 '0' ~ '9' 和在某種語言中表示數字的任何 Unicode 字元;但 '+' 和 '©’ 這樣的符号不能出現在變量名中,空格也不行。

如果想要知道哪些 Unicode 字元屬于 Java 中的 “字母”,可以使用 Character 類的 isJavaIdentifierStart 和 isJavaIdentifierPart 方法來檢查。

boolean isIdentifier = false;

isIdentifier = Character.isJavaIdentifierStart(' ');
System.out.println(isIdentifier); // 輸出 false

isIdentifier = Character.isJavaIdentifierStart('+');
System.out.println(isIdentifier); // 輸出 false

isIdentifier = Character.isJavaIdentifierStart('©');
System.out.println(isIdentifier); // 輸出 false

isIdentifier = Character.isJavaIdentifierStart('ä');
System.out.println(isIdentifier); // 輸出 true

isIdentifier = Character.isJavaIdentifierStart('π');
System.out.println(isIdentifier); // 輸出 true

isIdentifier = Character.isJavaIdentifierStart('$');
System.out.println(isIdentifier); // 輸出 true

isIdentifier = Character.isJavaIdentifierStart('_');
System.out.println(isIdentifier); // 輸出 true

isIdentifier = Character.isJavaIdentifierPart(' ');
System.out.println(isIdentifier); // 輸出 false

isIdentifier = Character.isJavaIdentifierPart('+');
System.out.println(isIdentifier); // 輸出 false

isIdentifier = Character.isJavaIdentifierPart('©');
System.out.println(isIdentifier); // 輸出 false

isIdentifier = Character.isJavaIdentifierPart('ä');
System.out.println(isIdentifier); // 輸出 true

isIdentifier = Character.isJavaIdentifierPart('π');
System.out.println(isIdentifier); // 輸出 true

isIdentifier = Character.isJavaIdentifierPart('$');
System.out.println(isIdentifier); // 輸出 true

isIdentifier = Character.isJavaIdentifierPart('_');
System.out.println(isIdentifier); // 輸出 true           

可以在一行中聲明多個變量:

int i, j; // 都是整型變量           

不提倡使用這種風格。逐一聲明每一個變量可以提高程式的可讀性。

3. 變量初始化

聲明一個變量之後,必須用指派語句對變量進行顯式初始化,千萬不要使用未初始化的變量。

int vacationDays;
System.out.println(vacationDays); // 錯誤,變量沒有初始化           

想要對一個已經聲明過的變量進行指派,隻需要将變量名放在等号(=)左側,相應取值的 Java 表達式放在等号的右側。

int vacationDays;
vacationDays = 12;           

也可以将變量的聲明和初始化放在同一行中。

int vacationDays = 12;           

在 Java 中,變量的聲明盡可能地靠近第一次使用的地方,這是一種良好的程式編寫風格。

從 Java 10 開始,對于局部變量,如果可以從變量的初始值推斷出它的類型,就不再需要聲明類型。隻需要使用關鍵字 var 而無需指定類型:

var vacationDays  =12; // vacationDays 是整型變量
var geeting = "Hello"; // greeting 是一個字元串           

4. 常量

在 Java 中,常量就是值不變的變量。利用關鍵字 final 訓示常量。

public class Constans
{
    public static void main(String[] args) {
        final double CM_PRE_INCH = 2.54;
        double paperWidth = 8.5;
        double paperHeight = 11;
        System.out.println("Paper size centimeters:" +
                + paperWidth * CM_PRE_INCH + " by " + paperHeight * CM_PRE_INCH);
    }
}           

關鍵字 final 表示這個變量隻能被指派一次。一旦被指派之後,就不能夠再更改了。習慣上,常量名使用全大寫。

在 Java 中,經常希望某個常量可以在一個類中的多個方法使用,通常将這些常量稱為類常量(class constant)。可以使用關鍵字

static final

設定一個類常量。

public class Constans {
    public static final double CM_PRE_INCH = 2.54;

    public static void main(String[] args) {
        double paperWidth = 8.5;
        double paperHeight = 11;
        System.out.println("Paper size centimeters:" +
                + paperWidth * CM_PRE_INCH + " by " + paperHeight * CM_PRE_INCH);
    }
}           

5. 枚舉類型