黑马程序员技术交流社区
标题:
三元运算返回值的问题
[打印本页]
作者:
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