我正在尝试为考试做一些练习,需要一些帮助(我是否正确地做了?如果没有,为什么?)关于java原语和java对象的这些问题。这些都是 true 或 false 。
以下变量声明是对动态分配并存储在堆中的对象的引用:int x = 7;
错误,因为它是按值传递的,因为int是原始的
以下变量声明是对动态分配并存储在堆中的对象的引用:Integer x = 7;
True ,因为它引用存储在堆上的对象
如果将(1)中声明的变量'x'传递给方法,则该变量通过引用传递,并且其值可以被被调用的函数修改。
错误,因为Java只传递了值
如果将(2)中声明的变量'x'传递给方法,则复制该方法 变量是在堆中创建的,并传递给函数,以便函数的对象 引用指向内存中的不同位置。
True ,因为变量位于堆栈中,但它指向堆中的某个位置
谢谢大家的帮助。
答案 0 :(得分:1)
4)如果将(2)中声明的变量'x'传递给方法,则复制 该变量是在堆中创建的,并传递给函数, 这样函数的对象引用指向一个不同的 放在记忆中。
好的,这可能有点粗略。如果处理对象,则不会创建对象的副本并将副本传递给方法。您正在为对象创建参考的副本,并按值传递它。
答案 1 :(得分:0)
实际上有2个错误的原因 - 但它可能不是设置它的人所期望的原因。
Integer x = 7;
将变成:
Integer x = Integer.valueOf(7);
将重新使用-128到+127范围内所有整数的缓存值。 (它也可以将它们重用于其他值)。
因此,您将获得对JVM实现相关缓存存储中存在的对象的引用,以获取常见的Integer值。
答案 2 :(得分:0)
False,因为Integer是一个对象。因此,您将仅传递对函数中对象地址的引用。它是Java的标准。
答案 3 :(得分:0)
(4)是错误的,原因有两个: