繁体   English   中英

如何在Java中比较String和BigInteger之间的值

[英]How to compare values between string and BigInteger in java

String str="1234";
String str2="1234";
BigInteger bigInt=new BigInteger("1234");
Object v1=str;
Object v2=str2;
Object v3=bigInt;
System.out.println("Condition1==>>"+v1.equals(v2));
System.out.println("Condition2==>>"+v1.equals(v3));`

输出:

Condition1==>>true

Condition2==>>false

为什么第二个条件(v1.equals(v3))的结果即使为相同也为假?两个条件有什么区别? 如何使第二个条件结果为真?

您可能对类型的工作方式感到困惑。 有时,两种类型之间存在某些相似(同构)值。 例如,字符串"123"和int 123 尽管它们看起来相同,并且可以在不损失信息的情况下从一个转换为另一个,但是它们实际上不是同一类型(并且在Java中没有预定义的自动转换),因此每种类型都不会有两个值等于。

您必须自己定义和执行这些转换。 因此,您需要编写:

new BigInteger(v1).equals(v3)

您需要在相同的类对象上应用equals。 因此,您需要比较StringStringBigIntegerBigInteger 您可以获取BigIntegerString值并将其与String进行比较,或者需要从String创建一个新的BigInteger并将其与其他String进行比较。

正如@RohitJain所评论的,它们甚至不是同一类型。 实际上,每个equals()方法中的第一个检查是

if(other instanceof ThisType)

在您的情况下:

bigInt.toString().equals(str1)

将返回true。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM