==
运算符
==
运算符用于比较两个变量是否引用同一个对象,或者用于比较基本数据类型的值。
基本数据类型
对于基本数据类型(如 int
, char
, boolean
等),==
比较的是变量的值。
int a = 5;
int b = 5;
System.out.println(a == b); // true
引用数据类型
对于引用数据类型(如 String
, Integer
, Object
等),==
比较的是两个对象的引用是否相同,即它们是否指向同一个内存地址。
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2); // false, 因为str1和str2指向不同的对象
String str3 = "hello";
String str4 = "hello";
System.out.println(str3 == str4); // true, 因为str3和str4指向相同的字符串常量池中的对象
equals()
方法
equals()
方法是 Object
类中的方法,用于比较两个对象的内容是否相同(不用于基本数据类型)。
大多数类(如 String
, Integer
等)都重写了 equals()
方法,以比较对象的内容而不是引用。
默认实现(其实里面调用的也是==)
Object
类的 equals()
方法默认使用 ==
运算符比较对象的引用。
重写的实现
大多数标准类(如 String
, Integer
等)都重写了 equals()
方法,以比较对象的内容。
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1.equals(str2)); // true, 因为String类重写了equals方法
Integer num1 = new Integer(100);
Integer num2 = new Integer(100);
System.out.println(num1.equals(num2)); // true, 因为Integer类重写了equals方法