== 和 equals() 的区别?
# == 和 equals() 的区别?
- == : 基本数据类型==比较的是值,引用数据类型==比较的是内存地址。
- 类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。
public static void main(String[] args) {
String s1 = new String("hello"); // s1 为一个引用
String s2 = new String("hello"); // s2和s1内容一样
String s3 = "world"; // 放在常量池中
String s4 = "world"; // 从常量池中查找
String o1 = new Object(); // o1 为一个引用
String o2 = new Object(); // o2 为另一个引用
if (aa == bb) // true 都是常量池的地址
System.out.println("aa==bb");
if (s1 == s2) // false,比较地址,s1 s2是两次new出来的对象,地址肯定不同
System.out.println("a==b");
if (s1.equals(s2)) // true String的equals方法被重写了 比较的是内容
System.out.println("aEQb");
if (o1 == o2) // false Object没有重写equals 比较地址
System.out.println("aa==bb");
if (o1.equals(o2)) // false 比较地址 Object没有重写equals 比较地址
System.out.println("a==b");
if (55 == 55L) { // true 基本数据类型 比较的是数值
System.out.println("true");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
编辑 (opens new window)
上次更新: 2022/05/19, 21:26:01