看之前请先掌握java数据类型,如若未了解或需要复习,请看博主的3.java的数据类型
"=="
比较基本数据类型时比较的是表面值的内容,而比较两个对象时比较的是两个对象的内存地址值。
equals
equals方法不能作用于基本数据类型的变量,只作用于引用数据类型。
比较的是引用类型的变量所指向的对象的地址。
有些引用类型进行了重写,比如String、Date等类,比较的是所指对象的内容(值)。
拓展
int x = 10;
int y = 10;
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(x == y); // true
System.out.println(str1 == str2); // false
System.out.println(str1.equals(str2)); // true
自行理解
String str3 = "abc";
String str4 = "abc";
System.out.println(str3 == str4); // true
str3与str4为什么会相等?
用到了内存中的常量池,当运行到str3创建对象时,如果常量池中没有,就在常量池中创建一个对象"abc",第二次创建的时候,就直接使用,所以两次创建的对象其实是同一个对象,它们的地址值相等。