龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

为什么用 “==” 与 “equal”得到的输出不同

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
[code] class ObjectEquals { static int maxElements; ObjectEquals(int maxElements) { this.maxElements = maxElements; } public static void main(String[] args) { ObjectEquals a = new ObjectEquals(100); ObjectEquals b = new ObjectEquals(100); i

  [code]
  class ObjectEquals {
  static int maxElements;
  
  ObjectEquals(int maxElements) {
  this.maxElements = maxElements;
  }
  
  public static void main(String[] args) {
  ObjectEquals a = new ObjectEquals(100);
  ObjectEquals b = new ObjectEquals(100);
  if(a.equals(b))
  System.out.println("Objects have the same values");
  else
  System.out.println("Objects have different values");
  }
  }
  [/code]
  
  以上的输出是 different ,为什么? 当然假如比较 "==" ,更是 different 了。
  
  nod,其实equals并非真正的比较value,在这里equals和==其实都是比较引用。
  但是我们经常认为equals是比较值,有两个原因:
  1。原始类型的数据比如string,int,用equals实际是比较值。
  2。sun实际上是鼓励大家通过重写equals来使之的语义是比较值。但是我们往往很少重写。
  
精彩图集

赞助商链接