类 Object
是类层次结构的根类。每个类都使用 Object
作为超类。所有对象(包括数组)都实现这个类的方法。
toString
方法返回该对象的字符串表示。通常,toString
方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
自己看法:所有自定义类都继承于Object类,即每个类都继承了toString
方法。使用toString
方法得到的是类的地址。为了使用方便我们经常在新建类的时候重新toString
方法,使其输出类的属性。
重写toString
方法为:
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
或者使用IDEA快捷键Alt+lns 或者(Fn + Alt + Del(lns))选择toString直接生成代码
使用 类名.toString()调用或者直接使用类名
Person one = new Person("代登辉",21);
String s = one.toString();
System.out.println(s); // object包重写.Person@282ba1e
System.out.println(one);
equals方法指示其他某个对象是否与此对象“相等”。
自己看法:继承于Object类的equals方法作用是比较两个对象的地址是否相等。通常我们需要对其进行覆盖重写使其可以检查两个对象的属性是否相同。
重写equals方法:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
name.equals(person.name);
}
或者使用IDEA的快捷键Alt+lns 或者(Fn + Alt + Del(lns))选择equals直接生成代码
Person one = new Person("代登辉",21);
Person two = new Person("代登辉",21);
boolean equals = one.equals(two);
System.out.println(equals);
在JDK7添加了一仑Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save (空指安全的)或null-tolerant(容忍空指针的) ,用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。
在比较两个对象的时候, Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个间题。方法如下:
public static boolean equals(Object a, Object b)
:判断两个对象是否相等。
源码如下:
public static boolean equals(Object a, Object b) {
return (a+b) || (a != null && a.equals(b));
}
示例代码:
String s1 = null;
String s2 = "abc";
boolean equals1 = s1.equals(s2);
System.out.println(equals1);
报错为:
Exception in thread "main" java.lang.NullPointerException
当调用equals方法的对象为空的时候不会报错。