Object类 包装类 内部类

Object类
一. Object类结构的剖析

  • Object类是Java类的根父类。
  • 如果在类的声明中未使用extends指明其父类,则默认父类为Java.lang.Object类。
  • Object类的功能(属性,方法)具有通用性。
    属性:无
    方法:equals(),toString(),getClass(), hashCode(), clone(), finalize(), wait(), notify(), notifyAll()在这里插入图片描述
  • Object类只声明了一个空参的构造器。
  • 垃圾回收机制
    在对象回收之前,会调用finalize这个方法。在这里插入图片描述
    二. 面试题:==和equals的区别

1.== :运算符

  • 可以使用在基本数据类型和引用数据类型变量中
  • 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等(类型不一定相等)。如果比较的是引用数据类型变量:比较两个变量的地址值是否相同,即两个引用是否指向同一个对象实体。
  • ==符号使用时,必须保证符号左右两边类型一致。

2.equals()方法的使用

  • 是一种方法,而非运算符,只能适用于引用数据类型
  • Object类中的equals()的定义和==的作用是相同的,即比较两个变量的地址值是否相同,即两个引用是否指向同一个对象实体。
  • 像String,Data,File,包装类等都重写了equals()方法,比较的是两个对象的"实体内容"是否相同
  • 我们自定义的类如果使用equals()的话,通常是比较"实体内容"是否相同,我们就要对equals()方法进行重写。重写的原则:比较"实体内容"是否相同。在这里插入图片描述
    三. toString()的使用
    1.当我们输出一个对象的引用时,实际上调用的就是当前对象的toString()。
    2.像String,Date, File,包装类等都重写了Object类的toString()方法,使得在调用对象的toString()时,返回"实体内容"信息。
    3.自定义类也可以重写toString()方法,当调用此方法时,返回的是"实体内容"。

在这里插入图片描述
包装类
1.Java提供了8种基本数据类型对应的包装类,使得类的基本数据类型变量具有类的特征。
在这里插入图片描述
2.掌握的是:基本数据类型,包装类,String三者之间的转换
在这里插入图片描述
JDK5.0的新特性:自动装箱和自动拆箱
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.包装类常见面试题
在这里插入图片描述
先是类型一致,则先不考虑true还是false,后面的数据类型提升到double型,因而输出的结果是1.0
在这里插入图片描述
内部类
在这里插入图片描述
1.Java中允许将类A声明在另一个类B中,则类A就是内部类,类B称为外部类。
2.内部类的分类:成员内部类(静态,非静态)vs 局部内部类(方法内,代码块内,构造器内)
3.成员内部类
(1)作为外部类的成员

  • 可以调用外部类的结构。
  • 可以被static修饰。
  • 可以被四种不同的权限修饰符修饰。
    (2)作为一个类
  • 类内可以定义属性,方法,构造器等。
  • 可以被final修饰,表示此类不能被继承。
  • 可以被abstract修饰,表示此类不能实例化。

4.关注以下三个问题
(1)如何实例化成员内部类的对象
在这里插入图片描述
(2)如何在成员内部类中区分调用外部类的结构
在这里插入图片描述
(3)开发中局部内部类的使用
在这里插入图片描述
5.注意点
规定:在局部内部类的方法中,如果调用局部内部类中所声明的方法中的局部变量的话,要求此局部变量要声明成final的
(JDK7及以前的版本,要求此局部变量显式的声明为final的。JDK8及以后的版本,可以省略final的声明。)
6.总结
成员内部类和局部内部类,在编译之后都会生成字节码文件。
格式: 成员内部类:外部类 内部类名.class
局部内部类:外部类$数字 内部类名.class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>