class bar{
int barnum = 28;
}
class foo
{
bar mybar = new bar();
void change(bar mybar)
{
mybar.barnum = 99;
System.out,println(barnum);
mybar = new bar();
mybar.barnum = 420;
System.out,println(barnum);
}
public static void main(String s[]){
foo f = new foo();
System.out,println(f.mybar.barnum);
change(f.mybar);
System.out,println(f.mybar.barnum);
}
}
我是个新手 希望高手能解释清楚一点 谢谢
int barnum = 28;
}
class foo
{
bar mybar = new bar();
void change(bar mybar)
{
mybar.barnum = 99;
System.out,println(barnum);
mybar = new bar();
mybar.barnum = 420;
System.out,println(barnum);
}
public static void main(String s[]){
foo f = new foo();
System.out,println(f.mybar.barnum);
change(f.mybar);
System.out,println(f.mybar.barnum);
}
}
我是个新手 希望高手能解释清楚一点 谢谢
第一个打印f.mybar.barnum的值
change方法中,第一次修改了f.mybar.barnum的值
第二次打印99
第二次又重新创建了一个bar,但是是局部变量,出了这个方法就无效了,所以
第二次打印420
第三次打印时用的是f.mybar.barnum第一次修改的值,99.
int barnum = 28;
}
class foo
{
bar mybar = new bar();
static void change(bar mybar)
{
mybar.barnum = 99;
System.out.println(mybar.barnum);
mybar = new bar();
mybar.barnum = 420;
System.out.println(mybar.barnum);
}
public static void main(String s[]){
foo f = new foo();//生成foo对象,foo对象初始化bar对象,barnum=28
System.out.println(f.mybar.barnum); //输出28
change(f.mybar);//调用了chang(),注意,这里传递的是对mybar的引用,这个引用指向f.mybar
// mybar.barnum = 99;//设置barnum为99
//System.out.println(barnum);输出99
//mybar = new bar();//mybar指向一个新的bar对象,这个bar不是f.mybar, 而 不 是一个新的bar'对象,而barnum初始化为28,这个barnum是新的bar'的成员对象,而不是foo.mybar.barnum
//mybar.barnum = 420;//bar'.barnum设为420
// System.out.println(barnum);//输出420
System.out.println(f.mybar.barnum); //输出f.mubar.barnum,这个barnum与赋值为420的barnum不是同一个对象的barnum 输出99
}
}
输出:[code=Java]
28
99
420
99[/code]
class bar{
int barnum = 28;
}
class foo
{
bar mybar = new bar();
static void change(bar mybar)
{
mybar.barnum = 99;
System.out.println(mybar.barnum);
mybar = new bar();
mybar.barnum = 420;
System.out.println(mybar.barnum);
}
public static void main(String s[]){
foo f = new foo();//生成foo对象,foo对象初始化bar对象,barnum=28
System.out.println(f.mybar.barnum); //输出28
change(f.mybar);//调用了chang(),注意,这里传递的是对mybar的引用,这个引用指向f.mybar
// mybar.barnum = 99;//设置f.mybar.barnum为99
//System.out.println(barnum);输出99
//mybar = new bar();//mybar指向一个新的bar对象,这个bar不是f.mybar,
而 是一个新的bar'对象,而barnum初始化为28,
这个barnum是新的bar'的成员对象,而不是
foo.mybar.barnum
//mybar.barnum = 420;//bar'.barnum设为420
// System.out.println(barnum);//输出420
System.out.println(f.mybar.barnum); //输出f.mubar.barnum,这个barnum与赋值为420的barnum不是同一个对象的barnum 输出99
}
}
输出:28
99
420
99