java笔记 对象的创建和对象调用方法的详细过程
2013-03-28 00:36
459 查看
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
代码如下:
Person类中有静态代码块,静态成员变量,成员变量,构造代码块,构造函数,普通函数。
那么语句1,构造一个带参的Person对象的时候,具体的执行顺序是什么呢?
1.因为在TestSequence类中new了Person类的对象,所以jvm会首先找到Person.class问价并加载到内存中。
2.因静态修饰符所修饰的代码优先级较高,故会先执行Person类中的静态代码块
3.接着会在堆内存中开辟空间,给对象p分配内存地址
4.在堆内存中建立对象的特有属性,并进行默认初始化值
5.因有静态成员变量,故此时对其country属性进行显示初始化
6.因构造代码块的优先级高于构造函数,故此时执行构造代码块中的代码
7.对对象进行对应构造函数(本例中为一参构造函数)函数的初始化
8.将内存地址值付给栈内存中的p变量
接下来看看语句2的具体执行顺序:
此时会直接去Person类的栈内存中找到show()方法执行
总结:内存中的执行顺序搞清楚,才能真正提高效率!
代码如下:
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()方法执行
总结:内存中的执行顺序搞清楚,才能真正提高效率!
相关文章推荐
- JNI学习笔记:(1)开篇(2)本地代码访问Java代码 (3)本地方法取得Java属性/调用java方法 (4)本地代码创建Java对象(包括javaString) (5) 本地方法处理java数组
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- java创建一个子类对象是会调用父类的构造方法会不会创建父类
- java创建一个子类对象是会调用父类的构造方法会不会创建父类
- Java中对象方法的调用过程&动态绑定(Dynamic Binding)
- 反射学习笔记之动态创建对象和调用方法
- 波哥学JAVA,定义类 声明属性 创建对象 实例化对象 对象调用属性或者方法
- 图解Java对象初始化过程以及方法调用
- Java代理学习-创建动态类的实例对象及调用其方法
- 深入理解Java 虚拟机(周志明)笔记(四)——Java对象创建过程
- java对象创建过程 笔记
- 用JAVA语言编写程序:包含两个类,一个类Cricle中包含计算圆周长,面积的方法。在另一个类Compute中给出半径值为10,创建对象,并调用Cricle类中的方法,计算该对象的面积、周长并显示出结
- 黑马程序员--Java基础加强--07.【反射创建对象 操作字段 调用方法的异同】【个人总结】
- 笔记2-----创建一个java实例对象的方法
- Java中调用对象方法的执行过程
- java创建一个子类对象是会调用父类的构造方法会不会创建父类
- 嵌入式软件开发培训笔记——Java第三天(方法重载、对象的构造与初始化过程分析、封装等)
- 图解Java对象初始化过程以及方法调用
- 【Java学习笔记】父类引用指向子类对象时方法的调用
- java基础-反射3(反射,反射创建对象,操作对象属性,调用对象方法)