在Java中所有的类(包括自定义类)都直接或间接继承ljava.lang.Object类,它是比较特殊的一类,是所有类的父类,是Java类层中最高层类,在定义类时可以省略extens Obiect不写。在Object类中主要包括clone()、finalize()、equals()、toString()方法,这些方法在任何类中都可以被重写。下面介绍3种最常用的方法:
getClass()方法
getClass方法返回实例对象所属的类,返回的是class对象
toString()方法
它的功能是将一个对象返回为字符串形式,它会返回一个String实例。在实际应用中通常重写toString()方法,为对象提供一个特定的输出模式,当这个类转化为字符串或与字符串连接时,将自动调用重写的toString()方法。toString() 方法返回该对象的字符串,当程序输出一个对象或者把某个对象和字符串进行连接运算时,系统会自动调用该对象的 toString() 方法返回该对象的字符串表示。Object 类的 toString() 方法返回“运行时类名@十六进制哈希码”格式的字符串(哈希码即hashCode,每个 Java 对象都有哈希码属性,哈希码可以用来标识对象,提高对象在集合操作中的执行效率),但很多类都重写了 Object 类的 toString() 方法,用于返回可以表述该对象信息的字符串。


toString方法的重写通常用在po类对象
package com.wjh.po;/*** @author wjh* @date 2021/7/12 11:34* @Package com.wjh.po*/public class User {private Integer id;private String name;private String pwd;public User() {}public User(Integer id, String name, String pwd) {this.id = id;this.name = name;this.pwd = pwd;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", pwd='" + pwd + '\'' +'}';}}
equals()方法
这里的equals和前面的String类中的equals()方法,String类中的equals()方法时已经被重写过的了,而Object中的equals()方法和“==”运算符时一样的,都是比较地址和内容的,因此要比较内容必须重写equals()方法。
可以看到,由于p1和p2的地址不相同,尽管内容相同,但a依然是false。
可以看到重改之后的equals就只比较了内容,而没有比较地址了。
注意:
- 关于“==”和“equals”的区别,可以参考下面这篇文章,这篇文章写得很好:https://blog.csdn.net/jerry11112/article/details/79027834
