黑马程序员技术交流社区
标题:
字节码问题
[打印本页]
作者:
liuyangyang
时间:
2013-4-8 20:14
标题:
字节码问题
本帖最后由 liuyangyang 于 2013-4-10 18:47 编辑
每一个类都是Object类的子类,每当创建一个类的对象时,内存中都会出现Object这个类的字节码吗?
作者:
wanggang
时间:
2013-4-8 20:52
java字节码是javac编译后产生的,当下次你再运行这个程序时,java虚拟机就直接执行字节码,不再调用java代码。
作者:
whs_nk
时间:
2013-4-8 22:31
根据下面这个程序,我认为编译后的字节码中也应该含有Object相关的字节码的
public class GetParentClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Class<?> room2Class = Room2.class.getSuperclass();//从Room2的字节码中获取其默认的父类
System.out.println(room2Class); //结果为class java.lang.Object
}
}
class Room2{//默认继承Object类
private String id;
private int price;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public Room2(String id, int price) {
super();
this.id = id;
this.price = price;
}
}
复制代码
作者:
王怀亮
时间:
2013-4-9 13:35
Object类是所有类的父类,当一个类的对象创建时,会先创建他的父类,所以肯定会有其父类的编译文件的,由此,我认为不管什么类运行,因为他们都是Object的子类,所以程序底层都会先创先Object对象的,所以应该有Object的字节码的
作者:
王怀亮
时间:
2013-4-9 13:36
Object类是所有类的父类,当一个类的对象创建时,会先创建他的父类,所以肯定会有其父类的编译文件的,由此,我认为不管什么类运行,因为他们都是Object的子类,所以程序底层都会先创先Object对象的,所以应该有Object的字节码的
作者:
陈丽莉
时间:
2013-4-9 14:08
若还有问题,继续追问; 没有的话,将帖子分类改成【已解决】哦~
点进自己的帖子,编辑->标题左侧有下拉菜单->改变分类->保存~
作者:
李罡
时间:
2013-4-9 15:08
当把一个类加载进内存的时候,会先把它的父类加载进内存,而Object是所有类的父类,所以会先于该类加载进内存,生成字节码文件。把类加载进内存的时候,如果此时内存中已经有该字节码文件,则不需要重新加载,而是直接调用该字节码,所以创建对象时Object只要加载一次后就不需要再加载了,内存中会有Object的字节码。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2