public class ReturnTest{
public static int returnM(int a,int b){
System.out.println(a+b);
return a+b;
}
public static void main(String[] args){
int a=3;
int b=5;
System.out.println("练习的结果是:"+returnM(a,b));
}
}
为什么是这样输出结果
8
练习的结果是:8
练习的结果是:应该先输出

解决方案 »

  1.   

    先调用public static int returnM(int a,int b)方法,执行到这布:System.out.println(a+b); a+b 值是8然后returen a+b的值8,就是函数值最后执行System.out.println("练习的结果是:"+returnM(a,b));  输出练习的结果是:8
      

  2.   


    结果是8,没有错呀,关键看你怎么理解!
    我给你改了一下,你再看看就懂了,          public class ReturnTest{ 
    public static int returnM(int a,int b){ 
    System.out.println(a+b); 
    return a+b; 

    public static void main(String[] args){ 
    int a=3; 
    int b=5; 
    returnM test=new returnM();
    System.out.println("练习的结果是:"+test.returnM(a,b)); 

      

  3.   

    调试一下,看到应该是这样,"练习的结果是:"+returnM(a,b)),System.out.println并不是立即输出,而是放在一个缓冲区里,这样在调用是,先把"练习的结果是:"+returnM(a,b)),这条语句放在了缓冲了,在放在缓冲里之前,returnM(a,b))已经执行了,
    所以先输出8,然后才是清空system.out.println输出缓冲里的内容,最后输出练习的结果是:8 
      

  4.   

    先调用public static int returnM(int a,int b)方法, 执行到这布:System.out.println(a+b); a+b 值是8 然后returen a+b的值8,就是函数值 最后执行System.out.println("练习的结果是:"+returnM(a,b));  输出练习的结果是:8
      

  5.   

    先调用public static int returnM(int a,int b)方法, 执行到这布:System.out.println(a+b); a+b 值是8 然后returen a+b的值8,就是函数值 最后执行System.out.println("练习的结果是:"+returnM(a,b));  输出练习的结果是:8
    基本功有待提高!!
      

  6.   

    顺序问题
    先System.out.println(a+b);
    因为 函数调用 了
      

  7.   

    public class ReturnTest{ 
    public static int returnM(int a,int b){ 
    System.out.println(a+b); 
    return (++a)+(++b); //这改下看看

    public static void main(String[] args){ 
    int a=3; 
    int b=5; 
    System.out.println("练习的结果是:"+returnM(a,b)); 

    }
    8
    练习的结果是:10
      

  8.   

    对于这样的问题,用debug工具来说明,再好不过啦,用next step的操作,可以搞定的呀!可以试一下啦!
      

  9.   

    简单的说就是,println()方法要等待其括号中的argument("练习的结果是:"+returnM(a,b))做完evaluation,得到一个东西以后才把他的值拷贝给println()方法的参数,然后执行println()方法,因此returnM()方法是先执行的 
      

  10.   

    我看了println()函数,最终是转换成print()函数,只是后面加了newLine()
    我认为他首先用到的是这个方法:public void print(Object obj) {
    write(String.valueOf(obj));
        }然后是这个private void write(String s) {
    try {
        synchronized (this) {
    ensureOpen();
    textOut.write(s);
    textOut.flushBuffer();
    charOut.flushBuffer();
    if (autoFlush && (s.indexOf('\n') >= 0))
        out.flush();
        }
    }
    catch (InterruptedIOException x) {
        Thread.currentThread().interrupt();
    }
    catch (IOException x) {
        trouble = true;
    }
        }但是上面这玩意没有弄懂
    而在执行public void print(Object obj)方法的时候已经执行了System.out.println(a+b)语句
    个人觉得print()里面的参数都要完全转换成字符串才输出
    这也是我刚刚看的,不知道是不是这样来理解的