Java中 ==与equals的区别

简介: Java中 ==与equals的区别

在Java中,==equals()方法在比较对象时具有不同的用途和行为。

==操作符

==操作符在Java中用于比较两个对象的引用是否相等。具体来说,当使用==操作符时,它会比较两个对象的引用是否指向内存中的同一位置。如果两个引用指向同一对象,则==返回true;否则返回false

String str1 = "Hello";  
String str2 = "Hello";  
String str3 = new String("Hello");  
System.out.println(str1 == str2); // 输出 true,因为str1和str2指向同一个字符串对象  
System.out.println(str1 == str3); // 输出 false,因为str1和str3指向不同的字符串对象

 

equals()`方法

equals()方法在Java中用于比较两个对象的值是否相等。这是通过比较两个对象的实际内容是否相同来实现的。默认情况下,equals()方法的行为与==操作符相同,即比较对象的引用。但是,许多类(如StringArrayList等)已经重写了equals()方法,使其比较对象的值而不是引用。

例如:

String str1 = "Hello";  
String str2 = "Hello";  
String str3 = new String("Hello");  
System.out.println(str1.equals(str2)); // 输出 true,因为str1和str2的值相同  
System.out.println(str1.equals(str3)); // 输出 true,虽然str1和str3引用不同的对象,但它们的值相同

总结

  • ==操作符用于比较对象的引用是否相等。
  • equals()方法用于比较对象的值是否相等。默认情况下,它与==操作符行为相同,但许多类已经重写了这个方法以比较对象的值。

例如:

==它在java中如果比较的是基本类型,它比较的是值。如果是引用类型它比较的是地址。

而euqal,具体看各个类重写equals方法之后的比较逻辑,比如String类,虽然是引用类型,但是String类中重写了equals方法,方法内部比较的是字符串中的各个字符是否全部相等。

相关文章
|
10天前
|
Java UED
Java Web 中forward 和 redirect 的区别
在Java Web开发中,页面跳转是构建用户界面和实现业务逻辑的重要组成部分。Forward(转发)和Redirect(重定向)是两种常见的跳转方式,它们分别具有不同的特点和适用场景。正确地选择和使用这两种跳转方式,有助于提高Web应用的性能、用户体验和代码可维护性。
19 4
|
4天前
|
安全 Java
【JAVA】在 Queue 中 poll()和 remove()有什么区别
【JAVA】在 Queue 中 poll()和 remove()有什么区别
|
4天前
|
Java API
【JAVA】final、finally、finalize 有什么区别?
【JAVA】final、finally、finalize 有什么区别?
|
4天前
|
Java
【JAVA】throw 和 throws 的区别?
【JAVA】throw 和 throws 的区别?
|
4天前
|
Java
【JAVA】Iterator 和 ListIterator 有什么区别?
【JAVA】Iterator 和 ListIterator 有什么区别?
|
1天前
|
Java
Java中 a+=b和a=a+b有什么区别?
Java中 a+=b和a=a+b有什么区别?
|
1天前
|
Java 开发者
Java中三种Set的实现类的用法和区别
Java中三种Set的实现类的用法和区别
|
4天前
|
存储 安全 Java
【JAVA】concurrentHashMap和HashTable有什么区别
【JAVA】concurrentHashMap和HashTable有什么区别
|
4天前
|
安全 Java
【JAVA】线程的run()和start()有什么区别?
【JAVA】线程的run()和start()有什么区别?
|
4天前
|
安全 Java 编译器
【JAVA】泛型和Object的区别
【JAVA】泛型和Object的区别