java中=(等号)的实现方式

在java中=(等号)的作用有两个:一个是取值,另一个是指向地址。
我在网上找了一下发现很少有介绍Java中=(等号)实现方式的文章,所以我就根据自己所学的知识写了一篇,要是有什么不对的地方,还希望大家能够指正出来。
首先我们来看一下内存区域的的类型:
1.寄存器:最快的存储区,由编译器根据需求进行分配,我们在程序中无法控制。
2.栈:一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,但对象本身不存放在栈中,而是存放在堆(new出来的对象)或者常量池中(对象可能在常量池里)(字符串常量对象存放在常量池中。)
3.堆:存放new 出来的对象。
4.静态域:存放静态成员(static)定义
5. 常量池:存放字符串常量和基本类型常量(public static final)。有时,在嵌入式系统中,常量本身会和其他部分分割离开(由于版权等其他原因),所以在这种情况下,可以选择将其放在ROM中
6. 非RAM存储:硬盘等永久存储空间
在这里我们定义一些变量

int  i1=1;
int  i2=2;

String a1=new String("china");
string a2="china";

其基本结构如图所是:
java中=(等号)的实现方式_第1张图片
如上图所示我们的基本数据类型在栈中存储,其次还包含着对象的引用变量(变量名)。
我们还需要特别声明一下String类的对象

String a1="china";//代码在执行后的常量池中创建一个值为abc的String对象;
String x="china";//执行时,因常量池中存在“china”,所以就不再创建新的String对象了;
                 创建一个引用,并指向常量池中的“china”;
String a2=new String ("china");

/*
*class 被加载时,“china”被作为常量读入,在常量池中创建一个共享值为“china”的String对象;然后调用到new String ("china");的时候,会在堆内存中创建这个对象。
*/

你可能感兴趣的:(javaweb学习)