黑马程序员技术交流社区

标题: 一个数组的问题 [打印本页]

作者: 麻仁博    时间: 2015-3-22 14:15
标题: 一个数组的问题
本帖最后由 麻仁博 于 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  是不是他们地址是不一样的?

作者: fantacyleo    时间: 2015-3-22 14:26
lz没认真看视频,想当然了。老师从来没说equals是判断值。equals方法是Object定义的,如果子类不重写,它跟==的功能是一样的
作者: 麻仁博    时间: 2015-3-22 14:28
fantacyleo 发表于 2015-3-22 14:26
lz没认真看视频,想当然了。老师从来没说equals是判断值。equals方法是Object定义的,如果子类不重写,它跟 ...

http://bbs.itheima.com/forum.php ... typeid%3D390?lt3448
你看看这里。。
作者: fantacyleo    时间: 2015-3-22 14:32
麻仁博 发表于 2015-3-22 14:28
http://bbs.itheima.com/forum.php?mod=viewthread&tid=119269&extra=page%3D1%26filter%3Dtypeid%26type ...

String重写了equals方法,但数组没有
作者: 麻仁博    时间: 2015-3-22 14:42
fantacyleo 发表于 2015-3-22 14:32
String重写了equals方法,但数组没有

还有个问题  String 重写了equals 这个方法, 是不是即对 地址进行判断 也对 他们的值进行判断?
作者: fantacyleo    时间: 2015-3-22 14:57
麻仁博 发表于 2015-3-22 14:42
还有个问题  String 重写了equals 这个方法, 是不是即对 地址进行判断 也对 他们的值进行判断? ...

不是。字符串的equals只判断字符串的内容。但是字符串还有特殊性,就是字面值、常量池这些。视频里也讲过的。你刚才发的链接里也提到了
作者: 麻仁博    时间: 2015-3-22 16:42
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 指向了不同的地址。
我的这个理解对嘛?




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