黑马程序员技术交流社区
标题:
条件表达式问题
[打印本页]
作者:
周世阳
时间:
2012-8-19 03:36
标题:
条件表达式问题
int x=3;
System.out.println((x>3)?1.1:1);
复制代码
输出为1.0
1.1或3与1没有任何的加减乘除运算,只是一个条件表达式,输出1才是合理的为什么输出的是1.0???
作者:
杨习平
时间:
2012-8-19 04:23
A:数据类型转换
强制转换
从大到小的时候,需要使用强制转换。但是可能损失精度。
自动转换
从小到大,会自动转换
byte,short,char -- int - long - float - double
这里说的很清楚,从大到小的时候,需要使用强制转换。但是可能损失精度。从小到大,会自动换,
根据你的这个题目: int x=3;
System.out.println((x>3)?1.1:1);
这个java语句中联合三元运算符, 即 A条件B?A : B ,如果A为真 就返回A ,
反之返回B。你定义的是int 3和 3 比较 3>3当然是false ,所以返回1 ,又因为int 和
double 型的是不同类型,所以要有一个int ------->double 的自动转化,转化double ,所以是int 1----->double 1.0,的到结果就是 1.0:
希望你结合例子能理解。
作者:
方志亮
时间:
2012-8-19 08:08
01.int x=3;
02. System.out.println((x>3)?1.1:1);
(x>3)?1.1:1 因为?后边的值为double类型的 所以根据double类型输出
输出结果 和 运算结果都是根据最高的类型输出的
作者:
胡文凡
时间:
2012-8-19 08:10
楼上原因正确,补充一下,不是因为定义的x的类型的原因,即
float x=3;
System.out.println((x>3)?1.1:1);
还是会输出1.0。
比较的是(x>3)?
1.1:1
。1.1和1比较,自动强制转型
作者:
邹海洋
时间:
2012-8-31 14:59
首先 ?: 这是个运算符,既然是运算,那么就涉及参与运算数据的数据类型。1.1是double类型1是int类型,运算时会有个类型的自动提升,结果是double类型,所以输出是1.0
作者:
芦曦
时间:
2012-8-31 17:00
int x=3;
System.out.println((x>3)?1.1:1);//[color=Red]这句输出语句的意思是:判断x的值,如果x的值大于3,那么输出 1.1:1 中的前者也就是1.1,反之则输出后者1,那么又因为1.1是double类型 1是int类型,所以运算时会有个类型转换,输出的结果就是1.0了。[/color]
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2