原始数据类型的==运算符

zoo*_*277 3 java primitive equals

可能重复:
toString(),==,equals()对象方法如何在引用和基元类型上以不同方式或类似方式工作?

我试图理解在Java中==和equals与operator之间的区别.例如==将检查它是否是同一个对象,而equals将比较对象的值...那么为什么我们使用==来比较原始数据类型,如int.因为如果我有

   int i =7; //and 
   int j = 6. 
Run Code Online (Sandbox Code Playgroud)

它们不是同一个对象,也不是堆栈中的相同内存地址.或者==对于基元比较的行为有所不同.

Ted*_*opp 8

实际上,==对所有变量的行为都相同:它测试这些变量的值是否相等.在这种情况下Object obj,obj是对象的引用.由于==测试两个对象引用是否具有相同的值,因此测试它们是否引用相同的对象(即引用是否相等).

  • 好吧,不是*相同*.具有"非数字"的位模式的两个"double"变量具有相同的位模式,但仍将比较不相等.这是一个边缘情况,幸运的是:) (2认同)
  • @Jon - 我提到了位模式吗?我同意NaN的情况很不寻常,但我坚持我所说的话.根据[Java语言规范](http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.21.1),Java使用IEEE 754规则进行浮点相等性测试.尽管具有相同的位模式,但这些规则表明两个NaN值不相等.另一种边缘情况是+0.0和-0.0,它们具有不同的位模式,但测试相同. (2认同)

归档时间:

查看次数:

13698 次

最近记录:

14 年,8 月 前