黑马程序员技术交流社区

标题: char类型相加问题 [打印本页]

作者: Integer    时间: 2015-8-31 06:20
标题: char类型相加问题
本帖最后由 Integer 于 2015-8-31 06:35 编辑

今天看到这么一道面试题,char a = '1' , char b = 5, char c = (char)(a + b) 。
我自己在这个题的基础上做了点小修改 char a = '1' , char b = 98, char c = (char)(a + b)
请告诉我结果,为什么?

作者: BlackHorse001    时间: 2015-8-31 09:09
哥哥,是错误的吧,char b=5,就是错误的。int b=5/98才对,这样的话就是'1'对应的ascII值53加上5或者98,结果再找到58/151对应符号:’:‘和超出了ascII范围采用unic编码对应的符号
作者: huangqq250    时间: 2015-8-31 11:30
char a = '1';
char b = '5';
char c = (char)(a+b);
System.out.println("c="+c);
这个是可以运行的,可以查ASC码表‘1’是49;char b = 5就把b当成5好了;
a+b=54,54查表ASC是‘6’所以char c = (char)(a+b);输出的内容是‘6’这个字符;
你把b改成了98,a+b=147,在asc码表中我查不到147编号的这个字符。
这个是我的理解
作者: huangqq250    时间: 2015-8-31 11:35
BlackHorse001 发表于 2015-8-31 09:09
哥哥,是错误的吧,char b=5,就是错误的。int b=5/98才对,这样的话就是'1'对应的ascII值53加上5或者98, ...

char只能接收一个字符,直接写数字JAVA会吧char当作ascii码处理
作者: BlackHorse001    时间: 2015-8-31 17:13
huangqq250 发表于 2015-8-31 11:35
char只能接收一个字符,直接写数字JAVA会吧char当作ascii码处理

虚拟机内部是按数字查ascII码表,但是你这是赋值,int赋给char你觉得能装下吗,编译就不过的,亲
作者: huangqq250    时间: 2015-9-4 12:21
BlackHorse001 发表于 2015-8-31 17:13
虚拟机内部是按数字查ascII码表,但是你这是赋值,int赋给char你觉得能装下吗,编译就不过的,亲 ...

可以的啊,我都是自己实践过的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2