请解释程序的执行结果!谢谢!

lulu0126 2008-04-15 03:09:42
class Te
{
public static int m=1;

public static void main(String[] args)
{
new Te().execute();
}

private void execute() {
//AAA aAAA=new AAA();

AAA.aaa(m);
System.out.println(m);

}
}



class AAA
{
static int aaa(int x){
x=++x;
System.out.println(x);
return x;
}
}

结果为什么是:
2
1

为什么不是:
2
2
呢?
如果想变成:
2
2
该怎么改?
谢谢!


...全文
87 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
evoloyeu 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Ant_Yan 的回复:]
执行顺序是这样的:
编译期间已经初始化m值为1,
调用Te默认构造函数之后进入execute方法,
先调用AAA.aaa(m);
对x先加加成2之后打印输出2,
回到execute方法中,
打印m的值为1

因为m传递到aaa方法中的传递过程是值传递,修改x并不会改变m的值

基础啊!
[/Quote]同意
whmjxa 2008-04-15
  • 打赏
  • 举报
回复
当然是
2
1了
如果你想要
2
2
那private void execute() {
//AAA aAAA=new AAA();

m = AAA.aaa(m);
System.out.println(m);

} 应该改写成
private void execute() {
//AAA aAAA=new AAA();

System.out.println(AAA.aaa(m));

}
anqini 2008-04-15
  • 打赏
  • 举报
回复
回去看下值传递和引用传递!
我就不抢这5分了。。。
lulu0126 2008-04-15
  • 打赏
  • 举报
回复
谢谢各位,尤其感谢Ant_Yan!
小弟初步领会了!
现在去网上查关于参数传递问题!
i_saw_you 2008-04-15
  • 打赏
  • 举报
回复
1楼和4楼说出了本质问题
njaufire 2008-04-15
  • 打赏
  • 举报
回复
先把++i和i++搞清楚,自然明白
q1531 2008-04-15
  • 打赏
  • 举报
回复
class Te
{
public static int m=1;

public static void main(String[] args)
{
new Te().execute();
}

private void execute() {
//AAA aAAA=new AAA();

AAA.aaa(new Te());
System.out.println(m);

}
}


class AAA
{
static int aaa(Te n ){
n.m=++n.m;
System.out.println(n.m);
return n.m;
}
}
q1531 2008-04-15
  • 打赏
  • 举报
回复
java对基本数据类型是值传递。
Ant 2008-04-15
  • 打赏
  • 举报
回复
执行顺序是这样的:
编译期间已经初始化m值为1,
调用Te默认构造函数之后进入execute方法,
先调用AAA.aaa(m);
对x先加加成2之后打印输出2,
回到execute方法中,
打印m的值为1

因为m传递到aaa方法中的传递过程是值传递,修改x并不会改变m的值

基础啊!
lulu0126 2008-04-15
  • 打赏
  • 举报
回复
谢谢2楼的方法,我还是不太理解,期待朋友的解释,谢谢!
aipb2008 2008-04-15
  • 打赏
  • 举报
回复
private void execute() {
//AAA aAAA=new AAA();

m = AAA.aaa(m);
System.out.println(m);

}
nihuajie05 2008-04-15
  • 打赏
  • 举报
回复
JAVA的值传递机制...
传进去的直接就是x的值1,而不是x.
也就是说在方法中改变的是1,而不是x

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧