Java学习-Day12(动态绑定机制、Object类方法)

多态习题小结

  • 调用属性看编译类型,调用方法看运行类型

java的动态绑定机制(重要)

  1. 当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
  2. 当调用对象属性时,没有动态绑定机制,哪里声明哪里使用(在哪个类里调用就用哪个类里的属性)
  3. 简而言之,只要是调用方法,先去看运行类型是否有,如果有,直接使用;若没有,再找编译类型

多态的应用

  1. 多态数组

    数组的定义类型为父类类型,里面保存的实际元素类型为子类类型

  2. 多态参数

    方法定义的形参类型为父类类型, 实参类型允许为子类类型
    在这里插入图片描述

Object类详解

  • equals方法

    1. equals方法是Object类中的方法只能判断引用类型(可以查看jdk源码)
    2. 默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等
  • == 是一个比较运算符

    1. ==:既可以判断基本类型,又可以判断引用类型
    2. ==:如果判断基本类型,判断的是值是否相等
    3. ==:如果判断引用类型,判断的是地址是否相等,即判定是不是同一个对象
  • hashCode方法

    1. 提高具有哈希结构的容器的效率
    2. 两个引用,如果指向的是同一个对象,则哈希值肯定是一样的
    3. 两个引用,如果指向的是不同对象,则哈希值是不一样的
    4. 哈希值主要根据地址号来的!不能完全将哈希值等价于地址
    5. hashCode也可以重写
  • toString方法

    1. 基本介绍:默认返回全类名(包名+类名)+@+哈希值的十六进制,子类往往重写toString方法,用于返回对象的属性信息
    2. 重写toString方法,打印对象或拼接对象时,都会自动调用该对象的toString形式
    3. 当直接输出一个对象时,toString方法会被默认的调用
  • finalize方法(面试用)

    1. 当对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法,做一些释放资源的操作

    2. 什么时候被回收: 当某个对象没有任何引用时,则jvm就认为这个对象是一个垃圾对象,就会使用垃圾回收机制来销毁该对象,在销毁该对象前,会先调用finalize方法。

      Car car = new Car();
      car = null;
      //此时Car对象没有引用,就是垃圾,垃圾回收器就会回收(销毁)对象,在销毁对象前,会调用该对象的finalize方法,程序员就可以在finalize方法中,写自己的业务逻辑代码(如释放资源:数据库连接,或者打开文件。。。)如果程序员不重写,就会调用Object类的finalize,即默认处理,如果程序员重写了finalize,就可以实现自己的逻辑
      //有了垃圾不会立马回收,不是实时监控
      
    3. 垃圾回收机制的调用,是由系统来决定(即有自己的GC算法),也可以通过System.gc()主动触发垃圾回收机制(不一定调用成功)

  • 断点调试

    1. 排错

    2. 在断点调试中,是运行状态,是以对象的运行类型来执行的

    3. 断点调试是指在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。进行分析从而找到这个Bug

    4. 断点调试是程序员必须掌握的技能。

    5. 断点调试也能帮助我们查看java底层源代码的执行过程,提高程序员的Java水平。

    6. 快捷键:F8逐行执行代码
      F7(跳入)
      F8(跳过)
      shift+F8(跳出)
      F9(resume,执行到下一个断点)
      F7: 跳入方法内
      F8: 逐行执行代码.
      shift+F8: 跳出方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚来舟Mango

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值