![](/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.