Java算術運算符包括:+(兩個數字求和)、-(兩個數字相減)、*(兩個數字乘積)、/(兩個數字相除)、%(兩個數字取模或者求余)、++(單目運算符,對數字自加1)、--(單目運算符,對數字自減1)。對于初學者來說,可能%、++、--比較生疏一些,我們重點來學習一下,請看以下代碼:
public class ArithmeticOperatorTest01 {
public static void main(String[] args) {
int a = 10;
int b = 3;
System.out.println(a + b); //13
System.out.println(a - b); //7
System.out.println(a * b); //30
/*
* 在java語言中10除以3結果不是3.3333..
* 因為java中有一個語法規則:int類型和int類型
* 做運算,最終的結果還是int類型,所以10除以3
* 的結果就是3,這個過程會取整數位。
*/
System.out.println(a / b); //3
/*
* 10對3求余數,3乘3得9,余1。
*/
System.out.println(a % b); //1
/*
* ++和--都是單目運算符,++負責自加1,--負責自減1
* 以下程序重點研究++運算符,--運算符可以依照++運算
* 符進行類推。
*/
int i = 10;
i++;
System.out.println("i = " + i); //11
int j = 10;
++j;
System.out.println("j = " + j); //11
/*
* 根據以上的程序可以得出結論:++可以出現在變量前,也
* 可以出現在變量后,無論是變量前還是變量后,只要執行完
* ++,最終的結果都會讓變量自加1。那么++出現在變量前
* 和變量后到底有什么區別呢?請看以下程序
*/
int k = 10;
int m = k++;
/*
* 根據以上結論,++無論是出現在變量前還是變量后,只要++執行
* 變量一定會自加1,那么k變量一定會自加1,所以以下輸出k=11
*/
System.out.println("k = " + k); //11
/*
* 以上int m = k++;代碼中++和=兩個運算符同時存在,
* 那么此時這兩個運算符哪個優先級高呢?java語法中是這樣
* 規定的,當++運算符出現在變量后,會先做賦值運算,再自
* 加1,所以最后m = 10
*/
System.out.println("m = " + m); //10
int x = 10;
int y = ++x;
//上行代碼執行結束后,我們可以確定x變量一定自加1了,所以x=11
System.out.println("x = " + x); //11
/*
* java語法中又有這樣的規定,++出現在變量前,會先進行自加1
* 的操作,然后再做賦值運算,所以y = 11
*/
System.out.println("y = " + y); //11
}
}
運行結果如下圖所示:
圖5-1:運行結果
通過以上代碼的學習,我們得知,第一:兩個int類型數據進行數學運算之后的結果一定是int類型;第二:++或--可以出現在變量前也可以是變量后;第三:++無論出現在變量前還是變量后,只要執行了++,那么變量必然會自加1;第四:++出現在變量后會先進行賦值運算,再自加1;第五:++出現在變量前會先自加1,再進行賦值運算。那么,大家思考一下以下代碼的執行結果是什么?
int c = 100;
System.out.println(c++);
int d = 100;
System.out.println(++d);