黑马程序员技术交流社区

标题: 类的创建于静态引用的区别问题 [打印本页]

作者: 王乐    时间: 2012-9-11 13:59
标题: 类的创建于静态引用的区别问题
现在有个疑惑想不通,请教大家。
我发现啊,把类创建对象以后,系统会创建1个CLASS文件
可是,我把类的构造函数私有化了。在另1个JAVA文件中只是用 类.函数名 的方法引用了这个类中的静态函数。 系统也会创建这个类的CLASS文件。

那CLASS文件的被创建到底意味着什么?是意味着对象的建立?还是类的加载?2者又有什么不同?


  

作者: 杨习平    时间: 2012-9-11 15:23
JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。
CLASS 文件被创建是由于jvm的性能只能识别自己的语言就是字节码,我们通常是借助jdk和jre将其编译为jvm自己的识别语言来给我们作出相应的反馈,他在加载的时候就是一个类的对象,这儿你不要想的太多。这样理解很简单。我是这样理解的,你感觉了!
作者: 黑马-王言龙    时间: 2012-9-11 15:33
是类的加载

静态方法不需要创建对象,它随着类的字节码文件而加载到内存当中。
作者: 王乐    时间: 2012-9-11 16:34
杨习平 发表于 2012-9-11 15:23
JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负 ...

你的意思是,之所以出现1个CLASS文件是因为JVM编译的需要?
那这样的话是不是说不管是引用类中静态函数还是通过类创建对象,只要类被引用就1定会出现CLASS文件?


还有您说的
他在加载的时候就是一个类的对象,这儿你不要想的太多。
意思是想要使用另1个JAVA文件中的类的话JVM就必须建立类的对象也就是CLASS文件?

作者: 王乐    时间: 2012-9-11 16:37
黑马-王言龙 发表于 2012-9-11 15:33
是类的加载

静态方法不需要创建对象,它随着类的字节码文件而加载到内存当中。 ...

可是我实验了下

引用了另1个JAVA文件中的静态方法时候,自动出现了1个CLASS文件
那生成这个CLASS文件只是JAVA文件被编译了?于是否创建了对象无关?
作者: 尤圣回    时间: 2012-9-11 18:07
静态的在内存中只加载一次 记住这句话就可以了
作者: 黑马-王言龙    时间: 2012-9-12 14:26
王乐 发表于 2012-9-11 16:37
可是我实验了下

引用了另1个JAVA文件中的静态方法时候,自动出现了1个CLASS文件

无关        

作者: 陈俊来    时间: 2012-9-12 14:33
class文件径打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然加载到JVM(java虚拟机)里头运行。
class文件是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件。
class文件的生成表示java文件被编译了。

希望对lz有帮助
作者: 王乐    时间: 2012-9-13 07:41
陈俊来 发表于 2012-9-12 14:33
class文件径打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然加载到JVM(ja ...

谢谢回复~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2