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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这两天,自学到了毕哥java基础视频教程的集合框架。在学到Arrays静态操作数组工具类中,有几个静态方法,搞不清楚到底有什么区别?
问题是:equals(Object[] a, Object[] a2) 和deepEquals(Object[] a1, Object[] a2) 到底有什么却别?什么时候用哪个?
我自己都写了下,没感觉有设么区别!
求大神解答,最好能给出事例,谢谢!

7 个回复

倒序浏览
Arrays中的equals()比较的是在内存中的地址值,String中的equals()比较的是内容
对于一位数组,equals()和deepEquals()没区别,但是对于多维数组则要用deepEquals()
Char[] char1 = {"C","h","i","n","a"};
Char[] char2 = {"C","h","i","n","a"};
System.out.println(Arrays.equals(char1,char2));//true
System.out.println(Arrays.deepEquals(char1,char2));//true
Char[][] char3 = {{"C","h","i","n","a"},{"J","a","p","a","n"}};
Char[][] char4 = {{"C","h","i","n","a"},{"J","a","p","a","n"}};
System.out.println(Arrays.equals(char3,char4));//false
System.out.println(Arrays.deepEquals(char3,char4));//true
如果两个数组用equals()比较后结果为true,则用deepEquals()的结果也为true
回复 使用道具 举报
手打的,没测试验证,你自己验证下吧
回复 使用道具 举报
一楼解释得不错
回复 使用道具 举报
forTomorrow 发表于 2015-5-31 15:58
Arrays中的equals()比较的是在内存中的地址值,String中的equals()比较的是内容
对于一位数组,equals()和de ...

非常感谢,结果就是这样。受教了!
回复 使用道具 举报
路过学习学习:victory:
回复 使用道具 举报
一般的equals都是集成object的,比较的都是内存地址
但是我们可以根据自己需要重写equals,比如String类就是这样,它比较的就是内容
回复 使用道具 举报
学习了 我们老师都没讲deepequals......
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马