• ++a和a++


    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

  • 相关阅读:
    未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker
    .net remoting 尝试
    上传图片时获取所传图片大小
    图象处理算法(二)
    对CollapablePanel控件的改进
    一个简单的网页计数器
    ValidateBox控件使用Ajax改进
    图象处理算法(四)
    常用技巧(一)
    在Asp.Net里使用自定义映射进行重定向
  • 原文地址:https://www.cnblogs.com/XuGuobao/p/7228211.html
Copyright © 2020-2023  润新知