一、==运算符:
既可以比较基本数据类型也可以比较引用数据类型,对于基本数据类型比较的就是本身的数据值是否一致,对于引用类型就是比较堆内存中的地址值是否一致。
二、equals()方法:
equals方法不能比较基本数据类型的变量,如果该方法没有被重写过的话本质上就是 ==,比较的是引用类型的变量所指向的对象的地址;但可以看到String类、Integer类等类的equals()方法是被重写过的,比较的是所指向的对象的内容。
用例
String num1 = "hello";
String num2 = "hello";
String num3 = new String("hello");
System.out.println(num1 == num2); // true
System.out.println(num1 == num3); // false
System.out.println(num1.equals(num2)); // true
System.out.println(num1.equals(num3)); // true
解析:因为num1和num2指向的是同一个地址,所以 == 的结果为true,num3是在堆里新开辟了一个空间,地址不同,所以结果为false;因为String类的equals方法是被重写过的,比较的是两个值,所以结果为true。