經典Java面試題之Java中Char型別的運算
char在java中稱為“字元型”,佔2個位元組。本文是本站小編搜尋整理的關於經典Java面試題之Java中Char型別的運算,有需要的小夥伴可以參考一下,希望對大家有所幫助!想了解更多相關資訊請持續關注我們應屆畢業生考試網!
[面試原題]
假設y是字元型別,初始化值為‘b’,那麼以下語句輸出的結果是什麼?
A. tln(++y);
B. tln(y+1);
[正確答案]
A.‘c’
B. 99
[面試技術點]
字元在java中的運算。
[解讀A]
char在java中稱為“字元型”,佔2個位元組。字元常量是用單引號括起的一個字元,且字元常量在記憶體中儲存的是該字元在Unicode字符集中的排序位置,即整數。
比如:
char y='b';
記憶體y中儲存的是字元’b’在Unicode字符集中的排序位置98。【可以通過語句tln((int)y);來獲取Unicode的排序位置。】因此上面的語句也可以寫成:
char y=98;
tln(++y);語句,先執行++y,結果為99,然後輸出對應位置的字元’c’。
[解讀B]
博為峰小博老師在這裡要給大家說一個概念,java中的“向上相容”,即:不同資料型別的資料參與運算,資料型別要強制轉換,轉換的方向是:char->short->int->long->float->double。
在tln(y+1);這個語句中,y是char型別,1是int型別,所以把y強轉成int,然後運算結果是99,輸出也是int型別99。
[擴充套件]
char是Java中的字元型別,與別的語言不同的是,char在Java中是16位的,因為Java用的是Unicode。不過8位的ASCII碼包含在Unicode中,是從0~127的。
Java中使用Unicode的'原因是,Java的Applet允許全世界範圍內執行,那它就需要一種可以表述人類所有語言的字元編碼Unicode。但是English,Spanish,German, French根本不需要這麼表示,所以它們其實採用ASCII碼會更高效。這中間就存在一個權衡問題。
因為char是16位的,採取的Unicode的編碼方式,所以char就有以下的初始化方式:
char c='a'; //字元,可以是漢字,因為是Unicode編碼,如char c=’我’,記憶體對應的unicode值為:25105。
char c=十進位制數,八進位制數,十六進位制數等等; //可以用整數賦值
char c='u數字'; //用字元的編碼值來初始化,如:char='