英文:
Lazy Evaluation - Java
问题
以下是翻译的内容:
请问有人能详细解释一下Java中的惰性求值(我指的是真正详细的解释,因为我不太懂),并可能解释一下什么是急切求值吗?
当b = 0时,为什么会引发运行时错误?
if (a/b < 2 && b>0)//执行某些操作
而这段代码为什么不会产生错误?
if (b>0 && a/b < 2)//执行某些操作
这两者都应该是惰性求值的情况,但我不明白为什么一个能正常工作,另一个却不行。
英文:
Can somebody make an detailed explanation (and i mean really detailed, im dumb) of lazy evaluation in java and maybe also explain what is meant with eager evaluation?
Why is this bringing a runtime-error when b = 0?
if (a/b < 2 && b>0)//execute something
And why does this not give one?
if (b>0 && a/b < 2)//execute something
Both should be cases of lazy evaluation, but i just dont get why one is working and the other one isn't.
答案1
得分: 2
`a/b < 2`
在第一个示例中会得到除零错误。
在第二个示例中,`b>0` 会先被评估,但是为假,所以第二部分不会被评估,因为第一部分是假的,整个结果不能为真。
英文:
a/b < 2
gets a Division by zero error wich will be executed in the first example.
In the second example b>0
will be evaluated first , is false, so the second part will not be evaluated, because the first part is false and the complete result can't be true
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论