关于java赋值

发布网友 发布时间:2022-04-20 10:11

我来回答

3个回答

热心网友 时间:2023-06-28 08:01

这个得从Java的空间分配说起,Java将内存空间分为堆和栈。
比如一个语句:
String str1;
此时只会在堆开一个空间,存的是null,将来用来存对象的地址;
str1="Hello World";(等价于str1=new String("Hello World");)
此时会在栈生成对象"Hello World",并将该对象的地址赋给变量str1。
String str2;
str2=str1;
这句话只是把str1的值(为"Hello World"对象的地址)赋给变量str2,即str2也指向了对象"Hello World"。
你在程序里一开始创建了两个对象,这里记成“11”、“22”,n1和n2分别存储他们的地址。
n1=n2,简单赋值操作,相当于把n2存的地址传给了n1,即n1和n2同时指向了“22”,此时对象“11”已经没有任何引用指向它,你在程序中是无法使用它的,它将会被JVM回收(这是Java的垃圾回收机制)。
n1.i=33; 这是对对象“22”进行操作。
其实这里的n1和n2可以理解为C语言里的指针,只是它不允许对内存地址进行加减运算。
还不懂的话可以看这张图片
http://ys-i.ys168.com/?关于java赋值.JPG_73dtl0bsht0bs2bsp0cm0clnool2bp0bs0c0bt0c1bu0u12f03z

热心网友 时间:2023-06-28 08:01

java是完全基于对象的语言,对象即引用!
n1=n2; n1就是对n2的引用,
n1.i=33 其实是修改n2的i,因为n1就是对n2的引用

引用的意思就是对n1的任何操作实际上是对n2的操作

热心网友 时间:2023-06-28 08:02

简单解释:
n1 = 11 ;//是不是数值11就赋值给了n1.
n2 = 22 ;//是不是数值22就赋值给了n2.以上相同是不是都是在“=”号右边的值都付给了“=”号左边的。
那 n1 = n2 呢?那就是n2 的值赋给了n1了。你要问了。那n1的值11呢?当然是被n2的值覆盖了。此时n1的值就变成n2的值了,也就是22。
这里其实有分配内存的关系,如果光这么说,不好理解。所以就简单解释一下,希望你能理解。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com