首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嘿,什么是深度比较,成为object类的对象意味着什么?

嘿,什么是深度比较,成为object类的对象意味着什么?
EN

Stack Overflow用户
提问于 2020-09-03 02:04:13
回答 3查看 62关注 0票数 1

这是我在极客上为极客找到的代码,我对类Object和什么是深度比较感到困惑,我对Java相当陌生,我正试图尽可能深入地了解更多的东西。请不要被我愚蠢的怀疑所激怒

代码语言:javascript
复制
import java.util.Arrays;
class Test 
{ 
    public static void main (String[] args)  
    { 
        // inarr1 and inarr2 have same values 
        int inarr1[] = {1, 2, 3}; 
        int inarr2[] = {1, 2, 3};    
        Object[] arr1 = {inarr1};  // arr1 contains only one element 
        Object[] arr2 = {inarr2};  // arr2 also contains only one element 
        if (Arrays.equals(arr1, arr2)) 
            System.out.println("Same"); 
        else
            System.out.println("Not same"); 
    } 
} 
EN

回答 3

Stack Overflow用户

发布于 2020-09-03 02:13:19

如果添加Arrays.deepEquals比较,则比较结果

代码语言:javascript
复制
    if (Arrays.equals(arr1, arr2)) 
        System.out.println("Same"); 
    else
        System.out.println("Not same"); 
    if (Arrays.deepEquals(arr1, arr2)) 
        System.out.println("Same"); 
    else
        System.out.println("Not same"); 

在第二种情况下,应该是“相同的”。这是因为虽然Object[]和int[]本身是不同的对象,但它们的int内容是相同的

票数 3
EN

Stack Overflow用户

发布于 2020-09-03 02:30:42

Arrays.equal()用于比较一维数组。它将检查每个值,并检查它们是否相等。如果我们在多维数组上使用此方法,则此方法将失败。

Arrays.deepEquals()允许我们通过比较每一对(在2D数组的情况下)来检查多维数组是否相等,以查看它们是否相等。当您将此赋值设置为Object[] arr1 = {inarr1};时,由于inarr1是一个int数组,因此您是在生成一个数组的数组。

对于第二个问题,对象类是Java中所有类的父类,它描述了Java中的类应该包含/遵循的公共方法/行为。换句话说,所有类都必须并且确实是从Object类扩展而来的。这在大多数IDE中都是隐含的。

因此,创建Object类的对象就是简单地创建一个object类型的对象。您可以实例化到任何具体的子类。因此,它相当难以描述,也很少使用。就我个人而言,只有在重写比较器的compare方法时才会这样做。

票数 1
EN

Stack Overflow用户

发布于 2020-09-03 02:31:05

Object是一个class,就像任何其他class一样,但不同之处在于每个class都是它的后代。这意味着您可以将任何对象转换为Object。这就是Object对象的含义。

至于深度比较:

java中有两种类型的对象比较-浅的和深的。

当您使用“==”运算符时,您是在比较引用是否相等。这意味着您正在比较对象的内存地址。这就是所谓的浅层比较。

当您使用.equals()时,您是在比较对象值本身是否相等。这意味着你正在检查‘两个对象对于相应的实例变量是否具有相同的值’。

来源:https://blog.webnersolutions.com/java-shallow-and-deep-comparison-of-objects/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63711225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档