Java基礎-自增自減運算符練習題


我們用一個簡單的例子分析下邊的運行結果:

 1 package demo;
 2 
 3 public class ZiZeng {
 4     public static void main(String[] args) { 5         int i = 0;
 6         test(i);
 7         // i = i++;
 8         i = ++i;
9         System.out.println("----" + i);
10         // i = i++;
11         i = i++;
12         System.out.println("****" + i);
13         
14     }
15     
16     public static void test(int i){
17         i++;
18         System.out.println("++++" + i);
19     }
20 }

輸出結果:

++++1
----1
****1

對以上的執行結果分析如下:
逐行代碼分析:

1, 在第5行定義了 int i = 0;

2, 在 第6行調用了test(i)方法,此時的 i = 0作為實際參數將值0傳給了test方法的形式參數i,

     test方法中的i 是形式參數,形式參數值的改變不會影響實際參數,所以test方法中的i的值是1,而,main方法中i的值仍然為0

3, 第18行輸出 1

4, 在第8行中, i = ++i,先自增后賦值,所以此時 i = 1

5, 第9行輸出 i = 1;

6, 在第11行中,i = i++,先賦值再自增,,所以此時i = 1

7, 第12行輸出 1

 

練習題2:

對於以下,有int x = 5, y = 6, z;

    題目1:z = ++x + y++;

    題目2:z = ++x + x++;

    題目3:x = ++x + x++;

  題目4:z = x > y ? ++x : y++; 

答案:

題目1:x = 6; z = 12; y = 7

題目2:x=7, y = 6, z=12

題目3:x=12

題目4:x = 5, y = 7, z = 6

 

練習3,

 int a=1;

System.out.println(++a+a);
 
結果:4
 
練習4,

int i = 0;   

int j = i++;   

int k = --i;

這段代碼運行后,i等於多少?j等於多少?k等於多少?

i:0
j:0
k:0

 

1. int i = 0;   

2. int j = i++ + ++i;   

3. int k = --i + i--;

代碼執行后i、j、k分別等於多少呢?

在第二個例子中,對於int j=i++ + ++i;,首先運行i++,i的值0被用於加運算(+),之后i自增值變為1,然后運行++i,i先自增變為2,之后被用於加運算,最后將i兩次的值相加的結果0+2=2賦給j,因此這行代碼運行完畢后i=2、j=2;對於int k=--i + i--;用一樣的思路分析,具體過程在此不再贅述,結果應該是i=-2、k=-2。

 

練習5,

int a=5;
int b=++a;   // ++在前 先運算再賦值 現在 a=b=6;
int c=--b+a;  //--優先級比+高,先計算-- c此時b=5再加上a 5+6=11;再賦值

int c=a+(++b); //同理 括號優先級最高 先計算++b 此時b=7 6+7=13;再賦值

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM