Class对象就是.class文件?那么这个对象存在哪里呢?本地硬盘?不是内存中吗
编译一个java新类时,编译器会把该新类源文件编译成class对象,保存为同名的.class文件。运行时装载该.class文件到内存里,并生成实例对象。
Class类被创建后的对象就是Class对象,注意,Class对象表示的是自己手动编写类的类型信息,比如创建一个Shapes类,那么,JVM就会创建一个Shapes对应Class类的Class对象,该Class对象保存了Shapes类相关的类型信息。实际上在Java中每个类都有一个Class对象,每当我们编写并且编译一个新创建的类就会产生一个对应Class对象并且这个Class对象会被保存在同名.class文件里(编译后的字节码文件保存的就是Class对象),那为什么需要这样一个Class对象呢?是这样的,当我们new一个新对象或者引用静态成员变量时,Java虚拟机(JVM)中的类加载器子系统会将对应Class对象加载到JVM中,然后JVM再根据这个类型信息相关的Class对象创建我们需要实例对象或者提供静态变量的引用值。需要特别注意的是,手动编写的每个class类,无论创建多少个实例对象,在JVM中都只有一个Class对象,即在内存中每个类有且只有一个相对应的Class对象
JDK7以上版本,静态域存储于定义类型的Class对象中,Class对象如同堆中其他对象一样,存在于GC堆中。
建议看一下java类的加载机制https://blog.csdn.net/fgets/article/details/52934178
new,对象存在虚拟得jvm空间里,简单得就是堆栈内存把,不会再磁盘中得,.class文件一般再tomcat等一些web服务目录下,这个文件,对应一个类
一个类,不能重名字得,但是这个对象得属性是相同得,但是名字也不同,一个类没限制大小,我不知道限制了没,也没限制对象多少
编译好的.java程序,通过java编译器生成.class文件,然后由类加载机制加载到jvm中,并且会随之生成一个相应的Class对象,这个对象是存放在推内存中的,他包含了有关类的所有信息。
class对象会被拆解成很多块,放到jvm不同的区域。class文件只是一个编译之后的16进制文件,可以参看官网如何转换成字节码指令,再到类加载器,最终到JVM
编写一个新的java类时,JVM就会帮我们编译成class对象,存放在同名的.class文件中。
在运行时,当需要生成这个类的对象,JVM就会检查此类是否已经装载内存中。
若是没有装载,则把.class文件装入到内存中。若是装载,则根据class文件生成实例对象。