更好的办法: 把所有的 String 都 intern() 到缓冲池去,在用到new的时候就进行这个操作,String s2 = new String("Monday").intern();
例 5 :用 equals() 进行比较,没有重写equals方法
class Test
{
public static void main(String[] args)
{
A a1 = new A();
a1.age = 10;
a1.home = "浙江";
A a2 = new A();
a2.age = 10;
a2.home = "浙江";
System.out.println(a1==a2);
System.out.println(a1.equals(a2)); // A类没有重写equals方法,还是沿用的 Object 中的 equals ,所以比较的是地址。
}
}
class A
{
int age;
String home;
}
运行结果: false
false
例 6 :接上面的例子,用 equals() 进行比较,重写了 equals 方法
class Test
{
public static void main(String[] args)
{
A a1 = new A();
a1.age = 10;
a1.home = "浙江";
A a2 = new A();
a2.age = 10;
a2.home = "浙江";
System.out.println(a1==a2);
System.out.println(a1.equals(a2));
}
}
class A
{
int age;
String home;
//重写了 equals 方法
public boolean equals(Object obj)
{
//为空false,类型不一致false,各个成员变量值相等才为true
if(obj==null)
{
return false;
}
else
{
if(! (obj instanceof A))
{
return false;
}
else
{
A a = (A)obj;//强转
if(a.age==this.age && a.home.equals(this.home))
{
return true;
}
return false;
}
}
}
}