A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Integer

初级黑马

  • 黑马币:18

  • 帖子:18

  • 精华:0

© Integer 初级黑马   /  2015-8-31 06:20  /  749 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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)
请告诉我结果,为什么?

5 个回复

倒序浏览
哥哥,是错误的吧,char b=5,就是错误的。int b=5/98才对,这样的话就是'1'对应的ascII值53加上5或者98,结果再找到58/151对应符号:’:‘和超出了ascII范围采用unic编码对应的符号
回复 使用道具 举报
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编号的这个字符。
这个是我的理解
回复 使用道具 举报
BlackHorse001 发表于 2015-8-31 09:09
哥哥,是错误的吧,char b=5,就是错误的。int b=5/98才对,这样的话就是'1'对应的ascII值53加上5或者98, ...

char只能接收一个字符,直接写数字JAVA会吧char当作ascii码处理
回复 使用道具 举报
huangqq250 发表于 2015-8-31 11:35
char只能接收一个字符,直接写数字JAVA会吧char当作ascii码处理

虚拟机内部是按数字查ascII码表,但是你这是赋值,int赋给char你觉得能装下吗,编译就不过的,亲
回复 使用道具 举报
BlackHorse001 发表于 2015-8-31 17:13
虚拟机内部是按数字查ascII码表,但是你这是赋值,int赋给char你觉得能装下吗,编译就不过的,亲 ...

可以的啊,我都是自己实践过的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马