print的执行顺序
该程序提供输出 –
A 1 2
它不应该给出输出 –
1 A 2
因为第一个ai应该打印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()); } }
在这个表达式中:
a.i+" "+a.getI()
首先评估对a.getI()
的调用,然后通过连接ai
和a.getI()
形成字符串。
JVM做的第一件事就是构造String。 所以从这里开始:
ai + " "
这是第一次完成的。 现在,我们有"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