l值和r值,堆栈和堆

MrA*_*rAP 5 java

我是一名学习Java的高中生(在BlueJ环境中).

上下文

我的书在讨论按值传递并通过引用机制传递时,使用了术语,堆栈和堆,并且还指出内存中的每个单元(也称为变量)都有一个名称,l值r值,其中l代表对于'locator'或'location'而r代表'read'.该名称用于标识单位,l值存储单位的地址,r值存储单位的实际值.在原始数据类型的情况下,它存储实际值,而在引用数据类型的情况下,它存储引用或指向它的引用数据类型的地址.调用带参数的函数时,实际参数的r值将复制到实际参数的r值中.在原始数据类型的情况下,复制实际值,而在参考数据类型的情况下,复制参考地址,因为在前一种情况下实际值没有变化,而在后一种情况下实际值有变化.

我的问题

现在,我决定在互联网上了解更多相关信息.我发现互联网上的讨论与我的书不一致.l值和r值分别被认为是分配符号的左手侧和右手侧的值.我很迷惑.

l-value和r-value的实际含义是什么?我的书的意思是堆栈,堆(我想要一个简单易懂的答案)和内存单元.我在这个网站上发现了许多关于堆栈和堆的问题,但由于它们非常技术性而无法理解那里的答案,因此我没有太多的技术知识.此外,我想知道我可以在哪里了解更多

以下是我教科书中的页面:

在此输入图像描述

在此输入图像描述

在此输入图像描述 在此输入图像描述

VHS*_*VHS 5

  1. 当条款l-valuer-value第一次创造时,l和r确实意味着左右.也就是说,l值最初表示赋值的左侧,而r值表示赋值的右侧.然而,稍后,他们被修改为分别表示"定位器"和"阅读",如您的书所示.原因是像C这样的编程语言有许多运算符(例如运算符的地址&),其中出现在运算符右侧的操作数仍然是l值.
  2. stack并且heap是记忆中的区域.Stack用于存储局部变量和函数调用.堆用于存储objects.当堆栈分配给每个线程时,堆由应用程序的所有线程共享.