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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 坚强 黑马帝   /  2011-11-5 23:05  /  2811 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  我发现了个别基本的问题?也在别的帖子上见过,就是类是怎么被加载的,对象是怎么创建的?
  类被加载的时候生成了class文件,这个class文件是不是字节码?我注意到在一个程序中创建的每一个类在JAVAC后,都会有一个class文件,我在论坛上看到这样一句话,说:一个类只有一个对应的字节码,但是可以创建多个对象。为什么我给一个原本能编译成功的程序重命名后,再去运行会提示:找不到或无法加载主类  xxx(重命名后的名字)。  但是我的主方法所在类没有public 修饰,怎么会这样?
  至于对象的创建过程更不清楚,问题比较多,新人,请多多包涵!

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

6 个回复

倒序浏览
重命名后要重新编译,否则当你需要加载重命名后xxx的类的时候找不到该类的class文件.

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
加载类并不会运行静态代码块,只有当初始化的时候才会。只有第一次使用数据的时候Java才会进行初始化,而静态代码快是初始化的一部分.

至于Class.forName()请参考API:

public static Class<?> forName(String className)
                        throws ClassNotFoundException

    返回与带有给定字符串名的类或接口相关联的 Class 对象。调用此方法等效于:

          Class.forName(className, true, currentLoader)
         

其中第二个参数表示要是否要在加载后立即初始化。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
你的问题一 一回答:.class文件即为字节码文件,javac 是启动编译器, javac  xxx.java文件后生成xxx.class文件。一个类只有一个对应的字节码,但是可以创建多个对象,是这样的。
你重命名后要重新编译那个.java文件,才能加载重命名后xxx的类的class文件.
回复 使用道具 举报
肖瑞军 发表于 2011-11-5 23:27
你的问题一 一回答:.class文件即为字节码文件,javac 是启动编译器, javac  xxx.java文件后生成xxx.class ...

  怎么个重新编译法,我重新命名后,javac没有错误,第2句java xx提示找不到主类?{:3_62:}
回复 使用道具 举报
看是不是main方法写错了
回复 使用道具 举报
你重新命名过后的文件名称必须和入口函数所在的类同名,并重新编译、运行!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马