mhs*_*edi 1 java pass-by-reference
我熟悉java中的引用概念,但看到这段代码后我很困惑
public class App
{
public static void main( String[] args )
{
Test t1 = new Test(1);
Test t2 = new Test(8);
App.doSomething(t1, t2);
System.out.print(t1.a);
System.out.print(t2.a);
}
public static void doSomething(Test t1, Test t2){
System.out.print(t1.a++);
System.out.print(t2.a++);
t1 = new Test(999);
t2 = new Test(888);
}
}
Run Code Online (Sandbox Code Playgroud)
打印:
1
8
2
9
Run Code Online (Sandbox Code Playgroud)
为什么主函数中"t1.a"和"t1.b"的值不变为888和999?
Java没有引用调用.所有参数都按值传递 - 但在参数为对象的情况下,传递的"值"是对象的引用.
因此,如果在方法中使用对该对象的本地引用来修改对象,则它将修改同一对象.但是,如果为该局部变量赋值,则它不再具有对原始对象的引用,并且后续更改不会影响原始对象.
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |