我正在读一本我想学习的Java书,我有一个问题.我无法理解变量类型char和变量之间的区别String.例如,存在之间的差int和short在所述存储器中的字节并且它们具有数字的区域.
但是char和之间有什么区别String?除了charuse(')和"String"(")之外.
PS:这是我的第一个"真正的"编程语言.(在学校,我为编程课学习了一门假语.)
我是一名学习Java的高中生(在BlueJ环境中).
上下文
我的书在讨论按值传递并通过引用机制传递时,使用了术语,堆栈和堆,并且还指出内存中的每个单元(也称为变量)都有一个名称,l值和r值,其中l代表对于'locator'或'location'而r代表'read'.该名称用于标识单位,l值存储单位的地址,r值存储单位的实际值.在原始数据类型的情况下,它存储实际值,而在引用数据类型的情况下,它存储引用或指向它的引用数据类型的地址.调用带参数的函数时,实际参数的r值将复制到实际参数的r值中.在原始数据类型的情况下,复制实际值,而在参考数据类型的情况下,复制参考地址,因为在前一种情况下实际值没有变化,而在后一种情况下实际值有变化.
我的问题
现在,我决定在互联网上了解更多相关信息.我发现互联网上的讨论与我的书不一致.l值和r值分别被认为是分配符号的左手侧和右手侧的值.我很迷惑.
l-value和r-value的实际含义是什么?我的书的意思是堆栈,堆(我想要一个简单易懂的答案)和内存单元.我在这个网站上发现了许多关于堆栈和堆的问题,但由于它们非常技术性而无法理解那里的答案,因此我没有太多的技术知识.此外,我想知道我可以在哪里了解更多
以下是我教科书中的页面:
我知道变量可以用两种方式分类: -
第一种方法是根据范围将它们分类为全局变量和局部变量.当变量可由类的实例的所有方法访问时,即在整个类中,则它被称为全局变量,并且当它仅在类的实例中的代码块内可访问时,它是已知的作为局部变量.
第二种方法是将它们分类为类/静态实例/非静态变量.类/静态变量是属于该类的变量,并且对于类的所有实例仅存在这些变量的一个副本,并且它们由它们共享.实例变量是属于类实例的变量,为每个实例创建单独的副本.
我的讲师说实例变量只能在函数外声明.为什么会这样?局部变量可以不是实例变量吗?