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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 施大勇 中级黑马   /  2013-8-18 18:15  /  2328 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Arrays类中的deepEquals(Object[]a1,Object[]a2)与equals(Object[]a1,Object[]a2)有什么不同?任意深度的嵌套数组怎么理解?

3 个回复

倒序浏览
String[] arr = new String[]{"bc"};
                String[] arr1 = new String[]{"bc"};
                Object[] str = new Object[]{"ac","bc",arr,"bc"};
                Object[] str1 = new Object[]{"ac","bc",arr1,"bc"};
                System.out.println(Arrays.deepEquals(str, str1));
                System.out.println(Arrays.equals(str, str1));
               
                //deepEquals是如果数组中还嵌套数组的话,会进入这个数组里面进行嵌套数组的元素是否相同的判断
                //而equals是不会进入嵌套的数组中的,只是直接判断这两个嵌套的数组是不是同一个对象.不是就为false;
                所以上面的两个数组,用deepEquals比较的结果是为真,因为嵌套的数组的元素相同
                而用equals比较的结果是false,因为arr和arr1不是同一个对象.
回复 使用道具 举报
☆今☆ 发表于 2013-8-19 00:15
String[] arr = new String[]{"bc"};
                String[] arr1 = new String[]{"bc"};
                Object[] str = new Object ...

谢谢,终于懂了.
回复 使用道具 举报
一楼很牛  楼主技术分 给点我啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马