java 关于函数 关于按值传递参数
发布网友
发布时间:2023-11-13 02:08
我来回答
共3个回答
热心网友
时间:2024-12-04 12:53
恩,a 是一个局部变量引用的是t,将b赋值给a即a引用了b,对t没有影响。test_m1
中是直接调用 a.j 即是 t.j
热心网友
时间:2024-12-04 12:53
public void test_m(Test a)
{ Test b = new Test();//对象1:obj1
b.i = 1;
b.j = 2;
a = b;
}
public void test_m1(Test a )
{ a.i = 1;
a.j = 2;
}
public static void main(String argv[])
{ Test t= new Test();
t.i = 5;
t.j = 6;
System.out.println( "t.i = "+ t.i + " t.j= " + t.j); //5,6
t.test_m(t);
/*
解释 t.test_m(t):
{
此代码中a和t是两个不相干的变量,虽然两个变量都指向了同一个对象obj1
Test b = new Test();//obj2
b.i = 1;
b.j = 2;
a = b; //此处修改变量a,根本不会对变量t造成任何影响,所以下面输出t亦然是之前的值:5,6
}
*/
System.out.println( "t.i = "+ t.i + " t.j= " + t.j); //5,6
t.test_m1(t);
/*
解释t.test_m1(t):
{
此代码中a和t是两个不相干的变量,虽然两个变量都指向了同一个对象obj1。
但是a.和t.却是指向了同一个对象obj1,意思是a.i和t.i都是对象obj1的成员变量i
a.i = 1; //修改了对象obj1的成员i
a.j = 2; //修改了对象obj1的成员j
//因此此时obj1的值已经是1,2了,输出自然是1,2
}
*/
System.out.println( "t.i = "+ t.i + " t.j= " + t.j); //1,2
}
}
热心网友
时间:2024-12-04 12:53
m方法,
意思就是说,方法内的新的实例,在方法内有效。
m1则不同