算術運算符++和--的用法
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;
}
}