public class Main
{
public static void main(String args[])
{
process(true ? 1 : 2L);
}
static void process(Object object)
{
System.out.println(object instanceof Integer);
}
}
我的预期输出是true。
但是实际输出是false。
我的理解是在整数数据类型之间将分配最大的类型。如果是这样,这叫什么?
true ? 1 : 2l
的thethe和else部分是int
和long
。结果是最宽的long
,然后将部分转换为长整型。参见JLS。
在计算机科学中,这是平衡类型。
34 / 2.0 // double, more a case of _widening a type_.
c ? 2.0 : 34 // double
[类似于here,具有int
和long
的三元表达式将服从binary numeric conversion,得到long
。