Java基礎-算術運算符(Arithmetic Operators)html
做者:尹正傑java
版權聲明:原創做品,謝絕轉載!不然將追究法律責任。面試
Java程序經過運算符實現對數據的處理,Java中的運算符包括:算數運算符,關係運算符,邏輯運算符,條件運算符,位運算符,移位運算符等等。本篇博客主要介紹算數運算符。算數運算符包括:「+,-,*,/,%,++,--」。ide
一.算數運算符的特色post
1>.運算結果可能超出數據類型表示範圍;spa
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class Arithmetic{ 8 public static void main(String[] args){ 9 int num1,num2,result; 10 11 //運算結果可能超出數據類型表示範圍 12 num1 = 2147483647; 13 num2 = 1; 14 15 result = num1 + num2; 16 System.out.println(result); //-2147483648 17 /** 18 num1的二進制爲: 19 0111 1111 1111 1111 1111 1111 1111 1111 20 num2的二進制爲: 21 0000 0000 0000 0000 0000 0000 0000 0001 22 + 23 ---------------------------------------------- 24 1000 0000 0000 0000 0000 0000 0000 0000 25 */ 26 27 num1 = -2147483648; 28 num2 = 1; 29 result = num1 - num2; 30 System.out.println(result); //2147483647 31 32 } 33 34 35 }
2>.整數相除結果爲整數;code
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class Arithmetic1{ 8 public static void main(String[] args){ 9 10 //除法,整數相除,結果爲整數,捨棄小數部分 11 System.out.println( 10 / 3 ); //3 12 System.out.println( 10 / -3 ); //-3 13 System.out.println( -10 / 3 ); //-3 14 System.out.println( -10 / -3 ); //3 15 } 16 17 18 }
3>.除數爲0的狀況;htm
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class Arithmetic2{ 8 public static void main(String[] args){ 9 10 //除法,除數爲0的狀況 11 // System.out.println( 10 / 0 ); 12 /** 13 整數相除,0做爲除數時,編譯沒有語法錯誤 14 運行時產生算術異常:java.lang.ArithmeticException: / by zero 15 注意: 16 整數相除時,保證除數不能爲0. 17 */ 18 19 20 //小數相除時,除數爲0運行經過,可是結果不是一個數。 21 System.out.println( 10 / 0.0 ); //Infinity,表示無窮大 22 System.out.println( 10 / -0.0 ); //-Infinity 23 System.out.println( -10 / 0.0 ); //-Infinity 24 System.out.println( 0 / 0.0 ); //NaN,表示Not a Number 25 System.out.println( -0 / 0.0 ); //NaN 26 27 } 28 29 30 }
4>.餘數的符號和被除數一致;blog
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class Arithmetic3{ 8 public static void main(String[] args){ 9 10 //求餘,餘數的符號與被除數的符號一致 11 System.out.println( 10 % 3 ); //1 12 System.out.println( 10 % -3 ); //1 13 System.out.println( -10 % 3 ); //-1 14 System.out.println( -10 % -3 ); //-1 15 } 16 }
5>.自增與自減;get
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class Arithmetic4{ 8 public static void main(String[] args){ 9 10 //自增與自減 11 /** 12 1>.自增與自減針對變量進行操做; 13 2>.自增就相遇變量的值加1,自減就是變量的值減1 14 */ 15 16 int x = 10; 17 x++; //至關於x = x + 1; 18 System.out.println(x); //11 19 20 x = 20; 21 x--; //至關於x = x - 1; 22 System.out.println(x); //19 23 24 } 25 }
6>.前綴與後綴的區別;
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class Arithmetic5{ 8 public static void main(String[] args){ 9 10 int a; 11 //自增與自減有前綴和後綴兩種形式 12 /** 13 ++a 這是前綴形式 14 a-- 這是後綴形式 15 區別: 16 前綴形式先自增後運算 17 後綴形式是先參與運算再自增 18 */ 19 a = 10; 20 int b = ++a; 21 /** 22 前綴形式: 23 1>.先把變量a的值取出來加1 24 a = a +1; 25 如今的a的值爲11 26 2>.再把變量a的值11賦值給變量b 27 */ 28 System.out.println(b); //11 29 30 a = 20; 31 b = a++; 32 /** 33 後綴形式: 34 1>.先把變量a的值保存在一個臨時變量中 35 int temp = a; //temp = 10 36 2>.變量a進行自增 37 a = a + 1 //a = 11 38 3>.其實是臨時變量參與計算 39 b = temp; //b = 10 40 */ 41 System.out.println(b); //20 42 } 43 }
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class Arithmetic6{ 8 public static void main(String[] args){ 9 10 //面試題: 11 int x =10; 12 x = x++; 13 System.out.println(x); //打印的結果爲何會是10呢? 14 15 /** 16 1>.int temp = x; //temp == 10 17 2>.等號右側的變量x進行自增 18 x = x +1; //x = 11 19 3>.是把臨時變量temp的值賦值給左側的x變量 20 x = temp //x = 10 21 */ 22 } 23 }
7>.自增與自減隱含着強制類型轉換;
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class Arithmetic7{ 8 public static void main(String[] args){ 9 10 //自增與自減隱含着強制類型轉換 11 12 byte a = 10; 13 // a = a + 1; 14 /** 15 因爲byte在運算的過程當中會自動提高爲整形,即左邊的a是byte類型,而右邊的a確是 16 int類型。所以會報錯:「錯誤: 不兼容的類型: 從int轉換到byte可能會有損失」。 17 */ 18 19 a++; //至關於 a = (byte)(a+1); 20 21 System.out.println(a); //11 22 23 char b = 'A'; 24 b++; //至關於b = (char)(b+1); 25 System.out.println(b); //B 26 27 28 } 29 }
8>.表達式的數據類型;
在進行算數運算時,整數,小數,字符均可以參與運算,整個算數表達式的數據類型是:
1>.若是有double類型數據參與運算,整個表達式就是double類型;
2>.不然,若是有float類型數據參與運算,整個表達式就是float類型;
3>.不然,若是有long類型參與算數運算,整個表達式就是lang類型;
4>.不然,整個表達式就是int類型;
補充:算數表達式就是用算術運算符連接起來的式子,如:"int num1 = 10; int num2 = 20; int res = num1 + num2; ",其中res的結果就是一個算數表達式。