所以我遇到了一些我认为看起来很奇怪的代码.想看看你对此有何看法
public class Test {
public static void main(String[] args) {
HashMap m = new HashMap();
Test2 t2 = new Test2();
t2.fill(m);
}
}
public class Test2 {
public void fill(HashMap m) {
m.put(new Integer(0), new Integer(0));
}
}
Run Code Online (Sandbox Code Playgroud)
那么这段代码是好还是应该以另一种方式完成?
谢谢
这非常好,因为java中的对象是通过引用传递的.如果您尝试直接在方法中分配给m,那就错了:
m = new HashMap();
Run Code Online (Sandbox Code Playgroud)
但是您可以使用传递的引用来修改作为参数传递的对象,就像示例代码一样.
可以把它想象为将对象的位置传递给函数.您可以使用此位置信息来摆弄它.但由于该位置只是一个值,因此分配location(m)对m您调用该函数的位置没有影响.这就是为什么文章说这个论点是通过价值传递的.
| 归档时间: |
|
| 查看次数: |
26200 次 |
| 最近记录: |