关于方法重载(Overloading)的执行顺序问题??

dylanfire 2012-07-06 01:26:59
package com.swt;

public class Test1
{
public int add(int a, int b)
{
return a + b;
}

public int add(int a, int b, int c)
{
System.out.println(add(a, b));
return a + b + c;
}

public static void main(String[] args)
{
Test1 test = new Test1();

int result = test.add(1, 3);
int result2 = test.add(1, 4, 5);

System.out.println(result);
//System.out.println(result2);

}
}

程序执行的结果为 5 和 4。。。
关于这个方法的嵌套使用,我不是很了解,麻烦大虾门帮我解答下吧。
...全文
122 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dylanfire 2012-07-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
Java code


int result = test.add(1, 3); ---> result = 4;
int result2 = test.add(1, 4, 5);
--->System.out.println(add(a, b)); -->打印 5
return a + b + c; --> result = 10

System.……
[/Quote]

非常感谢,你这么一写我就完全明白了。
我一直考虑的问题是在System.out.println(result); 这个部分
原来在int result2 = test.add(1, 4, 5);
--->System.out.println(add(a, b)); -->打印 5
这个部分的时候已经执行过一次了。。
VanBaston 2012-07-06
  • 打赏
  • 举报
回复
楼主应该注意下你程序的入口,从你入口看你的程序是怎么执行的。
另外我觉得楼主是不是吧返回值和控制台打印语句混了呢,返回值是不会在你的控制台打印的,只有你用了打印语句才会去控制台打印的。这样你就可以根据程序走向判断出一个打印的东西及顺序了
sdojqy1122 2012-07-06
  • 打赏
  • 举报
回复

int result = test.add(1, 3); ---> result = 4;
int result2 = test.add(1, 4, 5);
--->System.out.println(add(a, b)); -->打印 5
return a + b + c; --> result = 10

System.out.println(result); -->打印 4
System.out.println(result2); -->打印 10
宏Lee 2012-07-06
  • 打赏
  • 举报
回复
就相当与调用2次add(int a, int b),第一次是int result = test.add(1, 3);最后的结果被你打印出来了,这时第二次是System.out.println(add(a, b));但是System.out.println(add(a, b));先使用了System.out.println语句所以是5,你的4就是System.out.println(result);这里打印的,如果你实在不懂就单步调试,最直观

62,614

社区成员

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

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