文章目錄
- 自增變數
- 自增變數介紹
- (1)自增變數是什么?
- (2)有什么特點
- 自增變數案例1
- 自增變數案例2
- 自增變數案例3
- javap指令位元組碼
- 自增變數案例4
- 運算元堆疊
- 自增變數案例5
自增變數
自增變數介紹
(1)自增變數是什么?
i = i +1
運算子在變數前或者后
++ i 前置
i++ 后置
(2)有什么特點
–>1、 前置與后置的自增或自減運算子若沒運用到運算式中,那么無區別
如for回圈
–>2、 若是參與到運算式運算中,只需記住:誰在前面就先執行誰
前綴自增自減法(++a,- -a): 先進行自增或者自減運算,再進行運算式運算,
后綴自增自減法(a++,a- -):先進行運算式運算,再進行自增或者自減運算,
- i++:
public class Test01變數自增 {
//前置與后置的自增或自減運算子若沒運用到運算式中,那么無區別
@Test
public void test01() {
int i = 0;
//i = i + 1;
i++;
System.out.println(i);
}
}

- ++i:
@Test
public void test02() {
int i = 0;
++i;
System.out.println(i);
}

- for:
@Test
public void test03() {
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
}

- 運算式輸出:
//若是參與到運算式運算中,只需記住:誰在前面就先執行誰
@Test
public void test04() {
int i = 1;
//System.out.println(++i);
System.out.println(i++);
System.out.println(i);
}

自增變數案例1
(1)a,b,c的結果是什么?
(2)運算分析法
畫出表過式的值與變數的最新值
@Test
public void test01() {
int a = 10;
int b = 20;
int c = ++a + b-- - a++ + --b;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
}
上面測驗用例的運算程序為:
1、(++a)的運算程序為:a=10+1=11;
結果a=11;b=20;
2、(b–) 的運算程序為:①b=20;②b=b-1=20-1=19;結果a=11;b=19;
3、 (a++) 的運算程序為:①a=11;②a=a+1=11+1=12;結果a=12;b=19;
4、(–b)的運算程序為:①b=b-1=19-1=18;結果a=12;b=18;
5、c=11+20-11+18=38
整個陳述句運算完成之后的最終結果為a=12;b=18;c=38;

自增變數案例2
(1)a,b,c的結果是什么?
(2)畫圖分析法
畫出表過式的值與變數的最新值
@Test
public void test02() {
int a = 6;
int b = 8;
int c = ++a + b-- - a-- + --b + b++ + --a;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
}


自增變數案例3
(1)a,b,c的結果是什么?
(2)畫圖分析法
畫出表過式的值與變數的最新值
@Test
public void test03() {
int a = 6, b = 8;
int c = --a + a-- - b-- + ++b + a++ - b--;
System.out.println("a = " + a);//
System.out.println("b = " + b);
System.out.println("c = " + c);
}


javap指令位元組碼
(1)javap是什么?
javap是 Java class檔案分解器,可以反編譯(即對javac編譯的檔案進行反編譯),也可以查看java編譯器生成的位元組碼,用于分解class檔案
(2)javap如何使用?
javap -c 位元組碼檔案
(3)idea中使用javap的設定
Ctrl+Alt+s快捷鍵 或者File-》setting
【java添加javap詳細步驟】

自增變數案例4
@Test
public void test04() {
int i = 1;
i = i++;
System.out.println("i = " + i);//1
}


運算元堆疊
運算元堆疊 一個臨時空間,先進后出
自增自減直接操作變數, 不經過運算元堆疊
自增變數案例5
@Test
public void test05() {
int i = 1;
i = i++;
int j = i++;
int k = i + ++i * i++;
System.out.println("i=" + i);
System.out.println("j=" + j);
System.out.println("k=" + k);
}


注:
專案中,使用避免使用自增或自減- 賦值=,最后計算
- =右邊的從左到右加載值依次壓入運算元堆疊
- 實際先算哪個,看運算子優先級
- 自增、自減操作都是直接修改變數的值,不經過運算元堆疊
- 最后的賦值之前,臨時結果也是存盤在運算元堆疊中
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/208911.html
標籤:其他
