您的位置:首页 > 编程语言 > Java开发

java笔记 对象的创建和对象调用方法的详细过程

2013-03-28 00:36 459 查看
----------- android培训java培训、java学习型技术博客、期待与您交流! ------------
代码如下:

public class TestSequence {
public static void main(String[] args) {
Person p = new Person("li si");//语句1.构造一个Person对象
p.show();//语句2.对象调用方法
}
}
class Person{
//静态代码块
static{
System.out.println("I'm a man!");
}
//静态成员变量
public static String country="China";
//成员变量
public String name=null;
//构造代码块
{
System.out.println("Before initialization");
}
//构造函数
public Person(String name){
this.name=name;
}
//普通方法
public void show(){
System.out.println("I'm " +name+",my country is "+country);
}
}

Person类中有静态代码块,静态成员变量,成员变量,构造代码块,构造函数,普通函数。

那么语句1,构造一个带参的Person对象的时候,具体的执行顺序是什么呢?

1.因为在TestSequence类中new了Person类的对象,所以jvm会首先找到Person.class问价并加载到内存中。

2.因静态修饰符所修饰的代码优先级较高,故会先执行Person类中的静态代码块

3.接着会在堆内存中开辟空间,给对象p分配内存地址

4.在堆内存中建立对象的特有属性,并进行默认初始化值

5.因有静态成员变量,故此时对其country属性进行显示初始化

6.因构造代码块的优先级高于构造函数,故此时执行构造代码块中的代码

7.对对象进行对应构造函数(本例中为一参构造函数)函数的初始化

8.将内存地址值付给栈内存中的p变量

接下来看看语句2的具体执行顺序:

此时会直接去Person类的栈内存中找到show()方法执行

总结:内存中的执行顺序搞清楚,才能真正提高效率!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐