在学习equals方法方法时我写了一段代码(如下)class Student
{
private String name;
private int age;
public Student(String name,int age)
{
this.name=name;
this.age=age;
}
public boolean equlas(Object obj)
{
Student st=null;
if(obj instanceof Student)
{
st=(Student)obj;
if(st.name==name && st.age==age)
{
return true;
}
else
return false;
}
else
{
return false;
}
}
}class Xxs extends Student
{
public Xxs(String name,int age)
{
super(name,age);
}
}class Test
{
public static void main(String[] args)
{
Student st1=new Student("linan",20);
Student st2=new Student("caiheng",20);
Student st3=new Student("linan",20);
Xxs st4=new Xxs("linan",20);
if(st1.equals(st2))
{
System.out.println("st1 equlas st2");
}
else
{
System.out.println("st1 not equlas st2");
}
if(st1.equals(st3))
{
System.out.println("st1 equlas st3");
}
else
{
System.out.println("st1 not equlas st3");
}
if(st1.equals(st4))
{
System.out.println("st1 equlas st4");
}
else
{
System.out.println("st1 not equlas st4");
}
}
}可是编译通过后执行却都是st1 not equlas st2st1 not equlas st3st1 not equlas st4按我当时的目的是st1 equlas st3的,equlas方法我也是重写的,请高手指点一下为什么会是st1 not equlas st3,如何使得st1 equlas st3?我的JDK是1.5谢谢
{
private String name;
private int age;
public Student(String name,int age)
{
this.name=name;
this.age=age;
}
public boolean equlas(Object obj)
{
Student st=null;
if(obj instanceof Student)
{
st=(Student)obj;
if(st.name==name && st.age==age)
{
return true;
}
else
return false;
}
else
{
return false;
}
}
}class Xxs extends Student
{
public Xxs(String name,int age)
{
super(name,age);
}
}class Test
{
public static void main(String[] args)
{
Student st1=new Student("linan",20);
Student st2=new Student("caiheng",20);
Student st3=new Student("linan",20);
Xxs st4=new Xxs("linan",20);
if(st1.equals(st2))
{
System.out.println("st1 equlas st2");
}
else
{
System.out.println("st1 not equlas st2");
}
if(st1.equals(st3))
{
System.out.println("st1 equlas st3");
}
else
{
System.out.println("st1 not equlas st3");
}
if(st1.equals(st4))
{
System.out.println("st1 equlas st4");
}
else
{
System.out.println("st1 not equlas st4");
}
}
}可是编译通过后执行却都是st1 not equlas st2st1 not equlas st3st1 not equlas st4按我当时的目的是st1 equlas st3的,equlas方法我也是重写的,请高手指点一下为什么会是st1 not equlas st3,如何使得st1 equlas st3?我的JDK是1.5谢谢
public boolean equlas(Object obj)
if(st1.equals(st3))
你看下两个equal!!