char數(shù)據(jù)類型是16位無符號(hào)Java基元數(shù)據(jù)類型。它表示Unicode字符。
請注意,char是無符號(hào)數(shù)據(jù)類型。因此,char變量不能為負(fù)值。
字符數(shù)據(jù)類型的范圍為0到65535,這與Unicode集的范圍相同。
字符字面量表示char數(shù)據(jù)類型的值。 Java中的字符字面量可以用以下格式表示:
字符可以通過用單引號(hào)括起來表示。
以下代碼段使用此形式為char變量賦值:
char c1 = 'A'; char c2 = 'L'; char c3 = '5'; char c4 = '/';
用雙引號(hào)括起來的字符序列是一個(gè)String字面量。
不能將字符串字面量分配給char變量,即使String字面量只有一個(gè)字符。
字符字面量可以表示為字符轉(zhuǎn)義序列。
字符轉(zhuǎn)義序列以反斜杠開頭,后面緊跟一個(gè)字符,并且都用單引號(hào)括起來。
有八個(gè)預(yù)定義的字符轉(zhuǎn)義序列,如下表所列。
字符轉(zhuǎn)義序列 | 描述 |
---|---|
'\n' | 換行 |
'\r' | 回車 |
'\f' | 表單Feed |
'\b' | 退格 |
'\t' | 標(biāo)簽 |
'\\' | 反斜杠 |
'\"' | 雙引號(hào) |
'\'' | 單引號(hào) |
Java中只有八個(gè)字符轉(zhuǎn)義序列。我們不能定義你自己的字符轉(zhuǎn)義序列。
char c1 = "\n"; // Assigns a linefeed to c1 char c2 = "\""; // Assigns double quote to c2 char c3 = "\a"; // A compile-time error. Invalid character escape sequence
字符字面量可以表示為“\ uxxxx”形式的Unicode轉(zhuǎn)義序列。
這里, \u
表示Unicode轉(zhuǎn)義序列的開始,xxxx正好表示四個(gè)十六進(jìn)制數(shù)字。
由xxxx表示的值是字符的Unicode值。
字符'A'有65 65十進(jìn)制可以用十六進(jìn)制表示為41的值的Unicode值。
因此,字符'A'可以用Unicode轉(zhuǎn)義序列表示為'\ u0041'。
以下代碼將相同的字符“A”分配給char變量c1和c2:
char c1 = "A"; char c2 = "\u0041"; // Same as c2 = "A"
字符文字可以表示為形式為'\ nnn'的八進(jìn)制轉(zhuǎn)義序列。
這里,n是八進(jìn)制數(shù)(0-7)。八進(jìn)制轉(zhuǎn)義序列的范圍是'\ 000'到'\ 377'。
八進(jìn)制數(shù)377與十進(jìn)制數(shù)255相同。因此,使用八進(jìn)制轉(zhuǎn)義序列,我們可以表示Unicode代碼范圍從0到255個(gè)十進(jìn)制整數(shù)的字符。
Unicode字符集(代碼范圍0到65535)可以表示為Unicode轉(zhuǎn)義序列('\ uxxxx')。
Unicode字符集(代碼范圍0到65535)可以表示為Unicode轉(zhuǎn)義序列('\ uxxxx')。
當(dāng)為字符變量分配一個(gè)int字面量時(shí),char變量表示其Unicode代碼等于該字符串表示的值的字符。
字符'a'的Unicode代碼是97.十進(jìn)制值97被表示為141八進(jìn)制和61十六進(jìn)制。
下面的代碼顯示了如何使用int字面值97來表示Unicode字符'a'。
char c1 = 97; // Same as c1 = "a"; c1 = "\141"; c1 = "\u0061";
這里是一個(gè)程序,演示char變量:
public class Main { public static void main(String args[]) { char ch1, ch2; ch1 = 88; // code for X ch2 = "Y"; System.out.print("ch1 and ch2: "); System.out.println(ch1 + " " + ch2); } }
ch1
被分配值88,它是對應(yīng)于字母X的ASCII和Unicode值。ASCII字符集占據(jù)Unicode字符集中的前127個(gè)值。
上面的代碼生成以下結(jié)果。
char旨在保存Unicode字符,但它也可以用作整數(shù)類型,您可以在其上執(zhí)行算術(shù)運(yùn)算。
例如,您可以將兩個(gè)字符添加在一起,或者增加一個(gè)字符變量的值。
public class Main { public static void main(String args[]) { char ch1; ch1 = "X"; System.out.println("ch1 contains " + ch1); ch1++; // increment ch1 System.out.println("ch1 is now " + ch1); } }
在程序中,首先給ch1賦值X.接下來,ch1遞增。這導(dǎo)致ch1包含Y,ASCII(和Unicode)序列中的下一個(gè)字符。
上面的代碼生成以下結(jié)果。
更多建議: