爲什麼在將Java整數與Jython中相同的Python值進行比較時遇到以下行爲?比較Java和Jython類型時的奇怪行爲
>>> from java.lang import Integer
>>> 10 == Integer(10)
False
>>> 10 <= Integer(10)
True
>>> 10 >= Integer(10)
True
好了,所以我覺得很奇怪,這兩個<=
和>=
運營商評估符合市場預期,但==
不...所以現在讓Java的& Jython的類型之間的檢查隱式轉換:
>>> i = Integer(10)
>>> i == 10
False
我聽到你說的其他Java類呢?讓我們嘗試:
>>> from java.lang import Boolean
>>> Boolean(0) == False
False
>>> Boolean(0) == True
False
>>> Boolean(0) # lets just check it is a Java false not a Python one
false
我缺少的東西,或只是簡單的魔術__eq__
(dunder)方法打破了Java類(我用Jython 2.7)?
編輯
感謝weston澄清,在Java中10 == new Integer(10)
評估爲true
,因此問題不是What is the difference between == vs equals() in Java?
可能的重複[在Java中的== vs equals()有什麼區別?](http://stackoverflow.com/questions/7520432/what-is-the-difference-between-vs-equals-in -java) – Julien
不是重複的,那個問題沒有解釋這是因爲在java中沒有看到這種行爲'10 == new Integer(10)'在java中是true。 – weston