![](/img/trans.png)
[英]How to improve spring boot and mysql single insert statement performance which is called many times
[英]How many times could a variable be incremented in a single statement?
我目前正在閱讀Barry Burd的Java for Dummies,並進行了此小練習。
練習是關於后期和后期遞增。 在問題中(請參閱代碼),我能夠找出除最后一行之外的所有代碼行的答案(無需編譯器的幫助)。 到目前為止,根據我對后期/預增量的了解,這沒有任何意義。
請告知結果如何或為何不符合我的預期。
我嘗試初始化並聲明值為“ 20”的新變量(int),然后執行“ i = i ++ + i ++”,但仍然收到相同的結果(41)。
還嘗試執行out.println(i)兩次,但仍然打印41。
import static java.lang.System.out;
public class Main
{
public static void main(String[] args) {
int i = 10;
out.println(i++); //10(post11)
out.println(--i); //10(pre11-1)
--i; //9(pre10-1)
i--; //9(post8)
out.println(i); //8
out.println(++i); //9(pre8+1)
out.println(i--); //9(post8)
out.println(i); //8
i++; //8(post9)
i = i++ + ++i; //i = 9(post10) + 10(pre9+1) = 19(post20)
out.println(i); //20
i = i++ + i++; //i = 20(post21) + 20(post21) = 40(post42)
out.println(i); //41 (result copied from compiler)
}
}
我希望最后一行打印42而不是41,因為“ 20”被添加了兩次,並且也被增加了兩次。
i = i++ + i++
計算結果為(如果i為20):
i = 20 + 21
由於第一個i++
是后運算符,因此不會對其產生影響。 但是,它確實會影響i
的下一次使用。
我將按步驟進行分解:
i =
i++
+ i++;
, i == 20
i =
20
+ i++
, i == 21
i = 20 +
i++
, i == 21
i = 20 +
21
, i == 22
i =
41
當您使用賦值運算符(=)時,它是在后遞增運算符之后完成的。 因此,您得到以下信息:
int i = 10;
i = i++;
System.out.println(i); // print 10
當您在同一行中兩次使用后遞增時,該行完成后不會增加,而是在指令完成后(指令為i ++)增加。 因此,在執行i = i ++ + i ++時; 您實際上是在這樣做:
i = i++ + i++; // i=20 Original code
i = 20 + i++; // i=21 The first i++ return 20 then increment i to 21
i = 20 + 21; // i=22 The second i++ return 21 then increment i to 22
i = 41; // i=22 The addition is computed
41; // i=41 and assigne to i
所有這些都與運算符優先級有關。
您可以通過編寫自己的打印例程來查看正在發生的情況。
int i = 9;
i = print(i++) + print(++i); // i = 9(post10) + 10(pre9+1) = 19(post20)
System.out.println("\n" + i); // 20
i = print(i++) + print(i++); // i = 20(post21) + 20(post21) = 40(post42)
System.out.println("\n" + i); // 41 (result copied from compiler)
public static int print(int i) {
System.out.print(" i = " + i + " ");
return i;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.