![](/img/trans.png)
[英]How to take values initiated in an if else statement to be used outside the statement?
[英]When are the values of the ForInit if a StatementExpressionList is used in a for statement discared?
一个简单的陈述是:
for(ForInit/*Optional*/; EXPRESSION/*Optional*/; ForUpdate/*Optional*/) {
}
ForInit:
StatmentExpressionList
LocalVariableDecleration
StatmentExpressionList
e.g
int i = 0; a = 10, z = 2;
从左到右计算序列中的每个表达式,如果任何表达式突然完成,则for语句突然完成,并且序列的评估从它完成的位置结束。 从左到右评估的任何表达式的值都被丢弃。
那么什么会导致表达突然完成? 在评估序列中每个表达式的哪个阶段,该表达式的值被丢弃,并且该表达式的值是否被丢弃,而for循环的其余部分是如何执行的?
第一个参数的示例
String a = null;
for (int i = a.length(); i < 5; i++)
对于第二个参数
String a = null;
for (int i = 1; i < a.length(); i++)
对于第三个(你能猜到吗?)
String a = null;
for (int i = 1; i < 5; a.append(" "));
当然,循环的其余部分不会被执行。
更新:我将对“废弃值”的引用(现在无法检查)解释为:
int i = 13;
try {
String a = null;
for (int i = 1; i < a.length(); i++)
...
} catch (Exception e) {
}
// Here i = 13
一个变体是:
int a = getA(); //returns 0
for (int i = 10 / a; i < 5; i++) { //Ooops
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.