经典Java面试题-Java中Char类型的运算
2016-10-25 00:00
218 查看
[面试原题]
假设y是字符类型,初始化值为‘b’,那么以下语句输出的结果是什么?
A. System.out.println(++y);
B. System.out.println(y+1);
[正确答案]
A. ‘c’
B. 99
[面试技术点]
字符在java中的运算。
[解读A]
char在java中称为“字符型”,占2个字节。字符常量是用单引号括起的一个字符,且字符常量在内存中存储的是该字符在Unicode字符集中的排序位置,即整数。
比如:
char y='b';
内存y中存储的是字符’b’在Unicode字符集中的排序位置98。【可以通过语句System.out.println((int)y);来获取Unicode的排序位置。】因此上面的语句也可以写成:
char y=98;
System.out.println(++y);语句,先执行++y,结果为99,然后输出对应位置的字符’c’。
[解读B]
博为峰小博老师在这里要给大家说一个概念,java中的“向上兼容”,即:不同数据类型的数据参与运算,数据类型要强制转换,转换的方向是:char->short->int->long->float->double。
在System.out.println(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='\0',表示结束符,它的ascll码是0,这句话的意思和 char c=0 是一个意思。
Unicode编码表:
假设y是字符类型,初始化值为‘b’,那么以下语句输出的结果是什么?
A. System.out.println(++y);
B. System.out.println(y+1);
[正确答案]
A. ‘c’
B. 99
[面试技术点]
字符在java中的运算。
[解读A]
char在java中称为“字符型”,占2个字节。字符常量是用单引号括起的一个字符,且字符常量在内存中存储的是该字符在Unicode字符集中的排序位置,即整数。
比如:
char y='b';
内存y中存储的是字符’b’在Unicode字符集中的排序位置98。【可以通过语句System.out.println((int)y);来获取Unicode的排序位置。】因此上面的语句也可以写成:
char y=98;
System.out.println(++y);语句,先执行++y,结果为99,然后输出对应位置的字符’c’。
[解读B]
博为峰小博老师在这里要给大家说一个概念,java中的“向上兼容”,即:不同数据类型的数据参与运算,数据类型要强制转换,转换的方向是:char->short->int->long->float->double。
在System.out.println(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='\0',表示结束符,它的ascll码是0,这句话的意思和 char c=0 是一个意思。
Unicode编码表:
相关文章推荐
- 经典Java面试题-Java中Char类型的运算
- java对byte,short,char,int,long运算时自动类型转化情况说明
- Java 对byte,short,char,int,long 运算时自动类型转化情况说明
- java对byte,short,char,int,long运算时自动类型转化情况说明
- java里的值传递和引用类型传递的经典面试题
- 类型转换问题(java会把byte,short和char的运算操作转换为int类型即低精度自动向高精度转换)
- Java核心技术及面试指南面试题,基本数据类型、封装类和运算操作的面试题
- Java中涉及byte、short和char类型的运算操作
- Java中涉及byte、short和char类型的运算操作
- Java中涉及byte、short和char类型的运算操作
- java基础----char等数据类型
- java经典面试题
- 【转】JAVA面试题解惑系列(八)——聊聊基本类型(内置类型)
- JAVA面试题解惑系列(八)――聊聊基本类型(内置类型)
- C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short
- 经典Java面试题(搞笑)
- 经典java面试题
- 一道经典的Java面试题,抛析内部结构
- JAVA面试题解惑系列(八)——聊聊基本类型(内置类型)
- JAVA经典截串面试题!