日期:2014-05-20  浏览次数:20596 次

关于方法重载(Overloading)的执行顺序问题??
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。。。
关于这个方法的嵌套使用,我不是很了解,麻烦大虾门帮我解答下吧。

------解决方案--------------------
就相当与调用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);这里打印的,如果你实在不懂就单步调试,最直观
------解决方案--------------------
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.out.println(result); -->打印 4
System.out.println(result2); -->打印 10

------解决方案--------------------
楼主应该注意下你程序的入口,从你入口看你的程序是怎么执行的。
另外我觉得楼主是不是吧返回值和控制台打印语句混了呢,返回值是不会在你的控制台打印的,只有你用了打印语句才会去控制台打印的。这样你就可以根据程序走向判断出一个打印的东西及顺序了