一个java菜鸟的疑问。 本帖最后由 alienshaw 于 2012-01-06 23:03:39 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 类定义的完整装载过程指的就是“class Parent {}class Child extends Parent implements MyInterface {}interface MyInterface {} ” 对吧?原来如此!谢谢。 编译、装载、顺序执行main里的语句。 Java是从main语句开始执行的,遇到需要用的类就会加载它 java 是先编译成 class 文件,其实这个时候已经编译完了,你运行时调用该类其实已经是编译之后了。 应该 Java是从main语句开始执行的,遇到需要用的类就会加载它 Java是从main语句开始执行的,遇到需要用的类就会加载它 代码放在开头和放在结尾效果是一样的,java执行不是从上到下的。如果先执行“class InstanceofDemo” 还没定义“class Child extends Parent implements MyInterface”,上面的“obj2 instanceof MyInterface”为什么不是false? java程序在编译的过程之中会首先找到程序的入口,也就是main方法,main方法必须定义为static才属于是整个类所有的方法,这样运行的时候就直接从这个开始执行了,至于其他的方法放在什么位置那倒是没有什么要求,只要是在这一个文件里面,当执行到创建Child类的时候它会自动的调用它继承的parent类,因为里面有继承的关系,所以是parent的一个实例,即c.instanceOf(p)返回true。但是,要注意的一点就是,在不同的文件中,那就不是这样了。比如说,Parent类和Child类位于两个文件中,那就要变编译Parent类之后才可以编译Child类,否则就会报错,因为,直接编译Child类java虚拟机找不到里面继承的Parent类在哪里,因此就无法编译和运行成功,这个时候就要先编译Parent类在编译Child类。 这个问题其实很简单,你在一个文件里面定义了3个类InstanceofDemoParentChild可以去看一下编译完成之后的.class文件,会生成3个换句话说,你只是凑巧将3个类写在了一个文件里面,一旦编译之后,有几个类就会生成几个class文件,跟你方没放在一个文件里面没关系,只不过如果放在一个文件里面的话,有且仅有一个类是public的,并且该类的名字与文件名字一致那么根据JAVA用到才加载的原则,就不难理解了。 从上到下的顺序是对的。当程序执行,所有的字节码文件都会装载jvm.而你new 一个对象时 Parent obj1 = new Parent(); Parent 已经被创建在了jvm中了,所以,你new之前Parent 已经存在jvm中了。 servlet中返回的中文乱码 SuppressWarnings 注解除了用unchecked,还可以用哪些值。 java多线程 请问一个递归问题 swing光标定位 setDate()是否可以将年、月、日及时、分、秒都保存进数据库? 关于Jbuilder的数据操作的问题 switch语句和else if的问题。 设了JDK的环境变量后ORACLE就打不开了!怎么回事啊? 数组实例化中的 new 类名(){ } 。 是不是用了匿名内部类 怎么实现下面这个类的克隆? 给位高手大大们给予解释啊,解释下为什么可以用这个表示,并且还都不一样。。
class Parent {}
class Child extends Parent implements MyInterface {}
interface MyInterface {} ” 对吧?原来如此!谢谢。
如果先执行“class InstanceofDemo” 还没定义“class Child extends Parent implements MyInterface”,上面的“obj2 instanceof MyInterface”为什么不是false? java程序在编译的过程之中会首先找到程序的入口,也就是main方法,main方法必须定义为static才属于是整个类所有的方法,这样运行的时候就直接从这个开始执行了,至于其他的方法放在什么位置那倒是没有什么要求,只要是在这一个文件里面,当执行到创建Child类的时候它会自动的调用它继承的parent类,因为里面有继承的关系,所以是parent的一个实例,即c.instanceOf(p)返回true。但是,要注意的一点就是,在不同的文件中,那就不是这样了。比如说,Parent类和Child类位于两个文件中,那就要变编译Parent类之后才可以编译Child类,否则就会报错,因为,直接编译Child类java虚拟机找不到里面继承的Parent类在哪里,因此就无法编译和运行成功,这个时候就要先编译Parent类在编译Child类。
InstanceofDemo
Parent
Child可以去看一下编译完成之后的.class文件,会生成3个
换句话说,你只是凑巧将3个类写在了一个文件里面,一旦编译之后,有几个类就会生成几个class文件,跟你方没放在一个文件里面没关系,只不过如果放在一个文件里面的话,有且仅有一个类是public的,并且该类的名字与文件名字一致那么根据JAVA用到才加载的原则,就不难理解了。
当程序执行,所有的字节码文件都会装载jvm.
而你new 一个对象时 Parent obj1 = new Parent(); Parent 已经被创建在了jvm中了,所以,你new之前Parent 已经存在jvm中了。