Java中Object类的方法(toString方法和equals方法),tostringequals
分享于 点击 4910 次 点评:282
Java中Object类的方法(toString方法和equals方法),tostringequals
Object是所有类的父类(国外成为超类superclass),Object类的方法是相当少的(理解为教室人越多,他们的共同点越少)。一:toString方法
Object的toString()方法帮助我们返回一个字符串,这个字符串的格式是固定的:类名@hashcode。这个hashcode是一串数字(16进制),在Java中叫句柄/(虚拟)地址。但是*句柄不是内存地址*。
toString方法定义的原意是返回能够描述当前这个类的事例的一串文字。但是在Object中无意义,所以通常需要重写。
system.out.println(obj) 方法实际上是输出给定对象的toString方法的返回值。
对象引用存栈里,对象本身存堆(JVM在管理对象时创建的一个内存空间)里。
静态方法中,不能使用非静态属性和方法;而非静态方法中可以使用静态属性和方法。所以不能在main方法中system.out.println(toString)。
二:equals方法
public boolean equals(Object obj) 该方法的原意: 比较对象与给定内容对象是否一致 在Object中的实现(和==一模一样): public boolean equals(Object obj) return (this==obj)
==比较的是双方的值是否相等,p1,p2是两个引用类型变量,而引用类型变量保存的是对象的句柄(对象的地址那个hashcode值),==在对象比较时描述的是p1,p2是否为同一个对象。而equals方法力图去描述两个对象内容是否相等,内容相等取决于业务逻辑需要,可以自行定义比较规则。
equals也是需要重写的!重写equals时第一件事就是判断给定的对象是否和当前对象为同一类型。不是同一类型直接返回false,不具有可比性。equals比较前需要进行安全验证,确保给定的对象不是null,obj若是null,说明该引用变量没有指向任何对象,那么就不能引用obj所指向对象(因为对象不存在)的属性或方法,若这么做会引发NullPointerException,空指针异常!
直接将Object类转为子类是存在风险的!我们不能保证Object和我们要比较的对象是同一类型的,会引发ClassCastException(类造型异常)!
相关文章
- 暂无相关文章
用户点评