小弟刚学java求教了当创建一个新的对象的时候 Object obj=new Object();
说的是创建了一个新的内存空间 让obj指向这个地址 (说的对吧)
再创建一个Object obj2=new Object();
有什么办法能够比较两个对象开辟的内存空间不一样呢?这个问题源于 对象的equals的方法。 int[] array1={1,2}(比如)
int [] array2={1,2}array1.equals(array2) 返回false 为什么? equals 不是比较的内容嘛?Array.equals(array1,array2) 返回的就是true想看看有什么办法能够知道他们的指向的地址有什么不同, 也便于以后的学习理解谢谢了
说的是创建了一个新的内存空间 让obj指向这个地址 (说的对吧)
再创建一个Object obj2=new Object();
有什么办法能够比较两个对象开辟的内存空间不一样呢?这个问题源于 对象的equals的方法。 int[] array1={1,2}(比如)
int [] array2={1,2}array1.equals(array2) 返回false 为什么? equals 不是比较的内容嘛?Array.equals(array1,array2) 返回的就是true想看看有什么办法能够知道他们的指向的地址有什么不同, 也便于以后的学习理解谢谢了
而equals的语义是比较对象的内容,如果自己不重写的话,默认调用的是object的equals方法,比较的是地址。
对数组调用equals,可能是因为直接调用的是object的equals方法,比较的是地址。
至于返回true的类得equals方法都是重写过的,比较的事内容
说的是创建了一个新的内存空间 让obj指向这个地址 (说的对吧)
再创建一个Object obj2=new Object();
有什么办法能够比较两个对象开辟的内存空间不一样呢?
System.out.println(obj == obj2)//输出false,表示不一样这个问题源于 对象的equals的方法。 int[] array1={1,2}(比如)
int [] array2={1,2}array1.equals(array2) 返回false 为什么? equals 不是比较的内容嘛?Array.equals(array1,array2) 返回的就是true这个问题要看你用的那个类是怎么实现equals方法的。
建议你在网上下点视频来看,我也是新手!