Java基础 - 内部分配

-4 java

有人可以向我解释这个,因为我对Java相对较新并且来自Objective-c背景(不同的是,通过引用传递而不是通过值传递(引用)).

鉴于Java是按值传递的,我不应期望能够在不同的范围内重新分配变量并保持这些更改,对吧?这就是为什么objectValue为null.String和int是原语,这就是它们工作的原因.但是,为什么Integer有效呢?

Object objectValue = null;
int intValue;
String stringValue = null;
Integer integerValue = null;

if (true) {
    objectValue = new Aircraft();
    intValue = 1;
    stringValue = "is one";
    integerValue = new Integer(1);
}

// objectValue == null
// intValue == 1
// stringValue == "is one"
// integerValue == 1
Run Code Online (Sandbox Code Playgroud)

Pet*_*rey 8

您没有使用按引用或按值传递.在每种情况下都应该更改局部变量.

传递值仅适用于作为方法调用的参数传递的变量.

变量不会传递给嵌套范围,这些范围只有一个变量,更改它会改变原始范围.

复制变量的唯一时间是匿名内部类和lambdas,但是这些变量必须是最终的.

  • **多喝咖啡** (2认同)