码迷,mamicode.com
首页 > 其他好文 > 详细

对象及其内存管理 笔记

时间:2015-06-19 18:38:26      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

1:java程序变量分为局部变量和成员变量

局部变量:形参

方法内的局部变量

代码块内的局部变量

局部变量的作用时间很短暂,它们都被存储在栈内存中。

另外,jvm对类中的类变量(有static修饰的变量)在创建类的时候只分配一块内存空间。并且类变量随着类的初始化而初始化

而实例变量是随着对象的初始化而初始化。

而在初始化一个对象之前,先初始化该对象所属的类,因此,类变量的初始化时机总是在实例变量初始化之前。:

2:实例变量的初始化时机

每次创建java对象时都需要为实例变量分配内存空间,并对实例变量执行初始化

程序一般可在三个地方对实例变量执行初始化

A:定义实例变量时

B:非静态初始化快中

C:通过构造器

AB比C更早执行,AB执行顺序与他们在源代码中的排序顺序相同

经过编译器处理之后,三种对应的赋值语句都被合并到构造器中,在合并的过程中,定义变量语句转换得到赋值语句,初始化块里的语句转换得到赋值语句,总是位于构造器的所有语句之前,合并后,两种赋值语句的顺序保持为他们在源代码中的顺序

3:类变量的初始化时机

jvm对java的一个类只初始化一次,初始化类的时候为类变量分配一次内存空间。

一般在两个地方对类变量执行初始化

A:定义类变量时

B:静态初始化块中对类变量指定初始值

这两种方式的执行顺序与他们在源代码中的排列顺序相同。

 

对象及其内存管理 笔记

标签:

原文地址:http://www.cnblogs.com/gracyandjohn/p/4589382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!