黑马程序员技术交流社区
标题:
一个对象的内心世界。
[打印本页]
作者:
lygku
时间:
2015-6-23 18:33
标题:
一个对象的内心世界。
大家一个好奇创建一个对象,内存的运行,我把老师的整理了一下如下:创建对象所做的一个事情
1、new的时候会通过jvm将Person.class加载进内存,栈内存中存在p
2、静态代码块被执行(如果有的话),静态优先于对象,给person.class类进行初始化;
3、在堆内存开辟一个空间,分配内存地址。
4、在堆内存中建立对象的特有属性,name和country,并且有个初始化动作,初始化给的是默认值;
5、对属性进行显示初始化
6、对对象进行构造代码块初始化(优先级比构造函数高)
7、对对象进行对应的构造函数初始化
8、将内存地址赋给栈内存中的p变量
class Person{
private String name;
private int age;
private static String country="cn";
//第三个打印
Person(String name,int age){
this.name=name;
this.age=age;
System.out.println(name+"---"+age);
}
//第二个打印
{
System.out.println(name+"---"+age);
}
//第一个打印
static {
System.out.println("stataic");
}
public void setName(String name){
this.name=name;
}
public void speak(){
System.out.println(this.name+"---"+this.age);
}
public static void showCountry(){
System.out.println("Country"+country);
}
}
class PersonDemo{
public static void main(String[] args){
Person p = new Person("黑马哥",25);
}
}
复制代码
作者:
fanrong
时间:
2015-6-23 18:46
我前两天也刚彻底弄明白创建对象后对象都做了什么
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2