Java中equals()和"=="对比_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java中equals()和"=="对比

Java中equals()和"=="对比

 2018/10/8 12:15:15  andrew7676  程序员俱乐部  我要评论(0)
  • 摘要:1.Java中equals()方法Java中equals()方法1.equals()方法定义在object类中,因此java中的每一个类都具有equals()方法。2.equals()判断调用它的引用与传进来的引用是否一致,即这两个引用是否指向的是同一个对象。3.对于不同类的equals()方法要看具体实现。对于object类的equals()方法来说,它等价于“==”。publicbooleanequals(Objectobj){return(this==obj);
  • 标签:Java
1. Java中equals()方法
class="java" name="code">
Java中equals()方法

1. equals()方法定义在object类中,因此java中的每一个类都具有equals()方法。

2. equals()判断调用它的引用与传进来的引用是否一致,即这两个引用是否指向的是同一个对象。

3. 对于不同类的equals()方法要看具体实现。
   对于object类的equals()方法来说,它等价于“==”。
    public boolean equals(Object obj) {
        return (this == obj);
    }
   对于String类的equals()方法来说,它是判断当前字符串与传进来的字符串的内容是否一致。(对于String对象的相等性判断来说,使用equals()方法,不要使用“==”)
    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;
    }

自定义equals方法,继承object类的equals()方法,并且重写了equals()方法。
public class EqualsTest{
    public static void main(String[] args){
        Student2 s1 = new Student2("zhangsan");
        Student2 s2 = new Student2("zhangsan");
        System.out.println(s1 == s2);
        System.out.println(s1.equals(s2));        
    }
}
class Student2{
    String name;
    public Student2(String name){
        this.name = name;
    }
    public boolean equals(Object anObject){
        if(this == anObject){
            return true;
        }
        if(anObject instanceof Student2){
            Student2 student = (Student2)anObject;
            if(student.name.equals(this.name)){
                return true;
            }
        }
        return false;
    }
}
运行结果:
false
true

String与Object中equals()方法的使用对比
public class StringTest{
    public static void main(String[] args){
        String str = new String("aa");
        String str2 = new String("aa");
        System.out.println(str.equals(str2));
        String str3 = "aa";
        String str4 = "aa";
        System.out.println(str3.equals(str4));
        System.out.println("-----------------");
        Object object = new Object();
        Object object2 = new Object();
        System.out.println(object.equals(object2));
        System.out.println(object.equals(object));
    }
}
运行结果:
true
true
-----------------
false
true


2. Java中"=="的使用
Java中"=="的使用

1. 对于基本数据类型:"=="用来比较值的大小是否相等
2. 对于抽象数据类型:"=="用来比较引用是否指向同一个对象,或者说引用地址是否相同

String与Object中"=="方法的使用对比
public class ObjectTest2{
    public static void main(String[] args){
        Object object = new Object();
        Object object2 = new Object();
        System.out.println(object == object2);
        System.out.println("----------------");
        String str = new String("aaa");
        String str2 = new String("aaa");
        System.out.println(str == str2);
        System.out.println("----------------");
        String str3 = "bbb";
        String str4 = "bbb";
        System.out.println(str3 == str4);
        System.out.println("----------------");
        String str5 = new String("ccc");
        String str6 = "ccc";
        System.out.println(str5 == str6);
        System.out.println("----------------");
        String s = "hello";
        String s1 = "hel";
        String s2 = "lo";
        System.out.println(s == s1 + s2);
        System.out.println("----------------");
        System.out.println(s == "hel" + "lo");
    }
}
运行结果:
false
----------------
false
----------------
true
----------------
false
----------------
false
----------------
true
发表评论
用户名: 匿名