黑马程序员技术交流社区

标题: 三元运算返回值的问题 [打印本页]

作者: yangxin540    时间: 2013-8-13 00:59
标题: 三元运算返回值的问题
本帖最后由 yangxin540 于 2013-8-14 01:09 编辑

int a = 1<5?'1':100;
System.out.println(a);--------打印出来的值为49,这个地方不理解,这个值是怎么来的。

System.out.println(1<5?'1':100);--------打印出来的值为1,这种好像是把其当做String来处理了吧。
作者: 封号了...    时间: 2013-8-13 01:11
1<5?'1':100;-------结果为char类型的'1'把它赋值给int类型,会先向上自动转型,对照ASCII码为49.
输出的时候其实是把int类型自动装箱为Integer类型,然后调用Interger.toString(49);方法转为字符串输出的。
如果直接System.out.println(1<5?'1':100);
相当于System.out.println('1');
相当于System.out.println(Character.toString('1'));
所以打印了个1.
作者: べPNヤ    时间: 2013-8-13 01:11
本帖最后由 べPNヤ 于 2013-8-13 01:14 编辑

int a = 1<5?'1':100;  '1'  要与左边的 a  属于同一类型 所以把 char 类型 ‘1’ 转换成了 int 类型的值 对应的是 unicode码的数值 49      直接打印就是直接把他当字符串给输出了
作者: EYE_SEE_YOU    时间: 2013-8-13 07:25
三元运算的特点是两个结果的类型要相互兼容,char类型与int类型可以兼容,也就是char类型自动提升为int类型,所以你打印出来的是int类型,而不是char类型
作者: 以防万一    时间: 2013-8-13 22:28
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~


保持队形,谢谢合作
作者: yangxin540    时间: 2013-8-14 01:08
封号了... 发表于 2013-8-13 01:11
1

恩,好的,明白
作者: yangxin540    时间: 2013-8-14 01:09
杨璐敏 发表于 2013-8-13 22:28
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~

恩,好的




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