在Java中所有的类(包括自定义类)都直接或间接继承ljava.lang.Object类,它是比较特殊的一类,是所有类的父类,是Java类层中最高层类,在定义类时可以省略extens Obiect不写。在Object类中主要包括clone()、finalize()、equals()、toString()方法,这些方法在任何类中都可以被重写。下面介绍3种最常用的方法:
image.png

getClass()方法

getClass方法返回实例对象所属的类,返回的是class对象
image.png

toString()方法

它的功能是将一个对象返回为字符串形式,它会返回一个String实例。在实际应用中通常重写toString()方法,为对象提供一个特定的输出模式,当这个类转化为字符串或与字符串连接时,将自动调用重写的toString()方法。toString() 方法返回该对象的字符串,当程序输出一个对象或者把某个对象和字符串进行连接运算时,系统会自动调用该对象的 toString() 方法返回该对象的字符串表示。Object 类的 toString() 方法返回“运行时类名@十六进制哈希码”格式的字符串(哈希码即hashCode,每个 Java 对象都有哈希码属性,哈希码可以用来标识对象,提高对象在集合操作中的执行效率),但很多类都重写了 Object 类的 toString() 方法,用于返回可以表述该对象信息的字符串。
image.png
image.png
image.png
toString方法的重写通常用在po类对象

  1. package com.wjh.po;
  2. /**
  3. * @author wjh
  4. * @date 2021/7/12 11:34
  5. * @Package com.wjh.po
  6. */
  7. public class User {
  8. private Integer id;
  9. private String name;
  10. private String pwd;
  11. public User() {
  12. }
  13. public User(Integer id, String name, String pwd) {
  14. this.id = id;
  15. this.name = name;
  16. this.pwd = pwd;
  17. }
  18. public Integer getId() {
  19. return id;
  20. }
  21. public void setId(Integer id) {
  22. this.id = id;
  23. }
  24. public String getName() {
  25. return name;
  26. }
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30. public String getPwd() {
  31. return pwd;
  32. }
  33. public void setPwd(String pwd) {
  34. this.pwd = pwd;
  35. }
  36. @Override
  37. public String toString() {
  38. return "User{" +
  39. "id=" + id +
  40. ", name='" + name + '\'' +
  41. ", pwd='" + pwd + '\'' +
  42. '}';
  43. }
  44. }

equals()方法

这里的equals和前面的String类中的equals()方法,String类中的equals()方法时已经被重写过的了,而Object中的equals()方法和“==”运算符时一样的,都是比较地址和内容的,因此要比较内容必须重写equals()方法。
image.png
可以看到,由于p1和p2的地址不相同,尽管内容相同,但a依然是false。
image.png
可以看到重改之后的equals就只比较了内容,而没有比较地址了。

注意:

  1. 关于“==”和“equals”的区别,可以参考下面这篇文章,这篇文章写得很好:https://blog.csdn.net/jerry11112/article/details/79027834