![]() |
1
12
是的,保留对属性的更改。Java是100%传递值,但是,当传递一个对象时,传递的“值”实际上是指向对象的指针。因此,当您更改方法中的对象时,您将更改传入的实际对象。 也就是说,如果您有以下方法,那么调用方法将看到更改:
但如果您执行以下操作,则调用方法将 不 查看更改。
在第二个示例中,调用方将
不
查看任何更改,不会看到新创建的
|
![]() |
2
2
对象被传递[
这意味着当一个基元从调用者传递到方法时,它会被复制,而对于一个对象,[ 价值观 ]引用已传递。 这反过来意味着,当一个对象被一个方法改变时,调用方会看到这些改变,因为它引用了同一个对象。 相反,当一个方法改变一个基元时,调用方在方法处理副本时看不到这些改变。 [编辑原因] 如果Java通过了引用,那么您可以这样做:
其中foo定义为:
因为Java按值传递引用
|
![]() |
Tor · 使用Box<None>值初始化struct 3 年前 |
![]() |
Judy · 在两个JavaScript函数中更新全局变量 3 年前 |
![]() |
ask_me · Python中关于局部和全局范围的概念性问题 3 年前 |
![]() |
Astha Gupta · 闭包中的词汇作用域是如何发生的?[重复] 3 年前 |
![]() |
Empha · 从成员函数对对象所做的更改不会持续。范围/参考问题? 7 年前 |
![]() |
pag-r · Golang开关变量范围 7 年前 |
![]() |
yurnero · MATLAB:“加载”一个快速访问功能 7 年前 |