Java 大整数常数行为
为什么下面的语句返回false?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”)创建的实例 由于它不是同一个实例,=仅当操作数引用
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…
。