java.lang.String中equals方法重写
下面代码:要求重写方法,搞了好久没搞出帮个忙classStudentextendsjava.lang.Object{privateStringmName;privatei...
下面代码: 要求重写方法,搞了好久没搞出帮个忙class Student extends java.lang.Object{ private String mName; private int mAge; private String mSex; public Student(String name, int age, String sex) { mName = name; mAge = age; mSex = sex;}public String getMName() { return mName;}public void setMName(String name){ mName = name;}public int getMAge() { return mAge;}public void setMAge(int age) { mAge = age;}public String getMSecx() { return mSex;}public void setMSecx(String secx){ mSex = secx;}public String toString(){ return "姓名是:"+this.mName+",性别是:"+this.mSex+",年龄是:"+this.mAge;}public boolean equals(Object obj){ if() { return true; } else { return false; }}}/**测试类*/public class StudentTest { public static void main(String[] args) { Student std =new Student("张三",19,"男"); Student std1 =new Student("张三",19,"男"); if(std.equals(std)) { System.out.println("相同的对象"); } else { System.out.println("不同的对象"); } System.out.println(std); System.out.println(std1); }}
展开
展开全部
/**
1.this代表当前对象也就是下面操作此方法(equals)的std对象而stu代表的是传入对象也就是说是下面的std1对象.
2.在进行比较时候基本类型(int ,float....)比较相等时采用"=="是比较的地址。
3.在进行比较时候引用类型就像String采用equals比较。是比较的内容
**/
/**
个人觉得把equals()变成compare()这样更好。能从方法知道是操作的是对象的比较
**/
class Student extends java.lang.Object{
private String mName;
private int mAge;
private String mSex;
public Student(String name, int age, String sex) {
mName = name;
mAge = age;
mSex = sex;
}
public String getMName() {
return mName;
}
public void setMName(String name){
mName = name;
}
public int getMAge() {
return mAge;
}
public void setMAge(int age) {
mAge = age;
}
public String getMSecx() {
return mSex;
}
public void setMSecx(String secx){
mSex = secx;
}
public String toString(){
return "姓名是:"+this.mName+",性别是:"+this.mSex+",年龄是:"+this.mAge;
}
public boolean equals(Student stu){ //public boolean compare(Student stu){}
if(this.mName.equals(stu.mName)&&(this.mAge==stu.mAge)&&(this.mSex.equals(stu.mSex))){
return true;
}else {
return false;
}
}
}
public class StudentTest {
public static void main(String[] args){
Student std =new Student("张三",18,"男");
Student std1 =new Student("张三",18,"男");
if(std.equals(std1)){ //if(std.compare(std1))
System.out.println("相同的对象");
}else{
System.out.println("不同的对象");
}
System.out.println(std);
System.out.println(std1);
}
}
1.this代表当前对象也就是下面操作此方法(equals)的std对象而stu代表的是传入对象也就是说是下面的std1对象.
2.在进行比较时候基本类型(int ,float....)比较相等时采用"=="是比较的地址。
3.在进行比较时候引用类型就像String采用equals比较。是比较的内容
**/
/**
个人觉得把equals()变成compare()这样更好。能从方法知道是操作的是对象的比较
**/
class Student extends java.lang.Object{
private String mName;
private int mAge;
private String mSex;
public Student(String name, int age, String sex) {
mName = name;
mAge = age;
mSex = sex;
}
public String getMName() {
return mName;
}
public void setMName(String name){
mName = name;
}
public int getMAge() {
return mAge;
}
public void setMAge(int age) {
mAge = age;
}
public String getMSecx() {
return mSex;
}
public void setMSecx(String secx){
mSex = secx;
}
public String toString(){
return "姓名是:"+this.mName+",性别是:"+this.mSex+",年龄是:"+this.mAge;
}
public boolean equals(Student stu){ //public boolean compare(Student stu){}
if(this.mName.equals(stu.mName)&&(this.mAge==stu.mAge)&&(this.mSex.equals(stu.mSex))){
return true;
}else {
return false;
}
}
}
public class StudentTest {
public static void main(String[] args){
Student std =new Student("张三",18,"男");
Student std1 =new Student("张三",18,"男");
if(std.equals(std1)){ //if(std.compare(std1))
System.out.println("相同的对象");
}else{
System.out.println("不同的对象");
}
System.out.println(std);
System.out.println(std1);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
equals比较的是是否是对同一个对象的引用
代码里的std与std1都是对对象池里的Student("张三",19,"男");的引用,所以返回true
代码里的std与std1都是对对象池里的Student("张三",19,"男");的引用,所以返回true
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请格式化代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询