重写tostring和equals方法

重写tostring和equals方法

ID:14283325

大小:61.50 KB

页数:6页

时间:2018-07-27

重写tostring和equals方法_第1页
重写tostring和equals方法_第2页
重写tostring和equals方法_第3页
重写tostring和equals方法_第4页
重写tostring和equals方法_第5页
资源描述:

《重写tostring和equals方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、重写ToString和equals方法一、重写toString()方法为什么要重写toString()方法在Object类里面定义toString()方法的时候返回的对象的哈希code码,这个haxicode码不能简单明了的表示出对象的属性。所以要重写toString()方法。当需要将一个对象输出到显示器时,通常要调用他的toString()方法,将对象的内容转换为字符串.java中的所有类默认都有一个toString()方法默认情况下System.out.println(对象名)或者System.out.println(对象名.toString

2、())输出的是此对象的类名和此对象对应内存的首地址如果想自定义输出信息必须重写toString()方法注意事项1.必须被声明为public2.返回类型为String3.方法的名称必须为toString,且无参数4.方法体中不要使用输出方法System.out.println()二、重写equals()方法为什么要重写equals()方法在Object类里面定义的equals比较的是对象的引用是否指向同一块内存地址。一般情况下比较两个对象时比较他的值是否一致,所以要进行重写。重写之后是为了比较两个对象的value值是否相等。特别指出,利用equal

3、s比较八大包装对象(如int,float等)和String类(因为该类已重写了equals和hashcode方法)对象时,默认比较的是值,在比较其它对象都是比较的引用地址。注意事项重写equals必须注意:*1自反性:对于任意的引用值x,x.equals(x)一定为true*2对称性:对于任意的引用值x和y,当x.equals(y)返回true,y.equals(x)也一定返回true*3传递性:对于任意的引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也一定返回tru

4、e*4一致性:对于任意的引用值x和y,如果用于equals比较的对象信息没有被修改,*多次调用x.equals(y)要么一致地返回true,要么一致地返回false*5非空性:对于任意的非空引用值x,x.equals(null)一定返回false一、示例1.重写前面定义的“Person”类和“Student”类的toString及equals方法,并编程测试。程序如下:classPerson{inti;Person(){}Person(inti){this.i=i;}publicStringtoString(){return"我叫Mary";}p

5、ublicbooleanequals(Objectobj){Personp1=(Person)obj;if(this.i==p1.i)returntrue;elsereturnfalse;}}classStudentextendsPerson{intx,y;Student(intx,inty){this.x=x;this.y=y;}publicStringtoString(){return"我是计算机系计科09级学生";}publicbooleanequals(Objectobj){Students1=(Student)obj;if(this.i

6、==s1.i)returntrue;elsereturnfalse;}}publicclassTestPerson{publicstaticvoidmain(Stringargs[]){Personp1=newPerson(2);Personp2=newPerson(2);Students1=newStudent(3,4);Students2=newStudent(3,4);System.out.println(p1.equals(p2));System.out.println(s1.equals(s2));System.out.println(

7、p1);System.out.println(s1);}}运行结果:2.根据上面的程序,构造“Teacher”类,继承“Person”类,要求:(1)增加“职称(String)”属性;(2)具有和“Student”类类似的构造重载方法;(3)重写“Person”类的info()方法,增加“职称”信息。程序如下:classPerson{Stringname;longid;intage;Person(){}Person(Stringname,longid,intage){this.name=name;this.id=id;this.age=age;}

8、voidinfo(){System.out.println("我的信息是:"+"姓名="+name+";"+"证件号="+id+";"+

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。