黑马程序员技术交流社区
标题:
一段小代码,来看看打印结果。参数传递问题
[打印本页]
作者:
m313786372
时间:
2014-8-13 09:12
标题:
一段小代码,来看看打印结果。参数传递问题
本帖最后由 m313786372 于 2014-8-13 09:23 编辑
public class TestOne {
public static void main(String[] args){
Perso p1 = new Perso(1);
Perso p2 = new Perso(2);
change(p1,p2);
System.out.println("p1="+p1.i+", p2="+p2.i);
}
static void change(Perso p1, Perso p2) {
p1 = new Perso(3);
p2 = new Perso(4);
}
}
class Perso {
int i;
Perso(int i) {
this.i = i;
}
}
复制代码
作者:
柳超
时间:
2014-8-13 09:17
。。选第二个
作者:
嘿~~
时间:
2014-8-13 09:47
public class TestOne {
public static void main(String[] args){
Perso p1 = new Perso(1);
Perso p2 = new Perso(2);
change(p1,p2);//①
System.out.println("p1="+p1.i+", p2="+p2.i);
}
static void change(Perso pa, Perso pb) {
pa = new Perso(3);
pb = new Perso(4);
//在这个地方增加打印语句
System.out.println("pa="+pa.i+", pb="+pb.i);
}
}
class Perso {
int i;
Perso(int i) {
this.i = i;
}
}
复制代码
①处的执行语句只存在方法区中,该方法执行完就结束了,不会改变p1和p2的指向,p1和p2指向堆内存,因此main方法中打印结果为p1=1,p2=2;change()方法中打印结果为pa=3,pb=4
作者:
そ花痕ゐ蝶梦
时间:
2014-8-13 10:17
Person是自定义类,属于引用类型,所以所第2项
作者:
陶圣虎
时间:
2014-8-13 10:53
回去试验下
作者:
想做开发
时间:
2014-8-13 12:11
那个pl.i是什么啊
作者:
王凯路路
时间:
2014-8-14 09:50
因为p1和p2是引用数据类型, 所以选第二个
作者:
nadax
时间:
2014-8-14 09:55
第一个,很明显的 change是引用的。 所以最终输出还是1,2
作者:
微微微笑
时间:
2014-8-14 10:15
change()本来就是无返回类型的方法,他不会返回p1,p2.所以下面打印的就是 Perso p1 = new Perso(1);
Perso p2 = new Perso(2);
作者:
THE_FUTURE
时间:
2014-8-14 10:29
change(p1,p2);//①
System.out.println("p1="+p1.i+", p2="+p2.i);
}
static void change(Perso pa, Perso pb) {
pa = new Perso(3);
pb = new Perso(4);
主看这一部分
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2