java中== 和equals的区别

导读:本篇文章讲解 java中== 和equals的区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

本文主要介绍== 和equals的区别

1. == 比较的是地址,引用类型(除了String类)的时候,只要不是同一个对象,就不是同一个地址,String类型的时候,如果new出来两个对象,那么也是不同地址,如果不是new,那么就是同一个地址,因为都是存放在字符串常量池中,如果是基本数据类型,都是存放在常量池中,所以地址都是一样的。

代码如下图所示:

String str_1 = new String("123"); 
String str_2 = new String("123"); // str_1和str_2是不同的对象,因此地址不同。
System.out.println(str_1 == str_2);  // false
String str_1 = "123";
String str_2 = "123"; // str_1和str_2都是常量,存放在字符串常量池中。
System.out.println(str_1 == str_2); // true

2. equals比较的如果是引用类型(除了String类型),那么使用的是object中的equals方法,比较的地址是否一样;

如果是String类型的对象,String类重写了equals方法,首先比较地址是否一样,一样返回true;内容不一样返回false。

如果是基本数据类型对应的包装类(Integerater…),使用的equals也不是Object中的equals方法,而是重写了该方法,首先比较是否是同类型,不同类型直接返回false,同类型再比较内容是否一致,一致返回true。

String str_1 = "123";
String str_2 = "123";
System.out.println(str_1.equals(str_2)); // true
String str_1 = new String("123");
String str_2 = new String("123");
System.out.println(str_1.equals(str_2)); // true

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/98999.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!