黑马程序员技术交流社区

标题: Arrays操作数组工具类中的一个小问题?求解答! [打印本页]

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

作者: forTomorrow    时间: 2015-5-31 15:58
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:59
手打的,没测试验证,你自己验证下吧
作者: zlynnb2015    时间: 2015-5-31 16:16
一楼解释得不错
作者: 光明_就在前方    时间: 2015-6-1 16:57
forTomorrow 发表于 2015-5-31 15:58
Arrays中的equals()比较的是在内存中的地址值,String中的equals()比较的是内容
对于一位数组,equals()和de ...

非常感谢,结果就是这样。受教了!
作者: 途中ms前进    时间: 2015-6-1 17:49
路过学习学习:victory:
作者: edithe    时间: 2015-6-2 19:44
一般的equals都是集成object的,比较的都是内存地址
但是我们可以根据自己需要重写equals,比如String类就是这样,它比较的就是内容
作者: a397131103    时间: 2015-6-2 20:07
学习了 我们老师都没讲deepequals......




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2