==是比较的在内存的地址,而equals只是简单地比较两者的内容是否相同。简单的说“=="只要指向的地址一样结果就是true,而equals其内容相同结果就是true。比如下面的代码:
String st1=new String("abc");
String st2="abc";
String st3=new String("efr");
String st4="abc";
System.out.println(st1==st2);//fasle 地址不同st1在对内存中,是引用对象;st2在栈内存中。
System.out.println(st2.equals(st1));//true 内容相同。
System.out.println(st1.getClass() == st2.getClass());//true 都是String类型的字节码。
System.out.println(st1.getClass() == st3.getClass());//true 都是String类型的字节码。
System.out.println(st1.getClass().equals(st3.getClass()));//true 都是String类型的字节码。
System.out.println(st2 == st4);//true 内容相同。
希望以上的代码能帮助你更好的理解两者之间的区别。 |