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

有人可以向我解释一下为什么 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");

        }

     }

 }


哆啦的时光机
浏览 77回答 3
3回答

慕勒3428872

Python 的str类对其__eq__方法使用值相等。在 Python 中,类可以重写__eq__来定义==行为方式。与 Java 相比,Java==总是执行引用相等。在 Java 中,仅当两个对象实际上是同一个对象时==才会返回;true无论其内容如何。Java 的运算符==与 Python 的运算符更具可比性is。正如评论中指出的,更好的比较是比较这些:"a".equals("a")  // Java"a" == "a"  # PythonJava 的String类具有equals值相等性而不是引用相等性。

有只小跳蛙

在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中的运算符,它比较两个引用是否指向同一个对象

墨色风雨

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

相关分类

Java