日期:2014-05-20  浏览次数:20713 次

求equals的用法
判断两个数组是否相等
这个是对的
import java.util.*;

public class EqualsTest1
{
public static void main(String[]args)
{
Scanner in=new Scanner(System.in);

System.out.println("Please input the length of array a:");
int m=in.nextInt();
System.out.println("Please input the length of array b:");
int n=in.nextInt();

String[]a=new String[3];
String[]b=new String[3];

System.out.println("Please input the array a:");
for(int i=0;i<3;i++)
{a[i]=in.next();}

System.out.println("Please input the array b:");
for(int i=0;i<3;i++)
{b[i]=in.next();}


System.out.println("a.equals(b):"+Arrays.equals(a,b));
}

}
这个是错的,结果总是false
import java.util.*;

public class EqualsTest1
{
public static void main(String[]args)
{
Scanner in=new Scanner(System.in);

System.out.println("Please input the length of array a:");
int m=in.nextInt();
System.out.println("Please input the length of array b:");
int n=in.nextInt();

String[]a=new String[3];
String[]b=new String[3];

System.out.println("Please input the array a:");
for(int i=0;i<3;i++)
{a[i]=in.next();}

System.out.println("Please input the array b:");
for(int i=0;i<3;i++)
{b[i]=in.next();}


System.out.println("a.equals(b):"+a.equals(b));
}

}
第二个是错的是因为equals方法是比较的地址吗?
那为什么将第二个的a.equals(b)改成用for循环单独比较数组元素又是对的呢?
equals到底该怎么用?

equals String

------解决方案--------------------


麻烦不要总是问这样的问题好不好!!

网上一大堆的解释?

不能自己去看!?

CSDN的老人就是被这样的问题气走的....
------解决方案--------------------
for循环里比较的就是值比较啊,所以为true。
------解决方案--------------------
自己去看equals在JDK源码。

没重写的类就是直接比较a==b

重写的每个都不一样。
------解决方案--------------------
import java.util.Arrays;


public class TestEquals
{
    public static void main(String[] args)
    {

        String[]a={"a","b","c"};
        String[]b={"a","b","c"};
        //此时调用的是equals(Object[] a, Object[] a2) 
        System.out.println("a.equals(b):"+Arrays.equals(a,b));
    }
}


结果是true。建议LZ把自己的a和b,循环打印一下,看看是否真的相同。另外,看看API帮助文档,或者源码,能够帮助我们理解的。