== 和 equals 的区别是什么?

==

对于基本类型和引用类型 == 的作用效果是不同的

基本类型:比较的是值是否相同;
引用类型:比较的是引用是否相同;

equals比较值是否相同,对于String类型会进行转换。

例子:

package test.java;

public class compony {



    static String name;
    int age;
    public compony(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    public static void main(String[] args) {

//        Object c1=new compony("wang");
//        Object c2=new compony("wang");
        String t="wang";
        String t1="wang";
        String t2=new String("wang");

        System.out.println(t==t2);
        System.out.println(t==t1);
        System.out.println(t.equals(t2));
    }
}

false
true
true

来从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;
    }

相同类型则进行==比较,如果输入的类型是String类型则强转成统一的String类型,然后放到char数组中安位比较


版权声明:本文为jnbfknasf113原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。