char
數(shù)據(jù)類型是16
位無(wú)符號(hào)Java基元數(shù)據(jù)類型。 它表示Unicode
字符。請(qǐng)注意,char
是無(wú)符號(hào)數(shù)據(jù)類型。 因此,char
變量不能為負(fù)值。字符數(shù)據(jù)類型的范圍為0
到65535
,這與Unicode
集的范圍相同。
字符字面量表示char
數(shù)據(jù)類型的值。 Java中的字符字面量可以用以下格式表示:
Unicode
轉(zhuǎn)義序列字符可以通過(guò)用單引號(hào)括起來(lái)表示。以下代碼段使用此形式為char
變量賦值:
char c1 = 'A';
char c2 = 'L';
char c3 = '5';
char c4 = '/';
用雙引號(hào)括起來(lái)的字符序列是一個(gè)String
字面量。不能將字符串文字分配給char
變量,即使String
文字只有一個(gè)字符。
字符字面量可以表示為字符轉(zhuǎn)義序列。字符轉(zhuǎn)義序列以反斜杠開(kāi)頭,后面緊跟一個(gè)字符,并且都用單引號(hào)括起來(lái)。
有八個(gè)預(yù)定義的字符轉(zhuǎn)義序列,如下表所列。
字符轉(zhuǎn)義序列 | 描述 |
---|---|
‘\n’ | 換行 |
‘\r’ | 回車 |
‘\f’ | 換頁(yè) |
‘\b’ | 退格 |
‘\t’ | 制表 |
‘\‘ | 反斜杠 |
‘\”‘ | 雙引號(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)義序列的開(kāi)始,xxxx
正好表示四個(gè)十六進(jìn)制數(shù)字。
由xxxx
表示的值是字符的Unicode
值。字符“A
”的Unicode
值為65
。十進(jìn)制值65
可以用十六進(jìn)制表示為41
。
因此,字符’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
‘)。如果int
文本在0-65535
范圍內(nèi),可以為int
變量賦值。
當(dāng)為字符變量分配一個(gè)int
字面量時(shí),char
變量表示其Unicode
代碼等于該字符串表示的值的字符。字符’a
‘的Unicode
代碼是97
。十進(jìn)制值97
被表示為141
八進(jìn)制和61
十六進(jìn)制。
下面的代碼顯示了如何使用int
字面值97
來(lái)表示Unicode
字符’a
‘。
char c1 = 97; // Same as
c1 = 'a';
c1 = '\141';
c1 = '\u0061';
這里是一個(gè)程序用來(lái)演示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
,它是對(duì)應(yīng)于字母X
的ASCII
和Unicode
值。ASCII
字符集占據(jù)Unicode
字符集中的前127
個(gè)值。
上面的代碼生成以下結(jié)果。
ch1 and ch2: X Y
char
用來(lái)保存Unicode
字符,但它也可以用來(lái)保存整數(shù)類型,可以在其上執(zhí)行算術(shù)運(yùn)算。例如,可以將兩個(gè)字符添加在一起,或者增加一個(gè)字符變量的值。
在程序中,ch1
首先給定值X
。 接下來(lái),ch1
遞增。這導(dǎo)致ch1
包含Y
值,ASCII
(和Unicode
)序列中的下一個(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);
}
}
上面的代碼生成以下結(jié)果。
ch1 contains X
ch1 is now Y