public class EqualDemo {
/** * @param args * equals方法对于字符串来说是比较内容的,而对于非字符串来说是比较其指向的对象是否相同的。 * */
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1, s2;
s1 = new String("abc");
s2 = new String("abc");// new
// 一个String对象,用equal比较他们的内容是否相同;若用==判断,则是判断变量在堆内存中地址是否相同//
//s1 = "abc";//
//s2 = "abc";// 如果直接赋值则s1==s2为true
StringBuffer sb1 = new StringBuffer("sb");
StringBuffer sb2 = new StringBuffer("sb");
String s3 = "equal";
if (s1 == s2) {
System.out.println("s1 and s2:" + s2 + "地址相同");
}
System.out.println("s1!=s2:指它们的内存地址不同");
if (s1.equals(s2)){
System.out.println("s1.equals(s2):内容相同");
}
if (sb1.toString().equals(sb2.toString())){
System.out.println("sb1.equals(sb2):内容相同");
}
// 用==和equals比较a1和a2的堆内存地址是否相同
A a1 = new A();
A a2 = new A();
//a2 = a1;//添加引用,a1==a2 is ture ;a1.equals(a2) is ture;
if (a1 == a2){
System.out.println("a1==a2");
}
if (a1.equals(a2)){
System.out.println("a1.equals(a2)");
}
}
}
class A {
public A() {
System.out.println("Object A");
}
}