为什么这个程序:
import java.io.*;
public class testpage
{
public static void main(String [] args)
{
pri();
}
public static int p2 (int x)
{
System.out.print("p");
return x * x + 1;
}
public static void pri ( )
{
int y = 3;
System.out.print( p2(y) + "-" + p2(y));
}
}
Run Code Online (Sandbox Code Playgroud)
输出这个:
pp10-10
Run Code Online (Sandbox Code Playgroud)
具体来说,为什么-当方法调用相同时,每一侧的输出会有所不同?
rge*_*man 10
Java将+在执行操作之前评估二元运算符的操作数.这意味着p2(y)在连接发生之前将被调用两次.2方法p在连接之前调用每个打印,然后System.out.print打印10-10.
在JLS,第15.17.2,占地面积这样的:
Java编程语言保证在执行操作本身的任何部分之前,操作符的每个操作数(条件运算符&&,||和?:)除外似乎都要完全评估.
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |