-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)
您没有使用按引用或按值传递.在每种情况下都应该更改局部变量.
传递值仅适用于作为方法调用的参数传递的变量.
变量不会传递给嵌套范围,这些范围只有一个变量,更改它会改变原始范围.
复制变量的唯一时间是匿名内部类和lambdas,但是这些变量必须是最终的.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |