现在的位置: 首页 > Java面试题 > 正文

== 和 equals 的区别是什么?

2021年09月14日 Java面试题 ⁄ 共 520字 ⁄ 字号 暂无评论

基本类型和引用类型比较,== 的作用效果是不同的。

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

引用类型:比较的是引用是否相同


1
2
3
4
5
6
7
8
9
10
11
12
13
int x = 10;
    int y = 10;
    String a = "panda";
    String b = "panda";
    String c = new String("panda");
    // true 基本类型比较值是否相同
    System.out.println(x == y);
    // true 引用类型比较引用是否相同,这里引用相同
    System.out.println(a == b);
    // false 引用不同
    System.out.println(a == c);
    // true 引用不同,String重写了equals,使其用值比较
    System.out.println(a.equals(c));

equals 本质上就是 ==,Object类中定义的 equals 方法如下


1
2
3
public boolean equals(Object obj) {
        return (this == obj);
    }

总结:== 对于基本类型比较的是值,对于引用类型比较的是引用;而 equals 默认情况下是引用比较,只是很多类重写了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。

给我留言

留言无头像?


×