黑马程序员技术交流社区

标题: 菜鸟求解答小问题 [打印本页]

作者: 待解封的小刀    时间: 2014-6-29 07:52
标题: 菜鸟求解答小问题
System.out.println('5'+0); 输出是53  我想问下这个表示是数字5在ASCII编码表中代表53 还是字符'5'表示53
System.out.println(char)(5+0);输出是梅花,这个表示什么?是数字5在ASCII表中代表梅花吗?
System.out.println(char)('5'+0);输出是5 这个表示什么?
有点晕了  大神 求解答啊
作者: 001可望成功    时间: 2014-6-29 15:55
System.out.println('5'+0);  0的ASCII编码是48,再加一个字符5,所以就53了
System.out.println(char)(5+0);这个还真是第一次见,我试了一下System.out.println(char)(6+0);输出时黑桃,我查一下ASCII码表,没发现有黑桃梅花,表示不解,同问????
作者: ⋛⋌⋚JEEP    时间: 2014-6-29 18:51
对这道题目,换一个思维方式去理解就好了。打个比方吧,用我们最熟悉的'a'验证一下。
  1. System.out.println('a'+0);  //首先,字符a在内存空间占1bit(字节),0默认是int型,占4bit;然后,'a'会自动提升为int型,对照ASCII码表是数字97,所以输出为97。
  2. System.out.println((char)(97+0));//首先,(97+0)还是97,默认int型;然后对照ASCII码表,就是字符'a',所以强转后输出是字符a
  3. System.out.println((char)('a'+0));//首先,'a'会自动提升为int型,对照ASCII码表是数字97,所以加0还是97;然后数字97强转回字符类型,对照ASCII码表当然是输出'a'啦。
复制代码

现在,我们再看看lz问题。
1、'5'在ASCII中查阅就是53;
2、输出来是字符类型的梅花,梅花在ASCII中对应的就是5;
3、输出是5,肯定就是字符5啦。
(编程思想很重要,有助于我们代码,加油吧!)
作者: 待解封的小刀    时间: 2014-6-29 19:24
⋛⋌⋚JEEP 发表于 2014-6-29 18:51
对这道题目,换一个思维方式去理解就好了。打个比方吧,用我们最熟悉的'a'验证一下。

现在,我们再看看lz ...

亲 字符a  不是要占两个字节吗? 字符类型在java中不都是两个字节吗?还有 就是  按照你的意思  就是说 这个字符5  和数字5 在ASCII编码表里面表示的是不同的吗?
作者: ⋛⋌⋚JEEP    时间: 2014-6-29 20:24
本帖最后由 ⋛⋌⋚JEEP 于 2014-6-29 20:27 编辑
待解封的小刀 发表于 2014-6-29 19:24
亲 字符a  不是要占两个字节吗? 字符类型在java中不都是两个字节吗?还有 就是  按照你的意思  就是说  ...
  1. <p>char a=2;
  2. byte d = a;
  3. System.out.println(d);//编译失败,原因是字符类型char占2bit的内存空间。
  4. byte d1 ='a';
  5. System.out.println(d1);//编译成功,原因是'a'占内存空间1bit;
  6. 对于ASCII编码表你要知道,就是编码值(数字)跟字符的映射关系,这个你查表就知道了,给你地址:<a >http://baike.baidu.com/view/15482.htm?from_id=99077&type=syn&fromtitle=ascii%E7%A0%81&fr=aladdin</a><img border="0" alt="" src="http://bbs.itheima.com/static/image/smiley/grapeman/04.gif" smilieid="49"></p>(还搞不懂就没辙了。。。)
复制代码

作者: 嗅ㄨiaǒ孑    时间: 2014-6-29 20:41
你自己试试啊
作者: 待解封的小刀    时间: 2014-6-29 22:47
001可望成功 发表于 2014-6-29 15:55
System.out.println('5'+0);  0的ASCII编码是48,再加一个字符5,所以就53了
System.out.println(char)(5 ...

我觉的是这样  char()表示的是   字符类型,所以,这个char(6),代表的是ASCII编码表中的6是用什么字符表示的,现在ASCII编码表中找不到6  所以也就没有梅花了。如果显示的话 应该是  梅花对应6.




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