問題闡述
在 Java 語言中,是否可以將字符與代表字符的編碼進(jìn)行比較?
在 Java 語言中,字符類型用于存儲(chǔ)單個(gè)字符,它占用 16 位(2 字節(jié))的內(nèi)存空間,使用關(guān)鍵字 char 進(jìn)行標(biāo)識(shí)。
因?yàn)橛?jì)算機(jī)只能存儲(chǔ)二進(jìn)制數(shù)據(jù),所以需要將字符通過一串二進(jìn)制數(shù)據(jù)來表示,也就是通常所說的字符編碼。Java 對字符采用 Unicode 字符編碼,Unicode 使用 2 字節(jié)表示 1個(gè)字符,并且 Unicode 字符集中的前 128 個(gè)字符與 ASCII 字符集兼容。
例如,字符a的 ASCII 編碼的二進(jìn)制數(shù)據(jù)形式為 01100001,Unicode 字符編碼的二進(jìn)制數(shù)據(jù)形式為 00000000 01100001,它們都表示十進(jìn)制數(shù) 97。從中可以看出與 C、C++一樣,Java 同樣把字符作為整數(shù)對待。所以,在進(jìn)行條件判斷時(shí),就可以將字符與代表字符的編碼進(jìn)行比較。例如,下面的代碼將輸出“條件成立”。
public static void main(String[] args) {
if (d == 100) {
System.out.println("條件成立");
} else {
System.out.println(("條件不成立");
}
注意:
在上面的代碼中,由于字符d的編碼為 100,所以等式“d == 100”成立。如果將字符 d 兩側(cè)的單引號(hào)換成雙引號(hào),程序?qū)⒊鲥e(cuò)。這是因?yàn)?Java 中的字符常量值必須用英文狀態(tài)下的一對單引號(hào)括起來。
點(diǎn)評
在程序設(shè)計(jì)中,字符型數(shù)據(jù)使用得比較頻繁。它占用 2 字節(jié),以單引號(hào)表示。在此要注意的是,字符與字符串是不同的。例如,a表示一個(gè)字符,"a"就表示一個(gè)字符串。雖然都只有一個(gè)字符,但由于后者使用雙引號(hào)括起來,所以它仍然表示字符串。字符型只能表示單個(gè)字符,任何超過一個(gè)字符的內(nèi)容,都不能被聲明為字符型。如果一個(gè)變量被聲明為字符型,也就是使用 char 關(guān)鍵字進(jìn)行聲明,那么這個(gè)變量只能被賦予一個(gè)整數(shù)值,或是用單引號(hào)括起來的一個(gè)字符。