1、JAVA中,char占2位元組,16位。可在存放漢字 2、char賦值 char a='a'; //任意單個字元,加單引號。 char a='中';//任意單個中文字,加單引號。 char a=111;//整數。0~65535。十進位、八進位、十六進位均可。輸出字元編碼表中對應的字元。 註:只能放 ...
1、JAVA中,char占2位元組,16位。可在存放漢字
2、char賦值
char a='a'; //任意單個字元,加單引號。
char a='中';//任意單個中文字,加單引號。
char a=111;//整數。0~65535。十進位、八進位、十六進位均可。輸出字元編碼表中對應的字元。
註:只能放單個字元。
3、char運算
char類型是可以運算的因為char在ASCII等字元編碼表中有對應的數值。
在JAVA中,對char類型字元運行時,直接當做ASCII表對應的整數來對待。
示例1:
char m='a'; -->a
char m='a'+'b'; -->? //char類型相加,提升為int類型,輸出對應的字元(a和b分別對應
的數值為97和98,相加等於195,其對應的字元為 ?)。
int m='a'+'b'; -->195 //195沒有超出int範圍,直接輸出195。
char m=197; -->? //輸出字元編碼表中對應的字元。
char m='197; -->報錯 //因為有單引號,表示是字元,只允許放單個字元。
char m='a'+1; -->b //提升為int,計算結果98對應的字元是b。
char m='中'+'國'; -->42282
char m='中'+'國'+'國'+'國'; -->報錯 //int轉char有損失。因為結果已經超出char類型的範圍。
int m='中'+'國'+'國'+'國'; -->86820
char m='中'+1; -->丮 //1是int,結果提升為int,輸出對應的字元。
char m='中'+"國"; -->報錯 //String無法轉換為char。
System.out.println('中'+"國"); -->中國 //沒有變數附值的過程。String與任何字元用“+”相連,轉換為String。
示例2:
char a = 97; -->為char類型變數 a 賦值常量值 97。
char b = 'a'+3; -->d // 97+3=100,ASCII對應的字元為 d。
char c = a+3; -->報錯 //無法從int類型轉換為char類型,接下來讓我們瞭解下為什麼會不
能這樣運算:
首先,我們先知道在jvm記憶體機制中,char類型數據運算是將字元在ASCII表對應的整數以int類型參與運算(可以認為' a '=97),常量(97)與常量(3)運算得到一個新的常量(100),常量賦值給變數(b),不存在強制轉換,只要這個接受變數(b)的類型範圍大於這個常量即可。而變數聲明時需要定義數據類型(例:char a),記憶體就為這個變數劃分一個char類型大小的空間,其中變數(a)的值是可變的,而常量(3)的值是不變的,兩個運算得到的還是一個變數,本例中(a+3)是int類型的變數,而int類型變數(a+3)賦值給char類型變數(c)需要強制轉換,因此會報錯。
char c=(char)(a+3); -->d
總結:
用單引號' '標識,只能放單個字元。
char+char,char+int——類型均提升為int,附值char變數後,輸出字元編碼表中對應的字元。