java中char類型的變量為什么可以賦值為整型數字?


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變量后,輸出字符編碼表中對應的字符。



為什么char類型的變量可以賦值為整型數字?

char在java中是unicode編碼

Java中對char型數據,在內存中存的就是整數,對應一張ASCII碼表 ,比如說字符知 'A' 對應的是65
字符 'a' 對應的是97 ,道所以char c1 = 'A' ; 等效於 char c1 = 65 ;
正是因為這樣,所以字符型數據既可以作為一個字符使用,也可以作為一個整數使用,所以char型數據可以和int型數據進行運算!
比如 'A' + 1 的結果如果用char型變量接收就是 ‘B’ , 用int型變量接收就是66
char c = 'A'+1; 最后c為'B'
int i = 'A' + 1 ; 最后i為 66
雖然char型是以整數存儲,但是和int型還是有一定區別的,表現在取值范圍上,
char型 占2個字節 無符號 范圍是0~65535

所以char c = 65536 就會報錯了,專因為越界了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM