字符型char在java語(yǔ)言中占用2個(gè)字節(jié),char類型的字面量必須使用半角的單引號(hào)括起來(lái),取值范圍為[0-65535],char和short都占用2個(gè)字節(jié),但是char可以取到更大的正整數(shù),因?yàn)閏har類型沒(méi)有負(fù)數(shù)。java語(yǔ)言中的char類型變量可以容納一個(gè)漢字。請(qǐng)看以下程序:
public class CharTest01 {
public static void main(String[] args) {
char c1 = 'a';
System.out.println(c1);
System.out.println(c1 + 1);
char c2 = '中';
System.out.println(c2);
char c3 = "中";
System.out.println(c3);
char c4 = 97;
System.out.println(c4);
}
}
編譯報(bào)錯(cuò):
圖4-1:編譯報(bào)錯(cuò)
以上代碼編譯報(bào)錯(cuò):原因是類型不兼容,使用雙引號(hào)括起來(lái)的一定是字符串類型,不能賦值給char類型的變量。將錯(cuò)誤代碼注釋之后并運(yùn)行:
運(yùn)行結(jié)果如下圖所示:
圖4-2:char類型測(cè)試
我來(lái)解釋一下以上的輸出結(jié)果:c1 + 1為什么是98呢?因?yàn)閏1是char類型,1是int類型,char類型和int類型混合運(yùn)算的時(shí)候char類型會(huì)自動(dòng)轉(zhuǎn)換成int類型,然后再做運(yùn)算,a對(duì)應(yīng)的ASCII碼是97,所以最終結(jié)果是98。另外還有一行代碼char c4 = 97,由于c4是char類型,所以會(huì)把97看做ASCII碼,所以c4是’a’字符。
接下來(lái),我們來(lái)看一看關(guān)于轉(zhuǎn)義字符:\,請(qǐng)看以下代碼:
public class CharTest02 {
public static void main(String[] args) {
char c1 = 't';
System.out.println("這是一個(gè)普通的字符 = " + c1);
char c2 = '\t';
System.out.println("abc" + c2 + "def");
}
}
編譯通過(guò)了,并且運(yùn)行結(jié)果如下圖所示:
圖4-3:\t
表面看起來(lái)’\t’是由兩個(gè)字符構(gòu)成,按說(shuō)應(yīng)該編譯報(bào)錯(cuò),因?yàn)樗吘故且粋€(gè)字符串,最終的結(jié)果編譯通過(guò)了,這還是說(shuō)明’\t’是一個(gè)字符,所以\具有轉(zhuǎn)義功能,根據(jù)以上輸出結(jié)果可以看出\t是制表符。接下來(lái)我們來(lái)看一看其它的轉(zhuǎn)義字符。
public class CharTest03 {
public static void main(String[] args) {
System.out.println("換行符 = hello\nworld");
System.out.println("普通的單引號(hào) = " + '\'');
System.out.println("普通的斜杠=" + '\\');
System.out.println("普通的雙引號(hào)=" + "\"");
System.out.println('\u4e2d');
}
}
運(yùn)行結(jié)果如下圖所示:
圖4-4:轉(zhuǎn)義字符
通過(guò)以上的測(cè)試:\n表示換行符,\’表示普通的單引號(hào)字符,\\表示一個(gè)普通的\字符,\”表示一個(gè)普通的雙引號(hào)字符,\u后面的十六進(jìn)制是文字的Unicode編碼。