Sam*_*ley 20 java conditional-operator
在下面的代码中,我有两个相同的条件赋值操作,一个返回Double类型的对象,第二个返回字符串"Integer".
double d = 24.0;
Number o = (d % 1 == 0) ? new Double(d).intValue() : new Double(d).doubleValue();
String result = (d % 1 == 0) ? "Integer" : "Double";
System.out.println(o.getClass()); // prints "class java.lang.Double"
System.out.println(result); // Integer
Run Code Online (Sandbox Code Playgroud)
为什么完全相同的表达式返回两个不同的东西?
Mar*_*aux 20
否则,如果第二个和第三个操作数具有可转换(第5.1.8节)到数字类型的类型,则有几种情况:
- ...
- 否则,二进制数字提升(第5.6.2节)将应用于操作数类型,条件表达式的类型是第二个和第三个操作数的提升类型.
数字促销在§5.6.2中定义.它说:
应用扩展基元转换(第5.1.2节)来转换由以下规则指定的一个或两个操作数:
- 如果任一操作数的类型为double,则另一个操作数转换为double.
- ...
| 归档时间: |
|
| 查看次数: |
580 次 |
| 最近记录: |