String n = "woshiwoshi";
String n1 = "woshiwoshi";
System.out.println("n.equals(n1) is "+n.equals(n1));
System.out.println("n==n1 is "+(n==n1));
String n3 = new String("hash");
System.out.println("n2.equals(n3) is "+n2.equals(n3));
n==n1 is true
n2.equals(n3) is true
String n1 = "woshiwoshi";
System.out.println("n.equals(n1) is "+n.equals(n1));
System.out.println("n==n1 is "+(n==n1));
System.out.println();
String n3 = new String("hash");
System.out.println("n2.equals(n3) is "+n2.equals(n3));
System.out.println("n2==n3 is "+(n2==n3));
输出结果:
n.equals(n1) is truen==n1 is true
n2.equals(n3) is true
n2==n3 is false
结论:
1. == 与equals()一样, 都可以用来比较基本数据类型的数值,eg: int double short byte char Long float Boolean 引用数据类型 Sting(直接赋值的情况下 eg: String s="woshishi") 。
2. 都可以用来比较对象,它们比较的是地址值,若对象里面的值相等但是地址值不同则为 false 。
3. 在String对象中 equals()很特殊,它重写了String的equals()方法,比较的是数值,但是==仍然是比较的String对象的地址值。