A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王乐 中级黑马   /  2012-9-11 13:59  /  1817 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

现在有个疑惑想不通,请教大家。
我发现啊,把类创建对象以后,系统会创建1个CLASS文件
可是,我把类的构造函数私有化了。在另1个JAVA文件中只是用 类.函数名 的方法引用了这个类中的静态函数。 系统也会创建这个类的CLASS文件。

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


  

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。
CLASS 文件被创建是由于jvm的性能只能识别自己的语言就是字节码,我们通常是借助jdk和jre将其编译为jvm自己的识别语言来给我们作出相应的反馈,他在加载的时候就是一个类的对象,这儿你不要想的太多。这样理解很简单。我是这样理解的,你感觉了!
回复 使用道具 举报
是类的加载

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

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


还有您说的
他在加载的时候就是一个类的对象,这儿你不要想的太多。
意思是想要使用另1个JAVA文件中的类的话JVM就必须建立类的对象也就是CLASS文件?
回复 使用道具 举报
黑马-王言龙 发表于 2012-9-11 15:33
是类的加载

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

可是我实验了下

引用了另1个JAVA文件中的静态方法时候,自动出现了1个CLASS文件
那生成这个CLASS文件只是JAVA文件被编译了?于是否创建了对象无关?
回复 使用道具 举报
静态的在内存中只加载一次 记住这句话就可以了
回复 使用道具 举报
王乐 发表于 2012-9-11 16:37
可是我实验了下

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

无关        
回复 使用道具 举报
class文件径打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然加载到JVM(java虚拟机)里头运行。
class文件是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件。
class文件的生成表示java文件被编译了。

希望对lz有帮助

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

回复 使用道具 举报
王乐 中级黑马 2012-9-13 07:41:51
9#
陈俊来 发表于 2012-9-12 14:33
class文件径打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然加载到JVM(ja ...

谢谢回复~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马