java equals与==
时间: 2023-10-05 19:05:45 浏览: 238
Java中的"=="运算符和equals()方法都用于比较两个对象,但它们之间有很大的区别。
"=="运算符用于比较两个对象的引用是否相同,即它们是否指向同一个内存地址。如果两个对象的引用相同,则返回true,否则返回false。
equals()方法用于比较两个对象的内容是否相等。默认情况下,equals()方法比较的是两个对象的引用,如果它们指向同一个内存地址,则返回true。但是,equals()方法可以被重写以比较对象的内容。如果两个对象的内容相等,则返回true,否则返回false。
示例代码:
```
String s1 = "hello";
String s2 = new String("hello");
// 使用"=="运算符比较两个字符串对象
System.out.println(s1 == s2); // false
// 使用equals()方法比较两个字符串对象的内容
System.out.println(s1.equals(s2)); // true
```
在上面的示例中,s1和s2都是String类型的对象,但是s1是通过字面量创建的,而s2是通过new关键字创建的。使用"=="运算符比较它们的引用时,返回false,因为它们指向不同的内存地址。但是,使用equals()方法比较它们的内容时,返回true,因为它们的内容相同。
相关问题
java 中==和equals例子
在Java中,`==` 和 `equals()` 是两个不同的比较运算符,用于比较基本类型的值和引用类型的对象。
1. `==` 运算符:这个操作符用于比较的是两个变量是否指向相同的内存位置,即它们是否引用了同一个对象。对于基本数据类型(如int、char等),它就是比较值;而对于对象类型(如String、Object等),如果两个对象地址相等,则返回true,表示它们是同一个实例。例如:
```java
String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1 == str2); // 输出 true,因为它们引用的是同一个字符串常量池的对象
Integer num1 = new Integer(10);
Integer num2 = new Integer(10);
System.out.println(num1 == num2); // 输出 false,尽管它们值相同,但作为对象,不是同一个引用。
```
2. `equals()` 方法:这是Java中的Object类的一个方法,大多数类都会覆盖这个方法来提供自定义的比较规则。例如,String类的equals()方法会比较字符串的内容。如果两个对象内容相同,那么equals()返回true,否则返回false。例如:
```java
String str3 = new String("Hello");
System.out.println(str1.equals(str3)); // 输出 true,虽然str1和str3是不同的对象,但它们的内容一样。
```
需要注意的是,对于非null的对象,`==` 和 `equals()` 返回的结果通常是相同的,但如果对象为null,`==` 比较的是引用,而 `equals()` 则抛出异常。
java 中==和equals区别
== 是比较运算符,用于比较两个变量或值是否相等,比较的是地址。
equals 方法是由类 Object 定义的,用于比较两个对象是否相等,需要重写该方法来实现自定义的比较方式。
对于基本类型,==和equals 方法的比较结果相同。对于引用类型,==比较的是地址,equals 比较的是内容。
阅读全文