Java 大整数常数行为

Java 大整数常数行为,java,integer,logic,biginteger,Java,Integer,Logic,Biginteger,为什么下面的语句返回false? BigInteger bigInteger = new BigInteger("0"); System.out.println((BigInteger.ZERO == bigInteger)); 我应该在新的BigInteger(?)中传递什么,以便条件为真。根据规范,new总是创建一个新实例(或者它失败) 无论将哪个实例分配给biginger.ZERO,它都不是您在代码中使用new biginger(“0”)创建的实例 由于它不是同一个实例,=仅当操作数引用

为什么下面的语句返回false?

BigInteger bigInteger = new BigInteger("0");
System.out.println((BigInteger.ZERO == bigInteger));

我应该在新的BigInteger(?)中传递什么,以便条件为真。

根据规范,
new
总是创建一个新实例(或者它失败)

无论将哪个实例分配给
biginger.ZERO
,它都不是您在代码中使用
new biginger(“0”)
创建的实例

由于它不是同一个实例,
=
仅当操作数引用同一个实例时才返回true(前提是它们都是引用类型,在本例中是引用类型),因此结果为false



您几乎不想使用
a==b
a!=B
。您应该使用
a.equals(b)
!a、 等于(b)
。(或者
Objects.equals
,如果
a
可能为空)。

根据规范,
new
总是创建一个新实例(或者失败)

无论将哪个实例分配给
biginger.ZERO
,它都不是您在代码中使用
new biginger(“0”)
创建的实例

由于它不是同一个实例,
=
仅当操作数引用同一个实例时才返回true(前提是它们都是引用类型,在本例中是引用类型),因此结果为false



您几乎不想使用
a==b
a!=B
。您应该使用
a.equals(b)
!a、 等于(b)
。(或
Objects.equals
,如果
a
可能为空)。

调用
biginger.ZERO.equals(biginger)
。这不是一个原语。我怀疑
System.out.println((biginger.ZERO.equals(biginger))
打印
true
…有人能回答BigInteger.Zero等于什么吗?这不是原始值吗?@arjunkumarmehta不,不是。Java有八种基本数据类型,如下所示
biginger
不是其中之一。您从未对原语调用
new…
。调用
biginger.ZERO.equals(biginger)
。这不是一个原语。我怀疑
System.out.println((biginger.ZERO.equals(biginger))
打印
true
…有人能回答BigInteger.Zero等于什么吗?这不是原始值吗?@arjunkumarmehta不,不是。Java有八种基本数据类型,如下所示
biginger
不是其中之一。您从不在原语上调用
new…