java equals,为什么这里输出的是不同,不是相同???怎样让它输出相同????
源代码1:publicclassStudent{publicStringname;publicintage;publicintnumber;publicStudent()...
源代码1:
public class Student{
public String name;
public int age;
public int number;
public Student(){
System.out.println("无参构造函数");
}
public Student(String n,int a,int num){
this.name=n;
this.age=a;
this.number=num;
}
}
源代码2
public class Sample4_20{
public static void main(String []args){
Student s1=new Student("张三",13,111111);
Student s2=new Student("张三",13,111111);
if(s1.equals(s2)){
System.out.println("两个变量相同!!!");
}else
System.out.println("两个变量不同!!!");
}
} 展开
public class Student{
public String name;
public int age;
public int number;
public Student(){
System.out.println("无参构造函数");
}
public Student(String n,int a,int num){
this.name=n;
this.age=a;
this.number=num;
}
}
源代码2
public class Sample4_20{
public static void main(String []args){
Student s1=new Student("张三",13,111111);
Student s2=new Student("张三",13,111111);
if(s1.equals(s2)){
System.out.println("两个变量相同!!!");
}else
System.out.println("两个变量不同!!!");
}
} 展开
展开全部
需要重写一下equals方法。
修改后的代码如下:
class Student {
public String name;
public int age;
public int number;
public Student() {
System.out.println("无参构造函数");
}
public Student(String n, int a, int num) {
this.name=n;
this.age=a;
this.number=num;
}
public Boolean equals(Student o) { //重写一下equals方法
if (this == o) {
return true;
} else if ((this instanceof Student) && (o instanceof Student)
&& this.name.equals(o.name) && (this.age == o.age)
&& (this.number == o.number)) {
return true;
} else {
return false;
}
}
}
public class Demo {
public static void main(String []args) {
Student s1=new Student("张三", 13, 111111);
Student s2=new Student("张三", 13, 111111);
if(s1.equals(s2)) {
System.out.println("两个变量相同!!!");
} else
System.out.println("两个变量不同!!!");
}
}
追问
不好意思。另一个人比你快一点写出来了,不过不明白equals未重写的时候比较的究竟是什么?
追答
equals未重写的时候跟 == 一样。
展开全部
你main方法里面改成下面这样, equals 就成立了
Student s1=new Student("张三",13,111111);
Student s2=s1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要在你的Sturdent类中覆盖equals方法
public Boolean equals(Test test2){
Boolean re = false;
if (this.name.equals(test2.name) && this.age == test2.age && this.number == test2.number){
re = true;
}
return re;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-05-06
展开全部
equals是判断字符串的,你这是个实例化对象,了。
更多追问追答
追问
那为什么不同咯???两个对象不都一样????
追答
你这样写会报错的,不能比较
可以这样s1.name.equals(s2.name)
s1.age==s2.age
s1.number==s2.number
或者重写equals覆盖java里的。不过那太麻烦了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个是需要重写equals方法的
更多追问追答
追问
怎么重写??我这样写为什么不能得到“相同”的输出结果??
追答
因为你的两个Student,不是同一个对象,虽然他们的成员变量一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询