首页 > 技术文章 > ++a和a++

XuGuobao 2017-07-24 11:57 原文

1)

 1 public class Test {
 2     static {
 3         int x = 5;            //x是局部变量,不影响后边的值。
 4         System.out.println(x);
 5     }
 6     static int x,y;            //x和y是全局变量,初始化后x=0,y=0。
 7     public static void main(String[] args) {
 8         x--;
 9         System.out.println(x);
10         myMethod();
11         System.out.println(x + y++ +x);
12     }
13     public static void myMethod(){
14         y = x++ + ++x;    
15         System.out.println(x);
16         System.out.println(y);
17         //计算顺序:y = x+(++x);x+1
18     }
19 }

输出结果为:

5
-1
1
0
2

分析:a++先执行整个语句,再将a值加1,而++b先将b的值加1,再执行整个语句。

可以将y = x++ + ++x;中x++看成一条语句,++x看成另一条语句,如下程序所示:

2)

 1 public class Test {
 2     static {
 3         int x = 5;            //x是局部变量,不影响后边的值。
 4         System.out.println(x);
 5     }
 6     static int x,y;            //x和y是全局变量,初始化后x=0,y=0。
 7     public static void main(String[] args) {
 8         x--;
 9         System.out.println(x);
10         myMethod();
11         System.out.println(x + y++ +x);
12     }
13     public static void myMethod(){
14         int a,b;
15         a = x++;
16         b = ++x;
17         System.out.println("a = " + a);        
18         System.out.println("b = " + b);    
19         y = a + b;    
20         System.out.println(x);
21         System.out.println(y);
22         //计算顺序:y = x+(++x);x+1
23     }
24 }

输出结果为:

5
-1
a = -1
b = 1
1
0
2

 

另外,调换上天a和b的先后顺序,输出结果是不一样的:

 1 public class Test {
 2     static {
 3         int x = 5;            //x是局部变量,不影响后边的值。
 4         System.out.println(x);
 5     }
 6     static int x,y;            //x和y是全局变量,初始化后x=0,y=0。
 7     public static void main(String[] args) {
 8         x--;
 9         System.out.println(x);
10         myMethod();
11         System.out.println(x + y++ +x);
12     }
13     public static void myMethod(){
14         int a,b;
15         b = ++x;
16         a = x++;
17         System.out.println("a = " + a);        
18         System.out.println("b = " + b);    
19         y = x++ + ++x;    
20         System.out.println(x);
21         System.out.println(y);
22         //计算顺序:y = x+(++x);x+1
23     }
24 }

输出结果为:

5
-1
a = 0
b = 0
3
4
10

推荐阅读