当前位置: 首页 > 知识库问答 >
问题:

将字符串和整数与等于进行比较

西门经国
2023-03-14

以下代码的输出为假

String str = "3456";
String str1 = "3456";
System.out.println(Integer.valueOf(str).equals(str1));

我不明白。我想它会返回true。在我为SCJP做准备时,了解其背后的原因可能会有所帮助。有人能帮忙吗?

共有3个答案

农飞翔
2023-03-14

equals()方法的一般约定规定(除其他外),要比较的对象需要属于同一个类。这就是为什么你永远无法将苹果和桔子进行比较。

有关equals()方法的完整约定,请参阅javadocs。

屠瑞
2023-03-14

通常,在实现equals()时,首先要做的事情之一是检查对象是否属于同一类型。

public boolean equals(Object obj) {
    if (!(obj instanceof SomeType)) return false;
    ...
}

这也适用于Integer和String类,回答了为什么会收到false的问题。

淳于飞文
2023-03-14

整数永远不会等于字符串。

这两个类都有非常严格的定义,只接受各自类型的对象。

>

  • <代码>整数。等于():

    当且仅当参数不是null且是与此对象包含相同int值的整型对象时,结果才为true。

    tring.equals代码:

    当且仅当参数不是null并且是表示与此对象相同的字符序列的String对象时,结果才为真。

    这实际上是实现equals()的一种非常常见的方法:只有相同类(偶尔还有子类)的对象才能相等。其他实现也是可能的,但也有例外。

    一个常见的例外是集合,如列表:与任何其他实现相比,遵循约定的每个实现如果在相同的顺序中具有相同的内容,则将返回true。

  •  类似资料:
    • 我试图编写一个程序,其中我必须做与模板(本质上是一个字符串)之间的字符串列表的比较。我不知道什么是使用的术语,但它将是更多的日志刮削程序,如果这是有帮助的。 null 这个想法是将输入语句(1-4)与模板字符串(a-b)匹配,如果它们匹配,那么我需要对它们进行操作。Like 1和4匹配句子b,但2不匹配。 提前感谢您的帮助/指示。

    • 如何比较两个列表是否相等验证数据来自Excel工作表。我需要验证两个列表是否相同,并且列表中没有附加元素或缺少元素。我不需要对列表进行排序。打印输出CAGID Excel data=CAGID Web列表

    • 我已经声明了一个实现可比较接口和compareTo方法的类,使用employee ID比较两个员工。创建的类对象插入数组列表。现在,当我使用collections.sort(arrayList对象)时,它工作得很好。我对collective和comparator接口之间的比较有何不同感到困惑。我想知道如何在纯粹由数字组成的employee id字符串和其他字符串employee id之间进行比较,

    • 问题内容: 程序从经过排序的字符串的txt文件中读取,并使用顺序的,迭代的二进制和递归的二进制存储在数组中,然后在数组中搜索位置以及查找该单词所需的迭代次数。当我尝试将数组中的单词与用户输入的单词进行比较时出现错误。不知道为什么。2)希望有人可以解释迭代二进制和递归二进制之间的区别。3)为什么需要这样做… SearchString si = new SearchString(); 程序在下面… }

    • 想改进这个问题吗?通过编辑这篇文章添加细节并澄清问题。 我想知道是否可以将字符串数组值与字符串进行比较,例如;我有一个字符串数组,上面有5个值我想知道哪个索引值具有a或b。我想到了一个主意,但没有成功。 基本上,如果索引0是a,则应打印“Apple”,如果是b,则应打印“ball”,依此类推。有没有办法将值或字符串数组与字符串进行比较?

    • 我有一个本地数据库,一个登录页面和一个servlet。我可以从数据库中获得我想要的值,例如用户名和密码。我还可以在html登录表单中获得用户输入。我对HTML使用Request.GetParameter。我想检查数据库中的用户名是否等于输入的用户名,以及数据库中的密码是否等于输入的密码,否则访问被拒绝。这是我的代码: