Java中的原语与对象
我正在为考试做一些练习,需要一些关于java原语和java对象的问题的帮助(我做得正确吗?如果没有,为什么?)。这些都是正确的或错误的Java中的原语与对象,java,object,pass-by-reference,primitive,pass-by-value,Java,Object,Pass By Reference,Primitive,Pass By Value,我正在为考试做一些练习,需要一些关于java原语和java对象的问题的帮助(我做得正确吗?如果没有,为什么?)。这些都是正确的或错误的 以下变量声明是对动态分配并存储在堆中的对象的引用:int x=7 错误,因为它是传递值,因为int是原语 以下变量声明是对动态分配并存储在堆中的对象的引用:整数x=7 True,因为它正在引用堆上存储的对象 如果将(1)中声明的变量“x”传递给方法,则该变量将通过引用传递,其值可能会被调用的函数修改 错误,因为Java只按值传递 如果将(2)中声明的变量“x”传
好吧,这可能有点粗略。如果处理对象,则不会创建对象的副本并将副本传递给方法。您正在创建对象引用的副本,并通过值传递该副本。实际上,有一个原因2是错误的,但这可能不是设置它的人所期望的原因
Integer x = 7;
将变成:
Integer x = Integer.valueOf(7);
这将对-128到+127(含)范围内的所有整数重新使用缓存值。(也可以将其用于其他值)
因此,对于常见整数值,您将获得对JVM实现相关缓存存储中存在的对象的引用。False,因为Integer是一个对象。因此,您将只在函数中传递对对象地址的引用。它是Java中的标准 (4)为假有两个原因:
- “在堆中创建该变量的副本”为false。堆上只有对象。函数中的局部变量不在堆上。该变量的值被简单地传递,即复制到被调用函数的堆栈帧中
- “函数的对象引用指向内存中的不同位置。”为false。函数的引用将指向内存中的同一位置。这就是传递点——函数中变量的值与传递的值相同。引用的值是它指向的位置