char
資料型別是16
位無符號Java基後設資料型別。 它表示Unicode
字元。請注意,char
是無符號資料型別。 因此,char
變數不能為負值。字元資料型別的範圍為0
到65535
,這與Unicode
集的範圍相同。
字元字面量表示char
資料型別的值。 Java中的字元字面量可以用以下格式表示:
Unicode
跳脫序列字元可以通過用單引號括起來表示。以下程式碼段使用此形式為char
變數賦值:
char c1 = 'A';
char c2 = 'L';
char c3 = '5';
char c4 = '/';
用雙引號括起來的字元序列是一個String
字面量。不能將字串文字分配給char
變數,即使String
文字只有一個字元。
字元字面量可以表示為字元跳脫序列。字元跳脫序列以反斜槓開頭,後面緊跟一個字元,並且都用單引號括起來。
有八個預定義的字元跳脫序列,如下表所列。
字元跳脫序列 | 描述 |
---|---|
‘\n’ | 換行 |
‘\r’ | 回車 |
‘\f’ | 換頁 |
‘\b’ | 退格 |
‘\t’ | 製表 |
‘\‘ | 反斜槓 |
‘\」‘ | 雙引號 |
‘\’’ | 單引號 |
Java中只有八個字元跳脫序列。不能定義自己的字元跳脫序列。
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
跳脫序列。這裡,\u
表示Unicode
跳脫序列的開始,xxxx
正好表示四個十六進位制數位。
由xxxx
表示的值是字元的Unicode
值。字元「A
」的Unicode
值為65
。十進位制值65
可以用十六進位制表示為41
。
因此,字元’A
‘可以用Unicode
跳脫序列表示為’\u0041
‘。以下程式碼將相同的字元「A
」分配給char
變數c1
和c2
:
char c1 = 'A';
char c2 = '\u0041'; // Same as c2 = 'A'
字元文字可以表示為形式為’\nnn
‘的八進位制跳脫序列。這裡,n
是八進位制數(0-7
)。 八進位制跳脫序列的範圍是’\000
‘到’\377
‘。
八進位制數377
與十進位制數255
相同。因此,使用八進位制跳脫序列,可以表示Unicode
程式碼範圍從0
到255
個十進位制整數的字元。
Unicode
字元集(程式碼範圍0
到65535
)可以表示為Unicode
跳脫序列(‘\uxxxx
‘)。如果int
文字在0-65535
範圍內,可以為int
變數賦值。
當為字元變數分配一個int
字面量時,char
變數表示其Unicode
程式碼等於該字串表示的值的字元。字元’a
‘的Unicode
程式碼是97
。十進位制值97
被表示為141
八進位制和61
十六進位制。
下面的程式碼顯示了如何使用int
字面值97
來表示Unicode
字元’a
‘。
char c1 = 97; // Same as
c1 = 'a';
c1 = '\141';
c1 = '\u0061';
這裡是一個程式用來演示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
,它是對應於字母X
的ASCII
和Unicode
值。ASCII
字元集占據Unicode
字元集中的前127
個值。
上面的程式碼生成以下結果。
ch1 and ch2: X Y
char
用來儲存Unicode
字元,但它也可以用來儲存整數型別,可以在其上執行算術運算。例如,可以將兩個字元新增在一起,或者增加一個字元變數的值。
在程式中,ch1
首先給定值X
。 接下來,ch1
遞增。這導致ch1
包含Y
值,ASCII
(和Unicode
)序列中的下一個字元。
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 contains X
ch1 is now Y