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

文章目录


常用类: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)对象的克隆方式(图解)
 深克隆:复制对象
  是复制一份全新的,属性内容一致的对象,但是内存中的地址值一定不一样
 浅克隆:复制引用
【Java基础学习笔记】12、常用类Object

(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

上一篇:JAVA基础学习


下一篇:Java 基础知识清单