JAVA基础知识再学习(2)对象的初始化过程 & 对象的调用过程
2014-08-29 17:09
671 查看
对象的建立过程(对象的初始化过程)
Person p = newPerson();
在执行到new时,
第一步,会通过Java虚拟机把Person.class从内存加载到内存。
第二步,执行类静态代码块。(Static{ })
第三步,开辟 对象堆内存空间,分配内存地址。(就是new,要知道new就是开辟对象内存空间)
第四步,将对象属性放到对象内存空间,默初始化。
第五步,对象属性显示初始化(privateint a =10;)
第六步,构造代码块初始化。({ } )
第七步,构造函数初始化。(它有针对性,属于被调用)
第八步,将内存地址给栈内存的P变量。
对象的调用过程(重点)
这理解调用对象之前,要理解一些概念:
首先 要知道堆 主要存放
对象(实例)
其次 要理解一个概念方法区
方法区要 1.存放 所有的类和对象的方法代码(静,非静)。方法参数等。
2.静态变量
最后 要知道栈区的执行过程
1.基本上一个线程,对应一个栈。栈区中只放变量。
2.在程序执行时,会在栈区先建立一个main栈,分配main中的变量。
3.当执行另一个方法时,就会在栈区在开辟一个FUNCTION栈,并分配方法中的变量。
备注 每个方法中,都有一个变量,叫this。谁调用该方法,this就指向谁。
现在执行
Person p = new Person();1
p.setName(“lee”); 2
执行1的时候首先创建对象,在创建对象时,对于方法的创建做如下分析:
第一步在类被加载时,静态变量,静态方法代码被加载到方法区。
第二步在对象被创建时,普通方法代码被加载到方法区。
执行2
第一步 为方法setName创建栈。
第二步将方法使用变量存放到方法栈空间。
第三步通过参数为方法变量赋值。
第四步到方法区中找到方法,并执行。
第五步 执行内容为为对象属性name赋值Lee
第六步方法执行完,结束栈,会main栈。
总结
栈中 专门存储变量。栈区相当以一个大栈,每个方法是一个小栈。
方法区 专门存储方法,静态变量。
堆区 专门存储对象
附图:
Person p = newPerson();
在执行到new时,
第一步,会通过Java虚拟机把Person.class从内存加载到内存。
第二步,执行类静态代码块。(Static{ })
第三步,开辟 对象堆内存空间,分配内存地址。(就是new,要知道new就是开辟对象内存空间)
第四步,将对象属性放到对象内存空间,默初始化。
第五步,对象属性显示初始化(privateint a =10;)
第六步,构造代码块初始化。({ } )
第七步,构造函数初始化。(它有针对性,属于被调用)
第八步,将内存地址给栈内存的P变量。
对象的调用过程(重点)
这理解调用对象之前,要理解一些概念:
首先 要知道堆 主要存放
对象(实例)
其次 要理解一个概念方法区
方法区要 1.存放 所有的类和对象的方法代码(静,非静)。方法参数等。
2.静态变量
最后 要知道栈区的执行过程
1.基本上一个线程,对应一个栈。栈区中只放变量。
2.在程序执行时,会在栈区先建立一个main栈,分配main中的变量。
3.当执行另一个方法时,就会在栈区在开辟一个FUNCTION栈,并分配方法中的变量。
备注 每个方法中,都有一个变量,叫this。谁调用该方法,this就指向谁。
现在执行
Person p = new Person();1
p.setName(“lee”); 2
执行1的时候首先创建对象,在创建对象时,对于方法的创建做如下分析:
第一步在类被加载时,静态变量,静态方法代码被加载到方法区。
第二步在对象被创建时,普通方法代码被加载到方法区。
执行2
第一步 为方法setName创建栈。
第二步将方法使用变量存放到方法栈空间。
第三步通过参数为方法变量赋值。
第四步到方法区中找到方法,并执行。
第五步 执行内容为为对象属性name赋值Lee
第六步方法执行完,结束栈,会main栈。
总结
栈中 专门存储变量。栈区相当以一个大栈,每个方法是一个小栈。
方法区 专门存储方法,静态变量。
堆区 专门存储对象
附图:
相关文章推荐
- Java基础——Static修饰符+静态相关+帮助文档制作+对象初始化_调用成员过程+单例设计
- Java基础知识之对象初始化过程
- 黑马程序员_Java基础_面向对象(Static的使用、对象初始化和调用成员过程、单例设计模式)
- JAVA基础知识再学习(3)继承概论 & 子类实例化过程
- JAVA基础知识再学习(5)理解多态&向上转型&向下转型
- java学习笔记_类建立对象初始化过程分析
- java学习13-面向对象(final和对象初始化过程)
- 黑马程序员学习log第四篇基础知识:JAVA的面向对象之多线程总结
- Java小知识 对象创建和初始化过程,堆:栈区别
- java基础---->对象的创建过程(初始化、析构、清理)
- 黑马程序员--面向对象第二部分-内部类、异常--java学习日记6(基础知识)
- java基础学习---java对象序列化基础知识
- 黑马程序员--面向对象第一部分--java学习日记4(基础知识)
- 黑马程序员学习log第六篇基础知识:JAVA的面向对象之IO总结
- 黑马程序员学习log第七篇基础知识:JAVA的面向对象之GUI总结
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- 【Java学习笔记】基础知识学习6【类的基础、方法,对象基础、包】
- 图解Java对象初始化过程以及方法调用
- java基础---->对象的创建过程(初始化、析构、清理)
- Java基础——类和对象的初始化过程