A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 东东瑞 中级黑马   /  2016-7-30 21:23  /  653 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求==和equals的完美却别讲解

5 个回复

正序浏览
==可以比较基本数据类型和引用数据类型,比较基本数据类型是是比较值大小,比较引用数据类型时是比较地址值
回复 使用道具 举报
经典面试题
回复 使用道具 举报
==可以比较基本数据类型和引用数据类型,比较基本数据类型是是比较值大小,比较引用数据类型时是比较地址值

equals只能比较引用数据类型,每重写时是比较地址值(Object源码里写的就是==),改写后比较对象属性值
回复 使用道具 举报
nblity007 发表于 2016-7-30 21:37
==和equals的区别:
* 1.==可以用于"值类型"也可以用于"引用数据类型":
*                 用于"值类型" ...

3Q。。。。。。。。。。。。。。。
回复 使用道具 举报

==和equals的区别:
* 1.==可以用于"值类型"也可以用于"引用数据类型":
*                 用于"值类型":判断左右两边的"值"是否相等:
*                         int a = 10;
*                         int b = 20;
*                         if(a == b){
*                         }
*                 用于"引用数据类型",判断左右两边的"地址"是否相等
*                         String s1 ="abc";
*                         String s2 = "abc";
*                         System.out.println(s1 == s2);
* 2.equals()只能用于"引用数据类型":
*                 1).我们经常需要判断"两个对象"中的"所有属性值"是否完全相同。使用equals经常是判断两个对象中的属性值是否完全相同
*                         ArrayList<User> userList = new ArrayList<>();

*                         User user = new User("李四",20);
*                         for(int i= 0;i < userList.size(); i++){
*                                 User u = userList.get(i);
*                                 if(u.getName().equals(user.getName()) &&//不使用equals(),也可以一个属性一个属性的单独判断
*                                                 u.getAge() == user.getAge()){
*                                         //重复的数据
*                                 }
*                                 //使用equals()
*                                 if(u.equals(user)){
*                                         //重复的数据
*                                 }
*                         }
*                        
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马