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
练习的结果是:应该先输出
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
练习的结果是:应该先输出
结果是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));
}
}
所以先输出8,然后才是清空system.out.println输出缓冲里的内容,最后输出练习的结果是:8
基本功有待提高!!
先System.out.println(a+b);
因为 函数调用 了
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
我认为他首先用到的是这个方法: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()里面的参数都要完全转换成字符串才输出
这也是我刚刚看的,不知道是不是这样来理解的