亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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() 計算對象中值的比較?!?/p>


查看完整回答
反對 回復 2023-12-13
  • 3 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號