1.整數文字

現在來一個有趣的新話題——文字。直接在程序代碼中寫入的數據稱為文字。我們不是在談論任何舊數據,而是原始類型和類型的值String

例如,假設您有以下代碼:

代碼 文字
int a = 5;
int b = a + 10;
String s = "Sum=" + (a + b);
5
10
"Sum="

此代碼中的文字是數字5、數字10和字符串 ' Sum = '。

在 Java 中,包括文字在內的所有內容都有類型。默認情況下,代碼中的所有整數文字(整數)都是ints. int 類型是標準的 Java 整數類型。

更重要的是,如果您決定在代碼中將整數文字分配給字節變量或短變量,則不會有任何問題。您只需要確保文字值位於變量類型可以存儲的值範圍內。

Java 編譯器足夠聰明,可以理解為byte變量分配整數文字 100 而不會產生問題。

例子:

代碼 描述
int a = 300;
這將編譯得很好。
byte a = 100; 
這將編譯得很好。
byte a = 300; 
會出現編譯錯誤,因為最大字節值為 127。

您還可以long在代碼中編寫文字。為此,請在整數末尾添加拉丁字母“L”或“l”。

例子:

代碼 描述
long a = 3000000000L; 
這將編譯得很好。
long a = 3000000000; 
編譯錯誤:30 億對於 int 文字來說太大了。
int a = 3000000000L; 
編譯錯誤:字面量是long,變量是int。此外,30 億比最大整數還多。

您是否注意到閱讀大量 10 位或更多數字的數字有多麼困難?您無法立即判斷代碼是 30 億還是 300 億。為了使代碼更具可讀性(這很重要!),Java 允許在數字文字中插入下劃線(它們不影響數字的值)。

上面的例子可以用下劃線重寫,使它更清楚一點:

代碼 描述
long a = 3_000_000_000L; 
這將編譯得很好。
long a = 3_000_000_000; 
編譯錯誤:30 億對於 int 文字來說太大了。
int a = 3_000_000_000L; 
編譯錯誤:字面量是long,變量是int。此外,30 億比最大整數還多。

但是我們不能在數字文字中使用逗號,因為它們已經被用於其他目的。例如,用於在調用方法時將參數彼此分開。



2. 實數字面量

在您的代碼中,您不僅可以指定整數,還可以指定浮點文字(實數)。

其實規則很簡單:如果代碼中的數字有小數點,那麼這個數字就是浮點字面量。不僅是任何文字,而且是double文字。

您可以創建浮點文字,但需要在數字末尾添加字母“F”(或“f”)才能做到這一點

例子:

代碼 描述
double a = 100.0; 
這將編譯得很好。
double a = 100.;
這將編譯得很好。
double a = .0;
這將編譯得很好。
float a = 100.0f; 
這將編譯得很好。
float a = 100.0; 
會出現編譯錯誤:變量是float,但字面量是double。

順便說一句,您可以通過簡單地將整數文字顯式轉換為浮點數或雙精度文字)。例子: appending the suffix 'F' (for float) or D (for double)

代碼 描述
double a = 100D; 
這將編譯得很好。
float a = 100F; 
這將編譯得很好。
int a = 300D; 
會出現編譯錯誤:變量是一個int,但字面量是一個double.

浮點字面值可以使用科學記數法:除了數字的帶符號部分,還可以指定十的冪。例子:

文字 數學符號 最終價值
1.23E2
1.23 * 102
123.0
1.23E3
1.23 * 103
1230.0
1.23E-6
1.23 * 10-6
0.00000123
1E6
1.0 * 106
1000000.0
1E-10
1.0 * 10-10
0.0000000001


3. 字符串字面量

您還可以在代碼中指定整行文本。為了告訴編譯器將字符串視為數據(文字)而不是代碼的一部分,整個字符串兩邊都用雙引號括起來。

如果一行代碼有多個雙引號,則將它們分成兩對。第一個雙引號表示文字的開始。下一個表示文字的結尾。之後的下一個再次標誌著新文字的開始。next 標記第二個文字的結尾。等等。

每個這樣的文字都是一個String.

例子

代碼 解釋
"+" + "+" + "+" + "+" + "+"
一行有 5 個文字。它們每個都由一個 +字符組成
""
這個文字是一個空字符串。沒有字符的字符串。
"2+3" + "-5"
這裡有兩個字面量。結果將是字符串 ' 2+3-5',而不是數字
"return" + ";"
這裡還有兩個文字。這裡沒有返回語句。

如果字符串文字太長,可以將其分成幾行並用“加號運算符”粘在一起:

代碼 解釋
String s = "I hold it true, whate'er befall, "
         + "I feel it when I sorrow most; "
         + "'Tis better to have loved and lost "
         + "Than never to have loved at all.";
如果將此行輸出到屏幕,那麼所有文本將顯示在一行中!


4.字符文字

您不僅可以在代碼中指定字符串文字,還可以指定由單個字符組成的文字。請注意,我們不是在討論由單個字符組成的字符串,而是在討論類型為char.

與字符串不同,字符文字由單引號括起來。單引號內必須有一個字符,而且只有一個字符。您不能使用空的單引號。

例子:

代碼 解釋
'A'
類型為 char 的文字。它包含拉丁字母“A”。
'@' 
類型為 char 的文字。它包含“@”符號
'' 
類型為 char 的文字。它包含一個日語字符。而這也是可能的。
'\u1f3a'
類型為 char 的文字。它包含一個由其編號指定的 Unicode 字符。

最後一個示例使用特殊符號分配一個 Unicode 字符:首先我們有前綴\u,然後是 4 個十六進製字符。下一課包括有關此的詳細信息。