本文主要介绍== 和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