首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python和java ==操作符有什么区别?

python和java ==操作符有什么区别?
EN

Stack Overflow用户
提问于 2019-10-24 23:01:35
回答 3查看 840关注 0票数 3

有人能解释一下为什么Python能够打印下面的语句,而Java没有,我知道它与==有关,但我并不真正理解两者之间的区别。

Python代码

代码语言:javascript
复制
str1 = "Pro"
str2 = str1 + ""

if str1 == str2:
   print("the strings are equal")```

Java代码

代码语言:javascript
复制
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");
        }
     }
 }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-24 23:04:38

在python ==中,通过重写(a,b)方法来比较对象的内容,为了比较对象的内容,str类重写了该方法。

代码语言:javascript
复制
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类中被重写。

代码语言:javascript
复制
if (str1.equals(str2))

所以java ==操作符等于python中的is操作符,它比较了两个引用是否指向同一个对象。

票数 1
EN

Stack Overflow用户

发布于 2019-10-24 23:08:14

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

对比一下==总是引用相等的Java。在Java中,只有当两个对象实际上是同一个对象时,==才会返回true;而不管它们的内容如何。Java的==更类似于Python的is操作符。

如评论中所指出的,更好的比较办法是比较以下几点:

代码语言:javascript
复制
"a".equals("a")  // Java

"a" == "a"  # Python

Java的String类有它的equals做值相等,而不是引用相等。

票数 3
EN

Stack Overflow用户

发布于 2019-10-24 23:05:41

它很好地解释了这里

这里引用了该站点的一句话:“我们可以使用==操作符进行引用比较(地址比较)和.equals()方法进行内容比较。简单地说,==检查两个对象是否指向相同的内存位置,而.equals()则评估对象中值的比较。”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58550199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档