“朋友,真羨慕你。學習新事物真是太好了!今天有一個有趣的新話題等著你——文字。”

“顯然我應該說我是這個星球上最快樂的機器人學生,Rishi。好吧,我準備好吸收新知識了!”

“讓我們馬上開始吧。文字是直接寫在程序代碼中的特定數據。我們不是在談論任何數據。我們只是在談論原始類型和字符串。

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

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

“這段代碼中的文字是數字5、數字10和字符串‘ Sum = ’。

整數文字

“在 Java 中,一切,包括文字,都有一個類型。代碼中的所有整數文字(整數)都是int。int 類型是標準的 Java 整數類型。”

“我知道這種,用過。”

“你還記得除 int 之外的其他整數類型嗎?一些佔用內存空間較小的整數類型?”

“當然!字節和短。​​”

“就是這些。因此,如果在您的代碼中您決定將整數文字分配給 byte 或 short 類型的變量,則不會有任何問題。主要的是文字值位於值的範圍內變量的類型可以存儲。Java 編譯器足夠聰明,可以理解一個字節變量可以被賦值為整數文字 100。

例子:

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

“那款呢?”

“我們也可以在代碼中編寫這種類型的文字。為此,請在整數末尾添加拉丁字母‘L’或‘l’。

例子:

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

“你有沒有註意到閱讀 10 位或更多數字的大量數字是多麼困難?

“是的,如果你沒有啟用你的 robovision,那麼我們談論的是 30 億還是 30 將不會立即變得清晰。”

“為了使代碼更具可讀性(這很重要!),Java 允許在數字文字中插入下劃線(它們不會影響數字的值)。

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

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

“這樣讀起來更方便,雖然用逗號代替下劃線會更熟悉!”

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

實數文字

“您可能已經猜到,在您的代碼中,您不僅可以指定整數,還可以指定浮點文字(實數)。”

“雙打和花車?”

“是的。實際上,規則很簡單:如果代碼中的數字中有小數點,那麼該數字就是浮點數。而且不僅僅是任何文字,而是雙精度文字。要創建浮點文字你需要在數字末尾加上字母“F”(或“f”)

例子:

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

“順便說一句,您可以通過簡單地附加後綴“F”(對於float)或 D(對於double)將整數文字顯式轉換為 float 或 double 文字。示例:

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

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

文字 數學符號 最終價值
1.232 1.23*10 2 123.0
1.233 1.23*103 1230.0
1.23-6 1.23*10 -6 0.00000123
16 1.0 *10 6 1000000.0
1電子-10 1.0*10 -10 0.0000000001

字符串文字

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

"如果一行代碼中有多個雙引號,則將它們分成一對。第一個雙引號表示文字的開始。下一個表示文字的結尾。之後的下一個再次標記新文字的開始。下一個標記第二個文字的結尾。依此類推。

“每個這樣的文字都是一個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.";
如果將此行輸出到屏幕,那麼所有文本將顯示在一行中!

字符文字

“如果我需要的文字是單個字符而不是字符串怎麼辦?我應該創建一個由單個字符組成的字符串嗎?”

“不,在那種情況下你需要一個類型為.的文字char。你能猜出這樣一個文字的開始和結束是如何指定的嗎?”

“單引號?”

"是的,單引號內必須有一個字符,而且只有一個字符。不能使用空單引號。

例子:

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

“最後一個示例使用特殊符號分配 Unicode 字符:首先我們有前綴\u,然後是 4 個十六進製字符。您將在下一課中了解更多相關信息。”