public class Main
{
public static void main(String args[])
{
process(true ? 1 : 2L);
}
static void process(Object object)
{
System.out.println(object instanceof Integer);
}
}
My expected output is true.
But actual out put is false.
我的理解是在整数数据类型之间将分配最大的类型。 如果是的话这叫什么?
最佳答案
true 的 then 和 else 部分? 1 : 2l
是 int
和 long
。结果是最宽的long
,然后部分被转换为long。请参阅JLS .
在计算机科学中,对此的术语是平衡类型。
34 / 2.0 // double, more a case of _widening a type_.
c ? 2.0 : 34 // double
关于java - 当传递给需要对象类型的方法时,整数将变为 Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60003920/