Java连载56-toSting方法和equals方法
一、关于object中的tostring方法:
1.sun公司在object类中设计tostring方法的目的:返回java对象的字符串的表示形式。
2.在现实的开发过程中,object里面的tostring方法已经不够用了,因为object的tostring方法实现的结果不满意。object中的tostring方法实现的结果不满意。object中的呢tostring方法要被重写了。
3.println打印的如果是对象的话,那么就会默认打印对象的tostring方法得到的结果。
4.sun公司的默认tostring方法是这样的
public string tostring(){ return getclass().getname() + "@" + interger.tohexstring(hashcode()); }
object中的tostring方法返回:类名@java对象的内存地址经过哈希算法得到的int类型值在转换为十六进制。这个输出可以等同看作java对象在堆中内存地址。
5.举个例子
package com.bjpowernode.java_learning; public class d56_1_ { public static void main(string[] args) { object o1 = new object(); string s1 = o1.tostring(); system.out.println(s1); person56 p1 = new person56("sha",52); system.out.println(p1);//我们可以看出来,这里打印出来的不是对象,而是打印的对象的tostring方法的结果,所以和第11行结果相同 string s2 = p1.tostring(); system.out.println(s2); } } class person56 { string name; int age; person56(string name ,int age){ this.name = name ; this.age = age; } //重写这个方法,就要按照项目的实际需求进行重新编写 public string tostring() { return "person[name=" + name + ",age=" + age +"]"; } }
二、关于object中的equals方法
1.object中的equals方法:
public boolean equals(o2){ return (this == obj);//等号两边是引用类型,则比较内存地址,地址相同则返回true.反之,则返回false }
//object中的equals方法比较的是两个引用的内存地址。java对象中的equals方法的设计目的在于:判断两个对象是否一样。
2.举个例子
package com.bjpowernode.java_learning; public class d56_2_equalsmethodanalysis { public static void main(string[] args) { object o1 = new object(); object o2 = new object(); boolean b1 = o1.equals(o2); system.out.println(b1); star56 s1 = new star56(100,"xiaoming"); star56 s2 = new star56(100,"xiaoming"); system.out.println(s1.equals(s2)); //这样比较出来的是false,因为比较的是两个对象的内存地址,但是这样显然是不符合我们的预期 //其实我们想要比较的是两个对象里面的内容是不是一致的。于是我们重写 } } class star56{ int id; string name; public star56(int id,string name) { this.id = id; this.name = name; } }
三、源码:
d56_1_tostringmethodanalysis,java
d56_2_equalsmethodanalysis.java
地址:
https://github.com/ruigege66/java/blob/master/d56_1_tostringmethodanalysis,java
https://github.com/ruigege66/java/blob/master/d56_2_equalsmethodanalysis.java
2.csdn:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
推荐阅读
-
浅谈java 重写equals方法的种种坑
-
解决Maven 项目报错 java.httpservlet和synchronized使用方法
-
Java连载63-异常处理try...catch...、方法getMessageyu printStackTrace
-
Java学习总结之方法重载和方法重写
-
Java反射获取方法和属性
-
Java连载43-访问静态方法其他注意事项、static关键字
-
android用java和c实现查找sd卡挂载路径(sd卡路径)的方法
-
java中为什么接口中的属性和方法都默认为public?
-
java 学习笔记(入门篇)_程序流程控制结构和方法
-
浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别