Java基本數據類型之char


今天看到一道題,是這樣子的:
package test;
public class Char {
      public static void main(String[] args) {
            char ch1 = 97;
            char ch2 = 'a';
            System.out.println("ch1=" + ch1);
            System.out.println("ch2=" + ch2);
      }
}
當時下意識作出判斷,輸出的結果分別應該是“ch1=97”和“ch2=a”,但答案都是a。於是補了一下這方面的知識點。
 
知識點:
char類型
1.  char類型是一個單一的16位Unicode字符;
2.  最小值是\u0000(即為0);
3.  最大值是\uffff(即為65535);
4.  char類型可以儲存任何字符。
 
char賦值
char a='a';      //任意單個字符,加單引號。
char a='中';     //任意單個中文字,加單引號。
char a=111;      //整數。0~65535。十進制、八進制、十六進制均可。 輸出字符編碼表中對應的字符
注:只能放單個字符。
 
char運算
char類型是可以運算的因為char在ASCII等字符編碼表中有對應的數值。
在JAVA中,對char類型字符運行時,直接當做ASCII表對應的整數來對待。
由char賦值可知,開篇提到的char ch1=97,賦值為整數97時,對應字符編碼ASCII表里的a,因此輸出為a。同理驗證,如果是98,對應的就是b,99對應c。
 
Java面試常見試題:
char類型變量中能不能存儲一個中文漢字,為什么?
答:char類型可以存儲一個中文漢字,因為Java中使用的編碼是Unicode(不選擇任何特定的編碼,直接使用字符在字符集中的編號,這是統一的唯一方法),一個char類型占2個字節(16比特),所以放一個中文是沒問題的。
 
示例:
char m='a';                               ——a。
char m='a'+'b';                          ——Ã。  //char類型相加,提升為int類型,輸出對應的字符。
int m='a'+'b';                             ——195。//195沒有超出int范圍,直接輸出195。
char m='a'+b;                           ——報錯。//因為b是一個賦值的變量。
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。


免責聲明!

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



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