print的执行顺序

时间:2012-04-28 13:47:05

标签: java string printing

该程序提供输出 -

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());
     }
}

2 个答案:

答案 0 :(得分:12)

在这个表达式中:

a.i+" "+a.getI()

首先评估对a.getI()的调用,然后通过连接a.ia.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