JDK三大特殊类: Object、String、包装类

1、Object 类
  • Object 类是Java所有类的默认父类,万物之母,不需要使用 extends 关键字明确写出继承 Object,只要使用 class 关键字声明的类,默认都有一个父类,就是 Object
  • 由于Object类是所有类的父类,因此Object类是参数的最高统一化!! 所有类的对象,都可以通过Object引用进行接收!
  • java 文件对象特殊字符 java中特殊的类_属性值

  • 由于Object类是所有类的父类,则Object类中所有的方法,子类中都有,而且我们可以选择性的覆写其中的方法。
    现在我们主要关注一下 Object 类中的对象输出方法: toString
  • java 文件对象特殊字符 java中特殊的类_属性值_02

  • 将任意类的对象调用println方法,实际上就是调用的Object类提供的toString方法进行打印的!
  • toString方法打印的是地址!所以若我们想在自己类中输出属性值,而非地址,就可以覆写Object类的toString方法!!
2、Object还可以接收所有引用数据类型的权利(包括数组和接口对象)

java 文件对象特殊字符 java中特殊的类_父类_03

3、“==” 和 equals方法

对于基本数据类型来说,“==” 比较的是两个变量的数值是否相等;

int a = 10;
int b = 20;
System.out.println(a == b);  			// false

对于引用数据类型来说,“ == ” 仍然比较的是两个变量的数值,只不过引用变量保存的数值是一个地址! “ == ” 比较的是两个对象的地址是否相等! 所以要想进行对象内部属性值比较是否相等,使用 equals 方法!(Object 类提供的方法)

这是Object类默认提供的 equals方法:当前对象和传入对象obj的地址是否相同,当前对象的引用this和传入obj引用是否指向同一个对象(和==没什么区别);

java 文件对象特殊字符 java中特殊的类_开发语言_04


所以我们在自定义的类中,想要进行当前类的对象属性比较,必须要覆写 equals方法!

java 文件对象特殊字符 java中特殊的类_属性值_05

java 文件对象特殊字符 java中特殊的类_属性值_06

解释一下Java中 “ == ” 和 equals方法的区别:(先答共性,再答区别)

  1. “ == ” 进行的是两个变量数值的比较。 对于基本类型来说,比较的就是具体的数值是否相等;对于引用类型来说,“ == ”比较的是两个引用是否指向同一个对象。
  2. equals 方法进行的是两个类对象的属性值比较,若类的对象要具体比较属性值是否相等,需要覆写Object类提供的 equals方法。
4、Object类型除了基本数据类型无法处理外,所有引用数据类型都可以通过Object接收!

所以包装类应运而生!