首页 > 代码库 > 算术运算符++和--的用法
算术运算符++和--的用法
算术运算符++和--的用法
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;
}
}
算术运算符++和--的用法