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()的调用,然后通过连接aia.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