一个简单的问题:==与equals的区别

来源:互联网 发布:阿沁的淘宝店铺叫什么 编辑:程序博客网 时间:2024/06/15 05:07

Java的==和equals的区别很容易混淆
1. 语义上:==指的是内存引用一样。equals是指的是逻辑相等。逻辑相等具体的意思由编写者决定。
2. 默认情况下(继承自Object类),equals和==是一样的,除非被覆写(override)了。

 public boolean equals(Object obj) {        return (this == obj);    }
  1. 最典型equals已经被override的例子是String; String中的字符串文本相等则视为逻辑相等(s1.equals(s2)==true
public boolean equals(Object anObject) {        if (this == anObject) {            return true;        }        if (anObject instanceof String) {            String anotherString = (String) anObject;            int n = value.length;            if (n == anotherString.value.length) {                char v1[] = value;                char v2[] = anotherString.value;                int i = 0;                while (n-- != 0) {                    if (v1[i] != v2[i])                            return false;                    i++;                }                return true;            }        }        return false;    }

4.使用==比较基本数据类型类型如:boolean、int、char等等,使用equals()比较对象。

原创粉丝点击