该程序提供输出 -
A 1 2
不应该给出输出 -
1 A 2
因为首先a.i应该打印1然后执行a.getI()并且应该打印A 2
public class A1{
int i=1;
public int getI(){
System.out.print("A ");
return i+1;
}
public static void main(String args[]){
A1 a=new A1();
System.out.print(a.i+" "+a.getI());
}
}
答案 0 :(得分:12)
在这个表达式中:
a.i+" "+a.getI()
首先评估对a.getI()
的调用,然后通过连接a.i
加a.getI()
来形成字符串
答案 1 :(得分:8)
JVM做的第一件事就是构造String。所以它从这里开始:
a.i + " "
这是第一次完成的。现在,我们有"1 "
。接下来它处理这个:
"1 " + a.getI()
要缝合这两个部分,将执行该方法以了解要缝合在一起的内容。 所以,现在进入metod:
System.out.print("A ");
return i+1;
执行第一个print语句。 "A "
将打印到控制台( 1 )。现在该方法返回i + 1
,即2
。
这意味着我们有:
"1 " + "2"
是"1 2"
。此时字符串构建已完成,因此将传递给println()
。
现在"1 2"
已打印到控制台。( 2 )
如您所见,首先执行( 1 ),然后执行( 2 )。因此,在控制台中,这会导致:
A 1 2