j j 與j j的區別

2021-08-30 16:35:23 字數 711 閱讀 4979

jvm裡面有兩個儲存區,乙個是暫存區(是乙個堆疊),另乙個是變數區。 

語句istore_1是將堆疊中的值彈出存入相應的變數區(賦值);語句iload_1是將變數區中的值暫存入堆疊中。 

因為j = j++;是先將j的值(0)存入堆疊,然後對變數區中的j自加1,這時j的值的確是1,但是隨後的istore_1又將堆疊的值(0)彈出賦給變數區的 j,所以最後j = 0。 也就是說你執行100次j=j++,最後j也是0,但是你要是j=++j執行100次最後j=100,原理因為j = ++j;是先對變數區中的j自加1,然後再將變數區中j的值(1)存入堆疊,雖然最後執行了istore_1,但也只是將堆疊中的值(1)彈出賦給變數區 的j,所以j = ++j;的結果是j = 1。

i++的情況 

iconst_0  得到或建立乙個初始常量值0

istore_1  將初始值0賦給i(這個0是來自暫存區,i是變數區)

iload_1    i要開始自增了,先載入,值是0(自增運算是在暫存區中進行,因此載入的值0放入暫存區)

iinc 1,1    i自增為1(這個計算結果仍在暫存區)

istore_1   將值再賦給i (將暫存區的計算結果賦給變數區的變數i)

++i的情況 

iconst_0 

istore_1 

iinc 1,1 

iload_1 

istore_1

原文引自:

J J 暢通工程續

j j 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。input 本題目包含多組資...

JJ賺金幣詳細說明

打金幣賺錢的詳細說明 一,打金幣員的要求 1,要有耐心 因為剛開始的新號開始幾天是賺不到什麼金幣的,經驗值越高,進高階房間所得的金幣就 越多,所以請先把等級經驗值練上去,想一開始就賺多少錢的,貪心的不適合做,沒有乙個遊戲隨便申請 乙個小號就可以讓你賺錢在,只有等級經驗高了才可以賺更多的錢,有時候得乙...

與 的區別? 與 的區別?

相同點 和 都是表示與的邏輯運算子,其運算結果一致 不同點 邏輯與 當兩邊的表示式都為true的時候,整個運算結果才為true,否則為false。短路與 當第乙個表示式的值為false的時候,則不再計算第二個表示式 注意 還可以做位運算子,當表示式不是boolean型別的時候 例項1 public ...