java类实例化内存过程与面向对象特征

Posted 小小短腿儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java类实例化内存过程与面向对象特征相关的知识,希望对你有一定的参考价值。

在谈到类实例化的内存过程时先说说几个概念:

对象:内存上来说是分配在堆上面的一块内存区域
类:把一类具体事物相同特征,功能/行为抽象为属性与方法过程。
类是对象的模板,对象是类的具体表现。
构造函数:与类名同名的函数,用来实例化对象并初始化成员变量。
注意:构造器、构造函数不能称为构造方法。

类的结构:
静态块:当对应的class文件被首次加载到虚拟机时执行。
代码块
构造函数
静态属性与变量首先加载。其次时静态块,之后是代码块,最后是构造函数。

具体过程:
当一个类被创建(A a=new A();),并且这个类是首次被加载时,方法区会开辟出一块内存存放类的class文件并且将全部成员放入。之后会在堆中开辟一块内存,存储这个类并且将这个类的非静态的成员变量拷贝过来(静态成员不拷贝,所有实例共享),并持有对应的方法区的方法的句柄,这块内存有一个唯一内存地址,栈中的a对象指向的就是这个内存地址。
之后你为类的成员变量赋值时,堆中的变量的值会从默认值更改为设定值(方法区中变量无值)。
如果此时在实例化一个新的类(A a2=new A()

以上是关于java类实例化内存过程与面向对象特征的主要内容,如果未能解决你的问题,请参考以下文章

阿里云名师课堂Java面向对象开发3 ~ 6:类与对象

阿里云名师课堂Java面向对象开发3 ~ 6:类与对象

面向过程与面向对象对比

面向对象

java基础-类和对象详解

21面向对象