gpt4 book ai didi

java - 比较 Java 和 Jython 类型时的奇怪行为

转载 作者:搜寻专家 更新时间:2023-11-01 02:21:10 26 4
gpt4 key购买 nike

为什么在将 Java 整数与 Jython 中具有相同值的 Python 整数进行比较时,我会遇到以下行为?

>>> 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__ 一样简单? Java 类(我使用的是 Jython 2.7)的魔法(dunder)方法被破坏了吗?

编辑

感谢weston为了澄清在 java 10 == new Integer(10)评估为 true因此问题不是 What is the difference between == vs equals() in Java? 的重复

最佳答案

本质上是因为==比较盒装类型的引用,而不是实际值。

但进一步搅浑水<=>=将自动拆箱任何已装箱的操作数。

关于java - 比较 Java 和 Jython 类型时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42003284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com