黑马程序员技术交流社区

标题: 关于自增自减问题!!! [打印本页]

作者: 7℃洋    时间: 2012-11-12 21:47
标题: 关于自增自减问题!!!
本帖最后由 吴愿涛 于 2012-11-14 01:37 编辑

class Print{
     public static void main(String[] args){
         int a = 5 ;         
        System.out.println(a++);
        System.out.println(++a);
        System.out.println(a--);
        System.out.println(--a);
   }
}

作者: 罗宝    时间: 2012-11-12 21:56
本帖最后由 罗宝 于 2012-11-12 21:59 编辑

                int a = 5 ;         
                System.out.println(a++);     //先执行语句,再计算,打印结果是 5
                System.out.println(++a);     //先计算,后执行语句,打印结果是 7
                System.out.println(a--);       //打印结果是 7
                System.out.println(--a);       //打印结果是 5
作者: 初艳春    时间: 2012-11-12 22:23
class Print{
      public static void main(String[] args){
          int a = 5 ;         
        System.out.println(a++); //a++是后加,先输出,后加1(a的值变成6),所以打印结果是5。
        System.out.println(++a); //++a是先加,然后输出,所以打印结果是7。
        System.out.println(a--); //--a是后减,也是先输出,然后减1(a的值变为6),所以打印结果是7。
        System.out.println(--a);//--a是先减,所以a先减1,在输出,所以打印结果是5。
    }
}
作者: 马纵驰    时间: 2012-11-12 22:46
class Print{
      public static void main(String[] args){
          int a = 5 ;         
        System.out.println(a++); //a++是先加。只不过加完的值没有赋给a而是存在一个临时内存中.临时空间的值是a = 6 ,所以结果是5
        System.out.println(++a); //++a是先加。加完的值直接赋值给a。所以是7
        System.out.println(a--); //同上,a--是先减,减完后没有赋值。而是存在临时内存空间内。临时内存空间的值是 a = 6打印结果是7
        System.out.println(--a);//--a是先减,减完后直接赋值给a
    }
}

a++,a--。++a,--a哪个都一样并不是先加或先减的问题。而是先赋值和后赋值的问题。我是这么理解的
作者: 黑马周磊    时间: 2012-11-13 11:48
class Print{
       public static void main(String[] args){
           int a = 5 ;         
        System.out.println(a++); //a++ 是先输出a的值,然后再对a进行加1运算,再把a+1后的值赋给变量a。
         System.out.println(++a); //++a 是先进行a+1运算,把a+1的值在赋给变量a,再对a进行输出。
         System.out.println(a--); //--a 是先输出a的值,然后再对a进行减1运算,再把a-1后的值赋给变量a。
         System.out.println(--a);//--a 是先进行a-1运算,把a-1的值在赋给变量a,再对a进行输出。
     }
}

a++,a--。++a,--a,,我对这几个加加减减的理解无非就是两种情况,一个是先取后加,一个是先加后取;
作者: 赵学刚    时间: 2012-11-28 00:48
a++,++a单独作用不影响结果,只有和其他对象一起连用才有实际意义,比如:int a=1 if(a++>1){a--}和int a=1 if(++a>1){a--}结果就不一样
作者: 聽聽我dē❤    时间: 2012-11-28 01:01
一个是先赋值再运算,一个是先运算再赋值。
作者: 何伟    时间: 2012-11-28 17:29
放在前面就是先自增或者自减在进行运算,放在后面是先运算完在进行自增自减运算
作者: 李百韬    时间: 2012-11-28 17:36
一个先被调用在自增(减)操作  一个先减(增)操作在被语句调用   记忆很简单  变量和操作符谁在先就先执行谁
作者: 梁胜海    时间: 2012-11-28 18:04
一句话:1) a++是先赋值再运算,即先打印再运算
2)++a,是先运算再赋值,即先运算再打印。
对于你的题目,在打印a++后加上打印语句sop(a);是不是等于6
在a--加上打印语句sop(a);是不是也等于6
作者: 彭璞    时间: 2012-11-28 18:28
自增(++):将变量的值加1,分前缀式(如++i)和后缀式(如i++)
前缀式是先加1再使用;后缀式是先使用再加1。
自减(--):将变量的值减1,分前缀式(如--i)和后缀式(如i--)
前缀式是先减1再使用;后缀式是先使用再减1。

自增与自减运算符还遵循以下规律:
可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。
在Java5.0及以上版本中,它们可以用于基本类型对应的包装器类Byte、Short、Integer、Long、Float、Double、Character。
它们的运算结果的类型与被运算的变量的类型相同。

作者: 周志强    时间: 2012-11-28 18:48
                int a = 5 ;         
                 System.out.println(a++);     //先执行,再计算,      分享理解小技巧:因为先看到了"a”,是变量就执行,打印结果是5,语句结束之后a的值是6
                 System.out.println(++a);     //先计算,后执行,      分享理解小技巧:因为先看到了"+",是运算符,那就计算吧,a的值是7,打印结果是7
                 System.out.println(a--);       //先执行,再计算,      分享理解小技巧:因为先看到了"a”,是变量就执行,打印结果是7,语句结束之后a的值是6
                 System.out.println(--a);       //先计算,后执行,      分享理解小技巧:因为先看到了"+",是运算符,那就计算吧,a的值是5,打印结果是5
作者: 马海保    时间: 2012-11-28 18:48
增1减1操作符

    1> 增1减1操作符包括

       ++(前增1,如++i)

       --(前减1,如--i)

       ++(后增1,如i++)

       --(后减1,如i--)

      

       这些操作符作用于变量

    2> 前增1,前减1操作符

       表达式的值就是变量所获得的新值

       例如:

              m = ++k;

       就相当于

              k += 1;

              m=k;



       先增1(减1),后取值

    3> 后增1,后减1操作符

       表达式的值就是变量原来的旧值

       例如:

              m = k--;

       就相当于

              m=k;

              k - = 1;



       先取值,后增1(减1)






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2