据我所知,Java 总是通过“按值传递”来调用方法。 但我看到了Android的NotificationManager.notify(String, int, Notification)的引用:
Returns
the id of the notification that is associated with the string
identifier that can be used to cancel the notification
请引用引用资料: http://developer.android.com/reference/android/app/NotificationManager.html
这怎么会发生? 难道是我理解错了什么?
BR, 亨利
最佳答案
关于本声明:
“Java 按值传递基元, 但通过引用传递对象。”
这不准确。 Java 按值传递所有内容,但根本不传递对象。
- 对于基元:副本被传输到方法(不要忘记 String 不是基元) - 你说的是正确的
- 对于引用变量:它们也按值传输:引用变量的副本被传输到方法。所以对象本身永远不会被传输。可以在方法中更改对象(通过调用其某些方法),从方法返回后您将看到修改(例如,更改 Person 对象的“name”成员),但如果更改引用,则此更改在方法外部不可见:
更改引用是通过“new”运算符或通过像 param = some_other_reference 这样的赋值来完成的(其中 some_other_referece 指向堆上的某个其他对象)。更改引用不会影响“原始”引用,只会影响“复制引用”(方法内部使用的引用)。
关于java - 可以从Java中的参数返回值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4162742/