求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到底该怎么用?
------解决方案--------------------
麻烦不要总是问这样的问题好不好!!
网上一大堆的解释?
不能自己去看!?
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帮助文档,或者源码,能够帮助我们理解的。