java final 变量生命周期_Java内存区域和变量生命周期

在一台电脑上的内存存储区域分为6种:

1.寄存器: 寄存器是运行最快的,寄存器在系统中早就已经存在了,寄存器的数量是有限的,被严格要求

Java程序员不能显示的调用寄存器

2.栈:   栈中存储着基本数据类型的变量以及引用变量 栈中元素在超出其生命周期后会自动销毁

栈中元素一经创建,系统会为其分配内存空间,在其内存空间里存取的值是真值(真实存放的值)

栈中元素互不影响 每个在栈中的变量都有其自己对应的内存空间 里面存取着值

在栈中存取的必须是确定了其存储大小和其生命周期。栈中不允许存放没有确定的变量

3.堆:   堆中存储着的是对象类型。类对象可以是字符串类型,数组类型,类类型。堆中存取的对象是

运行时确定的,不必事先知道其数据大小与生命周期。在堆里有一个Java垃圾自动回收机制,

针对的对象是那些失去了引用的对象类型。系统在发现没有变量能去引用这块内存时,就会认为这是

一块废弃内存,在不久的不定时间内,会将其释放。

4.静态存储区域: 独立于栈和堆的存储区域,里面存储的数据类型是静态变量,可以随时通过类名来进行调用

静态变量一经初始化,就不会被初始化第2遍

5.常量存储区: 里面存放的final字段修饰的变量,一经创建就不能进行修改了,被存放在ROM中

6.磁盘:  我们平时使用的磁盘,用于数据存储的持久化,有点类似于手机设备上的sdcard

当我们写了一个String str = new String[]{" "};

相当于在栈内存里为引用变量分配了一个内存空间,该内存空间里存储的是在堆内存里分配的String类对象的地址

当我们调用该引用变量,相当于调用了该对象。

一个Class由2部分组成,数据域和方法

成员变量会自动被初始化,如果没有显示的去初始化

局部变量需要显示初始化,不然会出错

你可能感兴趣的:(java,final,变量生命周期)