java - 当传递给需要对象类型的方法时,整数将变为 Long

标签 java object integer autoboxing

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 : 2lintlong。结果是最宽的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/

相关文章:

java - 使用递归方法通过控制流中断 Java 循环的迭代

java - (Float value + Integer value + long value) 如何给出意想不到的结果?

r - 如何测试对象是否为向量

java - 将对象存储在数组中

java - EntityManager.find 方法导致 MySQLIntegrityConstraintViolationException

c++ - 排序 vector 不起作用

Ruby 'is_a?' 需要类或模块 (TypeError)

c++ - 8个8位字符数组示意图

c++ - 检查输入是C++中的数字还是字符串

java - 无法在 Java 中参数化 SQl 查询