当前位置: 首页 > 面试题库 >

比较Java中的Character,Integer和类似类型:使用equals或==?

常彭薄
2023-03-14
问题内容

我想确定Java中的某些内容:如果我有一个Character,Integer或Long以及类似的东西,我应该使用equals还是==足够?

我知道使用字符串不能保证每个唯一字符串只有一个实例,但是我不确定其他盒装类型。

我的直觉是使用equals,但我想确保自己没有浪费性能。


问题答案:

编辑:规范为装箱转换提供了 一些
保证。从5.1.7节开始:

如果装箱的值p为true,false,一个字节,\ u0000到\
u007f范围内的char或-128和127之间的整数或短数,则令r1和r2为任何两次装箱转换的结果的p。r1 == r2总是这样。

请注意,该实现 可以 使用更大的池。

确实会 避免编写依赖于此的代码。不是因为它可能会失败,而是因为它并不明显-很少有人会非常了解规范。(我以前认为这是依赖于实现的。)

您应该使用equals或比较基础值,即

if (foo.equals(bar))

要么

if (foo.intValue() == bar.intValue())

请注意,即使保证自动装箱使用固定值,其他调用者也始终可以创建单独的实例。



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

  • 本文向大家介绍Java基本类型包装类概述与Integer类、Character类用法分析,包括了Java基本类型包装类概述与Integer类、Character类用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java基本类型包装类概述与Integer类、Character类用法。分享给大家供大家参考,具体如下: 基本类型包装类概述 将基本数据类型封装成对象的好处在于可以在对象中定

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

  • 本文向大家介绍Java中值类型和引用类型的比较与问题解决,包括了Java中值类型和引用类型的比较与问题解决的使用技巧和注意事项,需要的朋友参考一下 一、问题描述 前几天因为一个需求出现了Bug。说高级点也挺高级,说白点也很简单。其实也就是一个很简单的Java基础入门时候的值类型和引用类型的区别。只是开发的时候由于自己的问题,导致小问题的出现。还好突然想起来以前看过一篇对于该问题讲解的博客,才能快速

  • 问题内容: 我头疼,调试困难。我正在尝试比较两个通用值,以便可以根据值将它们插入到数组中进行排序。这是我第一次使用Comparable和Comparator界面,因此围绕这些问题的任何其他建议都是不错的选择。 这是我的班级设置方式: put()方法: 这些是我要实现的compareTo()和compare方法。 我遇到的第一个问题是compareTo()方法中的问题,它以“ this”为中心。该错

  • mybatis中java中用什么类型和mysql中的datetime类型比较大小? 我目前用的是java中的string和mysql中的datatime比较类似这种 目前没发现问题,不知道是否完全正确?