onl*_*man 5 java methods arguments
这个程序输出6作为输出,但当我取消注释第9行时,输出为5.为什么?我认为ba不应该改变,应该保持在主要的5.
1 class C1{
2 int a=5;
3 public static void main(String args[]){
4 C1 b=new C1();
5 m1(b);
6 System.out.println(b.a);
7 }
8 static void m1(C1 c){
9 //c=new C1();
10 c.a=6;
11 }
12 }
Run Code Online (Sandbox Code Playgroud)
mpr*_*hat 10
当您在Java中传递对象时,它们作为引用传递方式,意味着b在main方法中引用的对象和方法c中的参数m1,它们都指向同一个对象,因此当您将值更改为6时,它会反映在main方法中.
现在,当你试着做c = new C1();,那么你做出c指向一个不同的对象,但b仍然指向到您在创建对象main的方法,因此更新值6不是主要方法可见,你会得到5.
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |