黑马程序员技术交流社区
标题:
类是怎么被加载的?对象是怎么创建的?
[打印本页]
作者:
坚强
时间:
2011-11-5 23:05
标题:
类是怎么被加载的?对象是怎么创建的?
我发现了个别基本的问题?也在别的帖子上见过,就是类是怎么被加载的,对象是怎么创建的?
类被加载的时候生成了class文件,这个class文件是不是字节码?我注意到在一个程序中创建的每一个类在JAVAC后,都会有一个class文件,我在论坛上看到这样一句话,说:一个类只有一个对应的字节码,但是可以创建多个对象。为什么我给一个原本能编译成功的程序重命名后,再去运行会提示:找不到或无法加载主类 xxx(重命名后的名字)。 但是我的主方法所在类没有public 修饰,怎么会这样?
至于对象的创建过程更不清楚,问题比较多,新人,请多多包涵!
作者:
齐国峰
时间:
2011-11-5 23:10
重命名后要重新编译,否则当你需要加载重命名后xxx的类的时候找不到该类的class文件.
作者:
高美云
时间:
2011-11-5 23:20
加载类并不会运行静态代码块,只有当初始化的时候才会。只有第一次使用数据的时候Java才会进行初始化,而静态代码快是初始化的一部分.
至于Class.forName()请参考API:
public static Class<?> forName(String className)
throws ClassNotFoundException
返回与带有给定字符串名的类或接口相关联的 Class 对象。调用此方法等效于:
Class.forName(className, true, currentLoader)
其中第二个参数表示要是否要在加载后立即初始化。
作者:
肖瑞军
时间:
2011-11-5 23:27
你的问题一 一回答:.class文件即为字节码文件,javac 是启动编译器, javac xxx.java文件后生成xxx.class文件。一个类只有一个对应的字节码,但是可以创建多个对象,是这样的。
你重命名后要重新编译那个.java文件,才能加载重命名后xxx的类的class文件.
作者:
坚强
时间:
2011-11-6 15:25
肖瑞军 发表于 2011-11-5 23:27
你的问题一 一回答:.class文件即为字节码文件,javac 是启动编译器, javac xxx.java文件后生成xxx.class ...
怎么个重新编译法,我重新命名后,javac没有错误,第2句java xx提示找不到主类?{:3_62:}
作者:
杨玉揆
时间:
2011-11-6 15:32
看是不是main方法写错了
作者:
周敏2011nc
时间:
2011-11-6 17:02
你重新命名过后的文件名称必须和入口函数所在的类同名,并重新编译、运行!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2