当前位置: 首页 > 知识库问答 >
问题:

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

丁经国
2023-03-14

为什么在比较Jython中相同值的Java整数和Python整数时会出现以下行为?

>>> from java.lang import Integer
>>> 10 == Integer(10)
False
>>> 10 <= Integer(10)
True
>>> 10 >= Integer(10)
True

好吧,我觉得这两个

>>> 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

我是遗漏了什么,还是就像Java类(我使用的是Jython 2.7)的__eq__魔法(dunder)方法被破坏一样简单?

编辑

感谢weston澄清了在java中,10==newinteger(10)的计算结果为true,因此问题不是重复java中==vs equals()之间的区别是什么?


共有1个答案

越学文
2023-03-14

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

但是要把水弄得更浑浊

 类似资料:
  • 问题内容: 我想比较Java中的类类型。 我以为我可以这样做: 我想比较一下是否传递给函数的obj是从MyObject_1扩展而来的。但这是行不通的。似乎getClass()方法和.class提供了不同类型的信息。 如何比较两个类类型,而不必创建另一个伪对象来比较类类型? 问题答案: 试试这个: 由于继承,这对接口也有效: 有关instanceof的更多信息,请访问:http : //mindpr

  • 我有以下代码: 假设我现在将电脑的时区设置为太平洋时间(PDT为UTC-7),则打印 2012年6月29日星期五08:15:00太平洋标准时间 PDT不是比IST(印度标准时间)晚12.5小时吗?这个问题在任何其他时区都不会发生-我尝试了UTC、PKT、MMT等,而不是日期字符串中的IST。Java中有两个IST吗? 注意:实际代码中的日期字符串来自外部源,因此我不能使用GMT偏移量或任何其他时区

  • 问题内容: 在Java中,我编写了一个Binary Search Tree类,该类使用递归添加节点。现在,我想使用泛型对其进行概括,以便我可以了解更多有关它们的信息。 我添加节点的功能在以下类中 主类具有以下代码来开始工作。我正在使用字符串,但是数据类型可能是一些复杂的类型。 我开始使用Comparable接口,但是如何编写CompareTo()函数?我不知道T是什么类型的?我得到的错误是“运算符

  • 在C中比较相同的浮点值 比较float和float literal的奇怪输出 我读了上面关于浮点的链接,但甚至得到奇怪的输出。 现在按照推广规则,“其他如果”难道不是必须印出来的吗? 但是,这里是打印“if”

  • 所以我更新了代码,添加了行所做的是将主线程置于Hibernate状态一段时间,因此jvm可以获得一些时间来创建一个新线程。我正在得到我的预期输出

  • 我正在使用Mapstruct映射将一个POJO转换为另一个POJO模型 以下是mapstruct自动生成的方法 该方法基本上获取源POJO的映射,并将其转换为目标模型的映射。生成正在通过。 当我运行代码时,我在这个方法中得到了ClassCast异常:HeaderAttributeGenericDataTypeMaptoStringEnergiectAttributeDataMap 堆栈跟踪: 我还