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。
posted @ 2018-05-23 22:15  TA写Java  阅读(4419)  评论(0编辑  收藏  举报