Java 对象等于(对象)方法的工作性质
当我在hackerrank中讨论一个问题时。我写了不完美的代码,我得到了错误的答案,但我想知道我是怎么得到的 注意:我知道通过将return语句更改为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
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.