gpt4 book ai didi

java - 代码对象 o = true ?新整数(0): new Long(1) returns Long with value 0. 为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:51:54 25 4
gpt4 key购买 nike

<分区>

请考虑我们有以下代码:

Object obj = true ? new Integer(0) : new Long(1);
System.out.println(obj.getClass() + "\nvalue = " + obj);

结果是:

class java.lang.Long
value = 0

代替:

class java.lang.Integer
value = 0

有人能解释一下为什么我们在 Java 中有这样的功能吗?这对我来说很奇怪。您有任何有用的示例吗?

更新:这是一段字节码,我们可以看到那里发生了什么

NEW java/lang/Integer
DUP
LDC "0"
INVOKESPECIAL java/lang/Integer.<init> (Ljava/lang/String;)V
INVOKEVIRTUAL java/lang/Integer.intValue ()I
I2L
INVOKESTATIC java/lang/Long.valueOf (J)Ljava/lang/Long;
ASTORE 1

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com