对于字符串来说,使用“==”运算符和“equals()”方法来比较,其比较方式不同。==运算符用于比较两个变量本身的值,即两个对象在内存中的首地址;equals()方法比较的是两个字符串中所包含的内容是否相同。对于非字符串类型的变量来说,==运算符和equals()方法都是用来比较所指对象在堆内存中的首地址,即比较两个类类型的变量是否指向同一个对象。
例
class Test {
int x=1;
}
public class ep3_1{
public static void main(String[] args){
Test one=new Test();
Test two=new Test();
String a1,a2,a3="abc",a4="abc";
a1=new String("abc");
a2=new String("abc");
System.out.println("a1.equals(a2)"+(a1.equals(a2)));
System.out.println("a1==a2"+(a1==a2));
System.out.println("a1.equals(a3)"+(a1.equals(a3)));
System.out.println("a1==a3"+(a1==a3));
System.out.println("a3.equals(a4)"+(a1.equals(a4)));
System.out.println("a3==a4"+(a3==a4));
System.out.println("one.equals(two)"+(one.equals(two)));
System.out.println("one==two"+(one==two));
one=two;
System.out.println("赋值后 one.equals(two)"+(one.equals(two)));
System.out.println("赋值后 one==two"+(one==two));
}
}
执行结果
a1.equals(a2)true a1.equals(a3)true a1==a3false a1==a2false a3.equals(a4)true a3==a4true one.equals(two)false one==twofalse 赋值后 one.equals(two)true 赋值后 one==twotrue