一道JAVA题 谁帮我解答一下啊~ 值参与引用参数

[复制链接]
查看11 | 回复1 | 2009-10-9 20:04:43 | 显示全部楼层 |阅读模式
public class A{public int iv;public String sv;public A(){}}public class Test{public static void method1(int iv,String sv,A a){iv+=2;;sv+="change!";a.iv+=2;a.sv+="change!";}public static void main(String[] args){A a=new A();int b=1;String c="123";a.iv=1;a.sv="123"; System.out.format("b=%s c=%s a.iv=%s a.sv=%s \n",b,c,a.iv,a.sv); method1(b,c,a); System.out.format("b=%s c=%s a.iv=%s a.sv=%s \n",b,c,a.iv,a.sv);}}其中 INT STRING都是值传递,而对象a是引用传递 运行看一下结果就知道了因为a 是引用传递的,所以它的值会改变,而值传递的这两个就不会变
回复

使用道具 举报

千问 | 2009-10-9 20:04:43 | 显示全部楼层
public class Text {public static void main(String args[]) {Text1 t1 = new Text1("调用方法之前的对象的x变量");String i = "调用zhi方法之前的i的变量值";Text t = new Text();t.zhi(i);
t.yinyong(t1);System.out.println(t1.x);System.out.println(i);}public void f(Text1 t1) {t1 = new Text1("调用f方法之后的x得的值");//虽然是引用传过来的,但是其本质还是值传递 ,和引用传递对比一下 }public void yinyong(Text1 t1) {t1.x = "调用zhi方法之后的x变量的值";//引用传递 }public void zhi(String i) {i = "调用zhi方法之后的x变量值";//值传递 }}class Text1 {String x;public Text1(String x) {this.x = x; } }另一个public class Text {public static void main(String args[]) {Text1 t1 = new Text1("调用方法之前的对象的x变量");String i = "调用zhi方法之前的i的变量值";Text t = new Text();t.zhi(i);t.f(t1);
System.out.println(t1.x);System.out.println(i);}public void f(Text1 t1) {t1 = new Text1("调用f方法之后的x得的值");//虽然是引用传过来的,但是其本质还是值传递 ,和引用传递对比一下 }public void yinyong(Text1 t1) {t1.x = "调用zhi方法之后的x变量的值";//引用传递 }public void zhi(String i) {i = "调用zhi方法之后的x变量值";//值传递 }}class Text1 {String x;public Text1(String x) {this.x = x; } }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行