首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >急切的Java评估:这个例子是如何工作的?

急切的Java评估:这个例子是如何工作的?
EN

Stack Overflow用户
提问于 2014-10-31 06:14:34
回答 2查看 437关注 0票数 0

如果我有一个Java方法:

代码语言:javascript
复制
public void foo (int a)
{
    //do something
}

然后我称之为这个方法:

代码语言:javascript
复制
foo (2/0)  or foo (2/4)

何时对2/02/4进行评估?它是否在进入函数的输入之前进行评估?还是在调用函数之前对其进行评估?(那么它是在函数内部还是在函数外部进行评估呢?)

此外,考虑:

代码语言:javascript
复制
if  (true) then { A } else { B }

我知道A会被评估的。但是,即使java是一种热切的语言,B也不会进行评估?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-10-31 06:18:16

foo (2/0)foo (2/4)可能由编译器计算,并由常量结果代替(尽管前者应该在运行时导致ArithmeticException,所以我不确定编译器如何处理它。通常,在将foo(a/b)的结果传递给foo之前,将对foo进行评估。

if语句中,如果条件为真,则不计算B是正确的。

票数 1
EN

Stack Overflow用户

发布于 2014-10-31 06:18:42

Question1:

类型已在编译时检查,表达式在运行时计算。表达式首先计算,然后调用方法。

例如:

代码语言:javascript
复制
foo (2/0)

它编译得很好,在运行时计算表达式时,您就会得到异常。

Question2:

代码语言:javascript
复制
if (true)then{ A } else { B }

B不进行评估。这就是条件表达式的工作方式。评估这两个表达式是没有意义的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26668535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档