Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较两个数字字符串值_Java - Fatal编程技术网

Java 比较两个数字字符串值

Java 比较两个数字字符串值,java,Java,我有一个简单的疑问。如果有人帮助我,那就太好了 我有两条线: String string1 = "4"; // and String string2 = "04"; 这两个值是相等的,但是如何在java中比较它们呢?我们有equals和equalsIgnoreCase来比较字符串的字母值,类似地,如何比较数值 Integer.valueOf(string1).equals(Integer.valueOf(string2)); 就是这样。可以使用返回int类型的方法将数字字符串转换为整数。然

我有一个简单的疑问。如果有人帮助我,那就太好了

我有两条线:

String string1 = "4"; // and 
String string2 = "04";
这两个值是相等的,但是如何在java中比较它们呢?我们有
equals
equalsIgnoreCase
来比较字符串的字母值,类似地,如何比较数值

Integer.valueOf(string1).equals(Integer.valueOf(string2));

就是这样。可以使用返回
int
类型的方法将数字字符串转换为整数。然后比较与
4==4
相同,使用Integer类将字符串转换为整数


对于很长的值,不要忘记使用
biginger

返回新的BigInteger(s1)。比较到(新的BigInteger(s2));

完全跳过将其解析为int来处理任意大的数字,只比较字符串。作为奖励,它也适用于十进制数(除非有尾随的零,您可能可以用锚定字符串的结尾来做类似的事情)

如果确定没有空格字符,则可以省略修剪

    String string1 = "4"; // and
    String string2 = "04";

    String noLeadingZeroes1 = string1.trim().replaceFirst("^0+(?!$)", "");
    String noLeadingZeroes2 = string2.trim().replaceFirst("^0+(?!$)", "");

    System.out.println(noLeadingZeroes1.equals(noLeadingZeroes2));

这种比较是在性格的基础上进行的。所以'2'>'12'是正确的,因为比较将以'2'>'1'的形式进行,并且按字母顺序排列,以unicode的形式,'2'总是大于'1'。因此,结果将是真的。

newinteger(string1)==newinteger(string2)@madhailsilence。请注意,当您使用
=
比较两个
Integer
对象时,您的方法将失败,这可能会被视为犯罪。@RohitJain请注意,由
new
创建的整数不会被“缓存”<代码>整数a=1
整数a=新整数(1)不同@madhailsilence。2.Java将整数对象缓存在特定范围内,通常是
[-128127]
,在这种情况下,当您将整数文本分配给整数引用时,它不会创建新的整数对象,如
msi
所述。“我弄错了,在你的情况下,缓存不支持tru。”默哀。3.与
==
进行对象比较的犯罪是,它并没有真正比较内容,而是比较参考价值。因此,指向具有相同值的两个对象的两个对象引用不会被
=
判断为相等,因此您应该始终使用
equals
方法进行对象比较。
valueOf(String)
内部调用
parseInt(String)
。使用
=
比较
parseInt(String)
的结果时不需要装箱。如果数字长度超过Int所能容纳的长度,这不会溢出吗?我还发现这个答案的解释非常有用。^锚点将确保匹配的0+位于输入的开头。(!$)负前瞻确保不会匹配整个字符串。
Integer.parseInt(string1) == Integer.parseInt(string2)
    String string1 = "4"; // and
    String string2 = "04";

    String noLeadingZeroes1 = string1.trim().replaceFirst("^0+(?!$)", "");
    String noLeadingZeroes2 = string2.trim().replaceFirst("^0+(?!$)", "");

    System.out.println(noLeadingZeroes1.equals(noLeadingZeroes2));