首页 > 代码库 > 算术运算符++和--的用法

算术运算符++和--的用法

算术运算符++和--的用法

1.运算符

  概念:对常量和变量进行操作的符号。备注:(运算之后是有结果的)

  分类:

    算术运算符,

    赋值运算符

    比较(关系或条件)运算符,

    逻辑运算符

    位运算符

    三目(元)运算符

 

2.++,--运算符的作用

  ++:自加:对原有的数据进行+1

  --:自减:对原有的数据进行-1

3.使用:

  单独使用:放在操作数的前面和后面效果一样。

  参与运算使用:  ++在变量后面(i++),会先将变量中的值取出做赋值操作,再自身+1  

          ++在变量前面(++i),会先自身+1,然后再将+1后的结果赋值

4.举例说明:

  例1.请分别计算出x,y的值?

    int x = 3;

    int y = x++ + ++x + x * 10;

  计算过程:

    在进行混合运算时我们看式子,从左往右看

    首先x++,++在变量x的后面,要先把变量x的值拿出来放在这个位置上(即 int y = 3 + ++x + x * 10),然后自身+1;这里变量x = 3+1 = 4,(如果不好理解,可以令int a = x++,则a = 3);

    接着往右看遇到++x,++在变量x的前面,要先自身+1(即x = 4+1 = 5),然后值再放到这个位置即(int y = 3 + 5 + x * 10)

    最后x * 10,此时x = 5,即 int y = 3 + 5 + 5 * 10;

    最终的结果是x = 5;y = 58;

 

  例2:

    byte b = 5;

    b++;

    b = b +1;

  问哪句会报错,为什么?

    我们先看b = b + 1;

    b是byte类型的数,在参与运算时会自动类型提升为int数,因此b + 1的结果是个int数,int数要赋值给byte数,会报错:损失精度.(要想具体了解请参阅http://www.cnblogs.com/wk520hll/)

    b++;

    在混合运算时,byte类型数会自动类型提升为int类型数,然而确没有报错

    因为在这里++隐含了强制类型转换,即b = (byte)(b + 1);使得自加后的结果还是 byte数所以这里不会报错.

案例:

  1.定义一个int数组{32,32,6,6,65},把这个数组中那些唯一的数字,放到一个新的数组中,生成的新数组如下:{32,6,65}.

    

  class Test02 {

    public static void main(String[] args) {

      int[] arr = {32,32,6,6,65}; //定义一个数组

      int[] temp = new int[arr.length]; //定义一个第三方数组,辅助存放那些唯一的数字

      int size = 0;

      for(int i=0; i<arr.length; i++){ //将唯一的数存放到int[] temp中

        boolean flag = contains(temp,arr[i]);

        if (!flag) {

          temp[size++] = arr[i]; //size(先赋值再自加),并且记录唯一数的个数

        }

      }

 

      int[] newArr = new int[size];//定义新数组

      for(int i=0; i<size; i++){

        newArr[i] = temp[i]; //存放唯一数

      }

 

      System.out.println(Arrays.toString(newArr));

    }

    private static boolean contains(int[] temp, int i) { //一个int数与数组中的元素比较,如过有相等的则返回true如果没有相等的则返回false

      for(int x=0; x<temp.length; x++){

        if (temp[x]==i) {

          return true;

        }

      }

      return false;

    }

 

  }

算术运算符++和--的用法