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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 麻仁博 中级黑马   /  2015-3-22 14:15  /  1026 人查看  /  7 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 麻仁博 于 2015-3-22 14:50 编辑

int [ ] arr = new int [ ] {3,1,6,8,2,5};
int [ ] arr = {3,1,6,8,2,5};
刚才在看Java/android常见经典问题总结。看到这题有点晕。
我的问题是:1这俩个方法创建值得具体过程是什么                      2 他们是否是用一个地址。
                      3 如果 int 类型换成 String 类型 或者其他类型, 这个问题会有变化吗?
                 int [] arr = new int[]{3,1,6,8,2,5};
                 int [] arr1 ={3,1,6,8,2,5};
                System.out.println(arr.equals(arr1));//结果false   这段不是判断值吗? 为什么会false    这里我理解错了 equals 相当于“==”
       //         System.out.println(arr==arr1);//结果为false     这段不是判断地址吗? 为什么会false  是不是他们地址是不一样的?

7 个回复

倒序浏览
lz没认真看视频,想当然了。老师从来没说equals是判断值。equals方法是Object定义的,如果子类不重写,它跟==的功能是一样的
回复 使用道具 举报
fantacyleo 发表于 2015-3-22 14:26
lz没认真看视频,想当然了。老师从来没说equals是判断值。equals方法是Object定义的,如果子类不重写,它跟 ...

http://bbs.itheima.com/forum.php ... typeid%3D390?lt3448
你看看这里。。
回复 使用道具 举报
麻仁博 发表于 2015-3-22 14:28
http://bbs.itheima.com/forum.php?mod=viewthread&tid=119269&extra=page%3D1%26filter%3Dtypeid%26type ...

String重写了equals方法,但数组没有
回复 使用道具 举报
fantacyleo 发表于 2015-3-22 14:32
String重写了equals方法,但数组没有

还有个问题  String 重写了equals 这个方法, 是不是即对 地址进行判断 也对 他们的值进行判断?
回复 使用道具 举报
麻仁博 发表于 2015-3-22 14:42
还有个问题  String 重写了equals 这个方法, 是不是即对 地址进行判断 也对 他们的值进行判断? ...

不是。字符串的equals只判断字符串的内容。但是字符串还有特殊性,就是字面值、常量池这些。视频里也讲过的。你刚才发的链接里也提到了
回复 使用道具 举报
fantacyleo 发表于 2015-3-22 14:57
不是。字符串的equals只判断字符串的内容。但是字符串还有特殊性,就是字面值、常量池这些。视频里也讲过 ...

String str1 = "aaa";
String str2 = "aaa";
String str3 = "bbb";
System.out.println(str1 == str2);   // 为true
System.out.println(str1==str3); // 这个就为false了 为什么啊?是不是str1 那里先在常量池里定义了一个 aaa,然后 str2 定义的时候,先去 常量池里 找了一下有没有这个aaa,发现有这个aaa, 那str2 就指向了这个aaa,所以他们俩个指向的是同一个 地址(aaa),后来str3  在常量池里定义的是bbb, 所以str1 和str3 指向了不同的地址。
我的这个理解对嘛?

点评

嗯,对的  发表于 2015-3-22 17:03
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马