当前位置: 首页 > news >正文

30天学习Java第六天——Object类

Object类

java.lang.Object时所有类的超类。Java中所有类都实现了这个类中的方法。

toString方法

将Java对象转换成字符串的表示形式。

public String toString() {
       return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

默认实现是:完整类名+ @ + 十六进制的数字
如果你不满意toString的实现不满意,可以对其进行重写,使其更具有可读性,符合自己的需求。
对于equals方法也是一样,如果业务需要,而equals的比较方法不满足,也可以对其重写,以满足需求。

  • 当print()输出的是一个引用时,若该引用不是null时,默认调用该引用的toString方法输出

finalize方法

  • 当一个对象的引用为null了,这个对象就要被GC回收释放了(GC也会自动调用该方法),在对象即将被释放之前可以使用该方法执行一些“临终操作”
  • 这是Java给程序员提供的一个时机
  • finalize()的默认实现为空,若要使用必须重写
  • Java9之后,该方法已经被废弃了

clone方法

  • 开发中要保护原对象的数据结构。通常复制一份,生成一个新对象,对新对象进行操作
  • Object中的clone方法是受保护的protected,因此一般需要对clone方法进行重写
  • 凡是参加clone的对象,必须实现标志接口Cloneable,否则会报错,无法克隆错误

浅克隆与深克隆

  • 对浅克隆出来的对象进行修改操作,不会影响原来的对象
  • 浅克隆会导致下面这种情况出现,浅克隆一个User对象,但是User对象中有个Address类型的成员变量,更改浅克隆对象的add变量值,会修改原先对象的add值,这不是我们想看到的,因此就需要克隆的时候,把Address也克隆一个,这种克隆称为深克隆

在这里插入图片描述

  • 如何深克隆
    在User的重写clone方法中,让User关联的Address对象也克隆一份

内部类

在类中定义的类称为内部类,分为静态内部类、实例内部类、局部内部类、匿名内部类。
匿名内部类可以不显示定义一个类,直接在new对象的时候进行实现即可,适用于只使用一次的类


注:本文章源于学习动力节点老杜的java教程视频后的笔记整理,方便自己复习的同时,也希望能给csdn的朋友们提供一点帮助。

相关文章:

  • LuaJIT 学习(3)—— ffi.* API 函数
  • VIC模型率定验证
  • 【EI检索】第二届计算机、视觉与智能技术国际会议完成EI检索
  • jenkins 配置邮件问题整理
  • 02-Canvas-fabric.BaseBrush绘图工具
  • /proc/<pid>/下的节点的读取及相关内核逻辑分析及getrusage
  • 下载安装启动 VMware 个人免费版本
  • 程序化广告行业(14/89):DSP供应商评估、服务模式与常见平台
  • 京鲁医疗健康专家委员会聊城专家团成立
  • 使用位运算实现加法、减法、乘法和除法
  • 3.14学习总结 排序算法
  • 使用 VLOOKUP 和条件格式在 Excel 中查找并标红匹配的串号
  • 编程自学指南:java程序设计开发,网络编程基础,TCP编程,UDP编程,HTTP客户端开发
  • 扫描电子显微镜有何特点和用途?
  • Hello Mr. My Yesterday日文歌词附假名注音,祭奠逝去的青春
  • Spring 中 BeanFactoryPostProcessor 的作用和示例
  • Qt开发:QtWebEngine中操作选择文本
  • 【QT】文件系统相关 -- QFile
  • 上位机使用QtCharts绘图
  • linux 命令 tail
  • 甘肃省白银市一煤矿发生透水事故,3人失联
  • 贵州茅台:支持工作餐不上酒的规定,请投资者相信茅台创新和自我调节能力
  • 武汉警方通报一起故意伤害案件:1人死亡,嫌疑人已被抓获
  • 国家统计局:要持续加大好房子建设供应力度,积极推动城市更新行动和保障房建设
  • 缅甸发生5.0级地震
  • 有关“普泽会”,俄官方表示:有可能