Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对象等于(对象)方法的工作性质_Java_Arrays_String_Oop_Object - Fatal编程技术网

Java 对象等于(对象)方法的工作性质

Java 对象等于(对象)方法的工作性质,java,arrays,string,oop,object,Java,Arrays,String,Oop,Object,当我在hackerrank中讨论一个问题时。我写了不完美的代码,我得到了错误的答案,但我想知道我是怎么得到的 注意:我知道通过将return语句更改为returnjava.util.array.equals(aa,bb)。我得到了正确的答案 static boolean isAnagram(String a, String b) { a=a.toLowerCase(); b=b.toLowerCase(); char aa[]=a.toCharArray(); c

当我在hackerrank中讨论一个问题时。我写了不完美的代码,我得到了错误的答案,但我想知道我是怎么得到的 注意:我知道通过将return语句更改为
returnjava.util.array.equals(aa,bb)。我得到了正确的答案

static boolean isAnagram(String a, String b) {
    a=a.toLowerCase();
    b=b.toLowerCase();
    char aa[]=a.toCharArray();
    char bb[]=b.toCharArray();
    
    if(a.length()!=b.length())
    return false;
    else
    {
        java.util.Arrays.sort(aa);
        java.util.Arrays.sort(bb);
        System.out.println(aa.equals(bb));
    
        return aa.equals(bb);
    }
 
代码:确定两个字符串是否包含相同频率的字符,并分别为相同的返回true,为相反的返回false。上面的代码总是返回false 它认为aa不是String的一个实例。我看到了下面的String\u object.equals(String\u object)方法的内部代码

}

所以,我用Character类和char数组尝试了我的原始代码的代码片段 它对于Character类工作正常,但对于char数组则不行

Character a='a';
Character b='a';
System.out.println(a.equals(b)); //return true
但是如果我们尝试使用Char数组。它返回错误

char [] a={'a'};
char [] b={'b'};
System.out.println(a.equals(b));//return false always ( I thought it was because as a is not object of type String.
我的疑问是:为什么它适用于Character类而不适用于char数组?根据.equals()方法代码,字符类也应该传递false,但这不是为什么

对不起,我的英语不好

a、 等于(b)与a==b相同,即它是同一个数组。 equals(aa,bb)比较数组的内容

来自javadoc

Character类将原语类型char的值包装在 类型为Character的对象包含一个字段,该字段的类型为 是char。对象类型使用equals方法进行equals比较


先生,a==b和a=b不一样。a==b检查两者的引用是否相等,其中as.equals方法检查a和b中的内容。我感谢您的努力,先生。正如我所提到的,数组就是这样,它只比较引用。它是为所有可变数据类型设计的,并且只比较了不可变类型的内容,例如String和StringBuilder。因此,先生,我有一个问题,在equals方法中是否有字符类的重写方法,而不是数组的重写方法?我可以更正答案吗?从你的回答中,我知道1。对于arrays.equals()方法,a==b的工作原理相同。2.我为equals方法的内部工作设置的代码错误?如果是这样的话,请您提供一个正确的equals方法的链接,先生?非常感谢。
char [] a={'a'};
char [] b={'b'};
System.out.println(a.equals(b));//return false always ( I thought it was because as a is not object of type String.