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

为什么==for Integer.ValueOf(500)返回false,而对于5返回true?[副本]

那开济
2023-03-14
System.out.println(Integer.valueOf(5) == Integer.valueOf(5));
System.out.println(Integer.valueOf(500) == Integer.valueOf(500));

输出为

true
false

为什么第一行返回true,而第二行返回false?这里有什么诀窍,因为两者都在integer类上调用valueOf()

共有1个答案

胡璞瑜
2023-03-14

有低编号整数对象的缓存实例,但没有任何高值整数对象的缓存实例

如果您之前没有注意到,您正在比较对象,而不是ints。

 类似资料:
  • 问题内容: 据我所知,使用或实例化对象分别返回或的新实例。具有 新标识 的新实例对象。 在我实际测试它之前,这对我来说是很清楚的,我注意到它实际上返回了而不是预期的: 如预期的那样,分别使用和创建对象时,也会表现出这种行为: 我可以在状态文档中找到唯一相关的信息: […]例如,return和return 。 如果未提供任何参数,则构造函数将创建一个新的空元组。 可以说,这不足以回答我的问题。 那么

  • 为什么以下输出为True? 这将始终输出,即使条件似乎表明并非如此。如果我删除括号,那么它可以工作,但我不明白为什么。

  • 问题内容: 如果我这样做: 那又回来了。仅仅是因为在列表中。 但是,如果我这样做: 那又回来了。而等于: 为什么? 问题答案: 运算符优先级 2.x,3.x。的优先级低于的优先级。因此,它等效于: 这就是你想要的: 正如@Ben指出的那样:建议从不写作,更喜欢。前者使它看起来像一个函数调用,而它却是一个运算符,而不是一个函数。

  • 问题内容: 我在jsfiddle.net上玩,我很好奇为什么返回true? 这样: 但这不是: 这个怪癖有用吗? 问题答案: 操作顺序导致在javascript中解释为产生,并且true计为1,导致其返回true。 这也是为什么返回false,返回true,为什么将其解释为,从而导致的原因。

  • 问题内容: 我和我的同事有一个错误,这是由于我们假设会返回空流调用而导致的。 当然,假定和不阅读文档是我们的错。但是我不明白的是为什么空流的默认行为会返回。这是什么原因呢?像(相反地返回false)一样,此操作以命令式方式使用,它离开了monad,并且可能在语句中使用了。考虑到这些事实,是否有任何理由使大多数用途都需要默认为空流? 问题答案: 这就是所谓的虚无事实。空集合的所有成员都满足您的条件;

  • 问题内容: 我正在使用a 检查我的哈希密码。我有PHP 5.5: 我上车了。我已经检查了posts的值和mysql user_password_hash返回。 我不知道为什么它返回假 有任何想法吗? 问题答案: 手册中的列长度可能是问题所在: 建议将结果存储在可扩展超过60个字符的数据库列中(255个字符是一个不错的选择)。 链接