服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

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


  [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来使之的语义是比较值。但是我们往往很少重写。

扫描关注微信公众号