DESKTOP-94E2ELT_20200831-刘雪丽

一、问题

上课理解没有很通透的几个问题:

1: int[] a = { 1 , 3 , 5 , 7 , 9 };
int[] b = { 1 , 3 , 5 , 7 , 9 };

a.equals(b)和Arrays.equals(a,b)的区别

(1)、Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y ,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true ( x == y 具有值 true )。(在被重写之前)

(2)、Arrays 作为操作数组的工具类,并没有实现重写 Object 里的equals 方法,这里的Arrays.equals(a,b)中的equals只是Arrays这个类里边的一个方法,用来比较数组中的元素个数以及每个元素位置的内容是否相同。

(3)、由于数组比较特殊,它在定义数组并给数组初始化时本来就用到了New ,所以在今天的例子里,

int [] a = { 1 , 3 , 5 , 7 , 9 };

Integer [] a = { 1 , 3 , 5 , 7 , 9 };

这两条语句都实现了自动装箱,所以才指向不同的对象。

已解决

2、上课老韩刻意强调了几个点,我记得的是:

(1):在使用自然比较方法的时候,不是因为比出大小才返回了正数、负数或0;而是因为返回了某个值,才确定谁大谁小。

(2):对于多个String对象进型行比较排序时,不是根据hashcode来比较的。

(3):在String类型中的对象不可变,就是一旦有了双引号的字符串,就不会改变,每一次改变的都是新的字符串。(字符串缓冲区支持可变的字符串。)今天在用append方法追加字符串的时候,他的Object的哈希码一直没有变,是因为它指向的对象一直没变,而是对象指向的内容一直在改变,还是有点懵。

标签


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1