ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【Java基础学习笔记】12、常用类Object

2021-07-03 11:00:34  阅读:130  来源: 互联网

标签:12 Java 克隆 对象 clone Object hashCode 内存


文章目录


常用类:Object

是所有类的基类/父类,所以类都默认继承Object。

方法

1)Class getClass()

 (1)作用: 对象通过该方法,可以获得对象对应的类的字节码对象
  xx.java -> xx.class -> JVM
 类加载 - 方法区 - 字节码对象
 加载:类只加载一次,所以方法区类信息只有一个,所以字节码对象也只有一个
 加载的触发条件(使用类) —>工具:类加载器(ClassLoader)
   I: 实例化对象 new
   II: 静态方法/静态变量
   III:使用子类,父类必须先加载
   IV: Class.forName(“java.lang.String”) --手动加载指定的类
   V: String.class -> 获得类的字节码对象

 (2)notify/notifyAll/wait * 3 -> 跟线程相关。

2)Object clone() - 克隆

(1)对象的克隆方式(图解)
 深克隆:复制对象
  是复制一份全新的,属性内容一致的对象,但是内存中的地址值一定不一样
 浅克隆:复制引用
在这里插入图片描述

(2)调用
 clone调用时 -> not visible(不可见)
  要求: clone的对象必须标记是可克隆的,因为他是protected修饰的,只能在子类中可见,所以要进行重写

(3)一般不会重写clone方法
 I:因为clone方法不常用到
 II: 可以直接使用 - 引用复制
 III: 如果要重写clone方法,直接调用,则要实现Cloneable接口,否则会抛出CloneNotSupportedExecption,Cloneable是一个空接口,目的只有一个就是为了标记是可克隆的。

3)void finalize() - GC 垃圾回收机制

 内存溢出:在内存中没有存储的地方
 内存泄漏:内存被无效对象占用。
 一个对象分配内存之后,在使用结束时没有来得及释放,导致一直在占用内存,使得实际可用内存减少
 GC - 垃圾回收机制,定时清理内存
  I: 在程序运行时是开始启动,不定时回收内存中标记的垃圾,没有引用的对象,会被内存标记为垃圾。
  II: GC是自动调用的,也可以手动调用GC - Sytem.gc();
 总结: 原则上,Java中是不存在内存泄漏

4)toString():将对象以字符串的形式输出

 默认实现:
  getClass().getName() + “@” +Integer.toHexString(hashCode())
  @前:表示的是完整的类名
  @后:表示16进制的hashCode值
 如果想要自定义格式输出,那么就重写toString()

5)equals()

 作用:判断两个对象[this 和 obj]是否相等
 Object中默认实现方式:
  this == obj -> 判断两个地址值相不相等
 方法重写:
 目的:自定义比较规则
 步骤:
  1.判断是不是同一个对象
  2.判断是不是同一个类型
  3.既不是同一个对象也不是同一个类型就直接返回fasle

6) hashCode()

 作用:生成对象的hash值
 跟内存中的存储位置相关。
 public native int hashCode();
 hashCode() 不是抽象方法,但是也没有方法体,就是因为他是本地方法,这是跟底层相关的方法。底层是由c实现
 native: 本地的
 Java Native Interface

标签:12,Java,克隆,对象,clone,Object,hashCode,内存
来源: https://blog.csdn.net/qq_53743140/article/details/118436166

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有