天天看點

《Java 7程式設計入門經典》一2.3 字面量

在java中,字面量(literal)指人類可以閱讀的固定值的表示。例如,數100是字面量。字面量也常常稱為常量(constant)。大多數字面量及其用法非常直覺,前面的示例程式中已經以各種形式使用過它們。現在正式地解釋它們。

java的字面量可以是任意基本資料類型。每種字面量的表示取決于類型。如前所述,字元常量由單引号包括。例如,'a'和'%'都是字元常量。

整數字面量是沒有小數部分的數。例如,10和-10是整數字面量。浮點字面量有小數點,小數點後是小數部分。例如,11.123是浮點字面量。java也允許使用科學計數法表示浮點數。這種情況下在尾數後使用e或e,然後再跟上指數。指數必須是整數。例如,1.234e2表示值123.4,1.234e-2表示值0.01234。

預設情況下,整數字面量的類型是int。如果需要指定long類型的字面量,需要在常量後加l或l。例如,12是一個int類型的字面量,但是12l是一個long類型的字面量。

預設情況下,浮點字面量是double類型的。要指定一個float類型的字面量,可以在常量後加f或f。例如,10.19f是一個float類型的字面量。

盡管整數字面量預設建立了一個int值,但是隻要值可以由目标類型表示,它們仍可以賦給char類型、byte類型或short類型的變量。整數字面量總能賦給long類型的變量。

從jdk 7開始,可以在整數或浮點數中使用一條或多條下劃線。這能讓含有多個數字的值閱讀起來更簡單。當字面量在編譯時,會丢棄下劃線。下面是一個例子:

《Java 7程式設計入門經典》一2.3 字面量

這指定了值123?451?234。下劃線的使用在編碼部件号、使用者id、狀态編碼等一般含有子資料群的資料時特别有用。

在程式設計中有時使用八進制或十六進制計數系統會比使用十進制計數系統更加簡單。基于8的計數系統稱為八進制(octal),它使用0~7的數字。八進制10等于十進制8。基于16的計數系統稱為十六進制(hexadecimal),它使用數字0~9和字母a~f(也可以用小寫字母a~f)。字母a~f表示10、11、12、13、14和15。例如,十六進制中的10表示十進制的16。因為常常使用這兩種計數系統,是以java不但允許以十進制表示整形字面量,也允許以十六進制或八進制表示整形字面量。十六進制字面量由0x或0x打頭(即數字0後跟字母x或x)。八進制字面量以0打頭。下面是一些例子:

《Java 7程式設計入門經典》一2.3 字面量

感興趣的是,java也允許十六進制浮點字面量,不過這很少使用。

從jdk 7開始,可以用二進制指定整數字面量。為此,需要在二進制數前加0b或0b。例如,0b1100用二進制指定十進制值12。

将字元常量包括在單引号内對絕大多數的字元都是可行的。但是對于一些字元(如回車),在使用文本編輯器時就出現特别的困難。另外,某些其他字元,如單引号和雙引号,在java中有特殊的意義,不能直接使用。是以,java提供了特殊的轉義序列(escape sequence),有時又稱為反斜線字元常量,如表2-2所示。這些序列用于代替它們表示的字元。

《Java 7程式設計入門經典》一2.3 字面量

例如,下面把制表符字元賦予變量ch:

《Java 7程式設計入門經典》一2.3 字面量

下面的例子把單引号賦予ch:

《Java 7程式設計入門經典》一2.3 字面量

java支援另一種字面量類型:字元串。字元串(string)是一系列字元,由雙引号包圍。例如,

《Java 7程式設計入門經典》一2.3 字面量

就是一個字元串。在前面示例程式中的許多printf()語句中能看到許多字元串的例子。

除了一般的字元外,字元串字面量也能包括一個或多個剛剛介紹的轉義序列。例如,考慮如下程式,它使用轉義序列n和t。

《Java 7程式設計入門經典》一2.3 字面量

輸出如下所示:

《Java 7程式設計入門經典》一2.3 字面量

注意如何用轉義序列n來換行。這樣就不需要寫多個println()語句來獲得多行輸出。隻要在一個長字元串中需要換行的地方包括轉義字元n即可。

《Java 7程式設計入門經典》一2.3 字面量