黑马程序员技术交流社区

标题: int类型不是和字符类型相加是连接作用吗! [打印本页]

作者: 鲸鱼先生.    时间: 2014-10-18 23:55
标题: int类型不是和字符类型相加是连接作用吗!
本帖最后由 鲸鱼先生. 于 2014-10-19 01:06 编辑
  1. int a = 2;
  2.                 char b = '5';
  3.                 char c = (char)(a + b);
  4.                 System.out.println(c);
复制代码


作者: 鲸鱼先生.    时间: 2014-10-18 23:56
为什么得7,不是25呢! 不是起连接作用吗?
作者: PinkDay    时间: 2014-10-19 00:07
这个你就不懂了吧~   
你知道ASCII码吗?

键盘上的每一个键都在内存中有自己二进制的表现形式~7的键在电脑里就是55 。之后再将int的值和char的值进行运算,再强转成char之后就找到键盘上的7了。

你会调试的话,你可以试试分开写,像这样:
                int a = 2;
                char b = '5';
                int i = (a + b);
                char c = (char)i;
                System.out.println(c);
你就能看明白了~

或者你反过来写:
//                char c2 = '7';
//                int i = c2;
//                System.out.println(i);

这样 你试试~
作者: 鲸鱼先生.    时间: 2014-10-19 00:10
PinkDay 发表于 2014-10-19 00:07
这个你就不懂了吧~   
你知道ASCII码吗?

看不懂 哪来的55啊?

作者: PinkDay    时间: 2014-10-19 00:15
给你代码了  你调试看看~那个a+b我先放在int i 里接收 之后再转成char了啊  不就是55嘛~ 你不知道ASCII啊
作者: PinkDay    时间: 2014-10-19 00:20
额  好像我说的不全啊  但是我只知道这些~
作者: PinkDay    时间: 2014-10-19 00:32
围观好了~
作者: 戏言丶    时间: 2014-10-19 00:55
连接的是字符串,char和int都是基本数据类型,两者用+相连其实是将char字符对应的ASCII值和int相加,char字符'5'对应的ASCII码值为53,加上2等于55,而55对应的ASCII表中的char字符为7
作者: 鲸鱼先生.    时间: 2014-10-19 01:06
戏言丶 发表于 2014-10-19 00:55
连接的是字符串,char和int都是基本数据类型,两者用+相连其实是将char字符对应的ASCII值和int相加,char字 ...

感觉2的ASC值是50+5也可以奥,感谢,已经理清楚了,我终于可以睡觉了!
作者: csf62615    时间: 2014-10-19 01:50
果然是好学生,不弄明白不睡觉
作者: HM2014nuli    时间: 2014-10-19 07:37
不是,char和int类型做运算会变成int类型
作者: 康师傅-蛋黄派    时间: 2014-10-19 07:46
嗯,学习了
作者: ⋛⋌⋚JEEP    时间: 2014-10-19 08:19
鲸鱼先生. 发表于 2014-10-19 01:06
感觉2的ASC值是50+5也可以奥,感谢,已经理清楚了,我终于可以睡觉了!

当然可以!它们只是相差3,无论在作为int类型,还是在ASCII编码表中都是酱紫!“+”一定要是作为连接号使用,你可以考虑基本数据类型以外的,比如字符串,System.out.println(“2”+5+“”)。




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