当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选java面试题-== 和 equals 的区别?

金三银四精选java面试题-== 和 equals 的区别?

来源:图灵教育
时间:2023-11-27 10:25:34
 

== 和 equals 的区别?

  • ==:如果作用于基本数据类型变量,则直接比较其存储的值是否相等

如果作用于引用类型的变量,则比较的是所指向的对象的地址是否相等

  • equals:比较是否是同一个对象。equals()方法存在于Object类中,而Object类是所有类的直接或间接父类,在没有重写equals()方法的类中,和==一样比较引用类型变量所指向的对象地址是否相等重写equals方法就看各个类重写后的逻辑,比如string类,虽然是引用类型,但是String类中重写了equals方法,方法内部比较的是字符串中的各个字符是否全部相等。
public void compareDemo1 () {
    int x = 10;
    int y = 10;
    //比较值相等,true
    System.out.println(x == y); // true

    String str1 = new String("baili");
    String str2 = new String("baili");
    //比较对象内存地址不相同,false
    System.out.println(str1 == str2); // false
    //比较字符相同,true
    System.out.println(str1.equals(str2)); // true

    String str3 = "abc";
    String str4 = "abc";
    //比较对象内存地址相同,true
    System.out.println(str3 == str4); // true
}