为了账号安全,请及时绑定邮箱和手机立即绑定

python 和 java == 运算符有什么区别

python 和 java == 运算符有什么区别

哆啦的时光机 2023-12-13 15:13:58
有人可以向我解释一下为什么 Python 能够打印下面的语句,而 Java 却不能。我知道这与 Java 中的 == 和 equals() 有关,但我不太明白其中的区别。Python代码str1 = "Pro"str2 = str1 + ""if str1 == str2:   print("the strings are equal")```Java代码public class StringEq {    public static void main(String[] args) {        String str1 = "Pro";        String str2 = str1 + "";       if (str1 == str2) {            System.out.println("The strings are equal");        }     } }
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

Python 的str类对其__eq__方法使用值相等。在 Python 中,类可以重写__eq__来定义==行为方式。


与 Java 相比,Java==总是执行引用相等。在 Java 中,仅当两个对象实际上是同一个对象时==才会返回;true无论其内容如何。Java 的运算符==与 Python 的运算符更具可比性is。


正如评论中指出的,更好的比较是比较这些:


"a".equals("a")  // Java


"a" == "a"  # Python

Java 的String类具有equals值相等性而不是引用相等性。


查看完整回答
反对 回复 2023-12-13
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

在Python中==用于通过重写运算符来比较对象的内容。eq (a, b)方法,str类已重写此方法以便比较对象的内容

These are the so-called “rich comparison” methods. The correspondence 
between operator symbols and method names is as follows: x<y calls 
x.__lt__(y), x<=y calls x.__le__(y), x==y calls x.__eq__(y), x!=y calls 
x.__ne__(y), x>y calls x.__gt__(y), and x>=y calls x.__ge__(y).

但是在java中运算符在这里==用来比较对象的引用

使用“==”运算符来比较文本值是 Java 初学者最常犯的错误之一。这是不正确的,因为“==”仅检查两个字符串的引用相等性,即它们是否引用同一对象。

因此,在java中要比较对象的内容,您必须使用equals在类中被覆盖的对象String

if (str1.equals(str2))

所以java==运算符等于ispython中的运算符,它比较两个引用是否指向同一个对象


查看完整回答
反对 回复 2023-12-13
?
墨色风雨

TA贡献1853条经验 获得超6个赞

以下是引用其他的:“我们可以使用 == 运算符进行引用比较(地址比较),使用 .equals() 方法进行内容比较。简单来说,== 检查两个对象是否指向同一内存位置,而.equals() 计算对象中值的比较。”


查看完整回答
反对 回复 2023-12-13
  • 3 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信