如果我有一个Java方法:
public void foo (int a)
{
//do something
}然后我称之为这个方法:
foo (2/0) or foo (2/4)何时对2/0或2/4进行评估?它是否在进入函数的输入之前进行评估?还是在调用函数之前对其进行评估?(那么它是在函数内部还是在函数外部进行评估呢?)
此外,考虑:
if (true) then { A } else { B }我知道A会被评估的。但是,即使java是一种热切的语言,B也不会进行评估?
谢谢!
发布于 2014-10-31 06:18:16
foo (2/0)或foo (2/4)可能由编译器计算,并由常量结果代替(尽管前者应该在运行时导致ArithmeticException,所以我不确定编译器如何处理它。通常,在将foo(a/b)的结果传递给foo之前,将对foo进行评估。
在if语句中,如果条件为真,则不计算B是正确的。
发布于 2014-10-31 06:18:42
Question1:
类型已在编译时检查,表达式在运行时计算。表达式首先计算,然后调用方法。
例如:
foo (2/0)它编译得很好,在运行时计算表达式时,您就会得到异常。
Question2:
if (true)then{ A } else { B }B不进行评估。这就是条件表达式的工作方式。评估这两个表达式是没有意义的。
https://stackoverflow.com/questions/26668535
复制相似问题