Java中基本数据类型赋值机制与数组的赋值机制
Java中基本数据类型赋值机制与数组的赋值机制
基本数据类型赋值
首先运行一下以下的代码,注意查看结果,可以发现n2的值并没有随着n1值给便而改变。
这种数据赋值方式为值拷贝!!!!,仅仅将数据的值拷贝走,并没有管理他的地址。
1 | public class Test { |
jvm内存结构包括栈,堆与方法区。下面来说一下原理,定义n1=10,其结果直接存储在jvm虚拟机的栈中,同样n2=n1,直接找到n1的对应的值,将10传值给n2。所以n1的改变不影响n2。
数组类型的赋值
运行以下代码,数据的赋值类型为地址拷贝(引用赋值),即拷贝的是对应对象的地址。观察运行结果可以发现其两个数组的地址一模一样。
1 | import java.util.Arrays; |
在数组赋值时候,栈中存放的为响应的地址,这也是为什么直接输出n1的时候是一个地址值,而n2数组取值时候接受到n1对应的地址,所以当n1改变时候,n2也会随着改变,这就是引用赋值。
总结
看到这里学过c语言的小伙伴可以发现,这个其实和c的指针很像,是因为Java把c语言中的指针封装了,在Java中没有指针这一概念的。