Class & Object
-
Class
-
记录类的类型信息
-
类加载时候jvm为当前类生成Class创建对象,该对象存储再堆中
-
该类的实例需要通过此class对象进行实例化
-
Class对象由jvm创建 <因为Class有一个私有的构造函数>
-
作用: 运行时提供某个对象的类型信息
-
提供的类型信息
- 原子操作
- 反射信息
- 注解信息
-
创建Class类的对象
Class.forname()根据类名获取clazz.getClass()根据当前类的实例获取ClassA.class根据类的class获取
-
创建Class对象的实例
Class c = Class.forName("ClassA"); System.out.println(c.getName()); ClassA a = (ClassA) c.newInstance(); System.out.println(a.name());
-
-
Object
-
所有类的祖先
-
一共13个方法,9个子类可以访问,没有属性
public方法
clone 浅复制,实现cloneable接口 native方法 返回一个新的引用 浅拷贝 两个对象的引用类型公用同一份内存地址,修改其中一个,两一个也会被修改 深拷贝 再次动态分配内存,两个地址空间没有关联 拷贝时间花销大finalize 释放资源前调用 空实现 jvm调用 (一般不是程序员自己调用)wait 该对象在当前线程上等待 调用该方法后当前线程进入睡眠状态,直到以下事件发生。 (1)其他线程调用了该对象的notify方法。 (2)其他线程调用了该对象的notifyAll方法。 (3)其他线程调用了interrupt中断该线程。 (4)时间间隔到了。 此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。 notify 唤醒当前对象监听器上的某个等待线程 notifyall 唤醒当前对象监听器上的所有等待线程getclass 获得运行时类型 native方法 java专门的Class类描述对象的属性equals 内容比较 == 基本类型直接存储值,引用类型存储对象的地址 <比较的是变量的值是否相同> equals 比较内容完全相同hashcode 常常伴随equals一起重写 对象的hashCode()返回的不是对象所在的物理内存地址。甚至也不一定是对象的逻辑地址 hashCode()相同的两个对象,不一定相等,换言之,不相等的两个对象,hashCode()返回的哈希码可能相同。 因此,在上述代码中,重写了equals()方法后,需要重写hashCode()方法。tostring 由对象的类型和其哈希码唯一确定 同一类型但不相等的两个对象分别调用toString()方法返回的结果可能相同。整理自网络
-
本文深入探讨Java中Class与Object的概念,解析Class如何记录类型信息,由JVM创建及其实例化过程。同时,详细阐述Object作为所有类的祖先,其13个公共方法的功能,包括clone、finalize、wait、notify等,以及equals、hashcode和toString方法的重写原则。
6790

被折叠的 条评论
为什么被折叠?



