java中的運算符


一:概述:

Java的運算符,分為四類:

  算數運算符關系運算符邏輯運算符、位運算符。

    算數運算符(9):+  -  *  /  %  ++  --

    關系運算符(6):==  !=  >  >=  <  <=

    邏輯運算符(6):&&  ||  !  ^  &  |

    位運算符(7):&  |  ~  ^  >>  <<  >>>

 -----------------------------------------------------------------------------------------------------------

Java基本數據類型:

  數值類型:

    整型:byte、short、int、long

    非整型:double、float

  非數值類型:char[字符]、boolean[布爾]

 

 二:算術運算符:

  注:算數運算符操作數必須是數值類型   

  分為一元運算(只有一個操作數)、二元運算(有兩個操作數,運算符在兩個操作數之間)

  ①”++“和”--“運算符,只允許用於數值類型的變量,不允許用於表達式中;"++"和”--“可以用於數值變量之前或者之后;

   兩處使用差別:

           ”++“和”--“用於數值變量之前,在賦值操作中,先對被”++“或”--“操作變量值先加1或者先減1,然后在進行其他的操作;

           "++"和”--“用於數值變量之后,在賦值操作中,先用被”++“或”--“的操作變量值進行其他的操作,然后在對其值加1或者減1。

   例如:

1 package nums;
2 
3 public class Test1 {
4     public static void main(String[] args) {
5         int num1=20,num2=20;
6         System.out.println(++num1);
7         System.out.println(num2++);
8     }
9 }

 輸出的結果為:

  用“--”的效果和“++”是一樣的

 ②:二元運算符,加'+'減'-'乘'*'除'/'求余'%'

  在算數運算符中,”+“,”-“,”*“,”/“完成加減乘除四則運算,%是求兩個操作數相除后的余數。運算規則和數學運算基本相同,在算數運算中,計算時按照從左向右的順序計算,乘除和求余優先於加減,不同的是,程序中的乘運算符不可省略,在數學中可寫為”y=2x“而程序中必須寫為”y=2*x“。

  當二元運算的兩個操作數的數據類型不同時,運算結果的數據類型和參與運算的操作數的數據類型中精度較高(或位數較長)一致。

 1 package nums;
 2 
 3 public class Test2 {
 4     public static void main(String[] args) {
 5         int num1=10;
 6         int num2=22;
 7         double num3=52.2;
 8         System.out.println("加:"+num1+num2);
 9         System.out.println("減:"+(num1-num2));
10         System.out.println("乘:"+num2*num3);//會提升精度
11         System.out.println("除:"+num3/num1);
12         System.out.println("求余:"+num1%num2);
13     }
14 }

 

 

低精度向高精度轉換byte 、short、int、long、float、double低精度到高精度會自動轉換,而高精度到低精度則要類型強制轉換。

  1 int a = 7; 2 double b = 5.33; 3 b = a; 4 a = (int) b;  

 

 二:關系運算符: 

  關系運算符用於比較兩個數值之間的大小,其運算結果為一個邏輯類型(boolean布爾類型)的數值。

  等於'=='不等於'!='大於'>'大於等於'>='小於'<'小於等於'<='

 1 package nums;
 2 
 3 public class Test3 {
 4     public static void main(String[] args) {
 5         System.out.println("9.5<8 :"+(9.5<8));  
 6         System.out.println("8.5<=8.5:"+(8.5<=8.5));  
 7         System.out.println("a~z:"+((int)'a')+"~"+((int)'z'));  
 8         System.out.println("A~Z:"+((int)'A')+"~"+((int)'Z'));  
 9         System.out.println("'A' < 'a':"+('A' < 'a'));//字符'A'的Unicode編碼值小於字符'a'  
10     }
11 }

 

  判斷相等的符號是兩個等號,而不是一個等號,這個需要特別小心。比較運算符是程序設計中實現數據比較的基礎,也是很多邏輯實現的基礎,在程序邏輯中,經常通過比較一定的條件,來判斷后續的程序該如何執行。

 三:邏輯運算符:

   邏輯運算符要求操作數的數據類型為邏輯型,其運算結果也是邏輯型值。  

   邏輯與'&&',邏輯或'||',邏輯非'!',邏輯異或'^',邏輯與'&',邏輯或'|'

    注:

  &和|運算是把邏輯表達式全部計算完,而&&和||運算具有短路計算功能。

     對於&來說,如果左側條件為false,也會計算右側條件的值,而對於&&來說,如果左側的條件為false,則不計算右側的條件,這種現象被稱作短路現象。 所謂短路計算,是指系統從左至右進行邏輯表達式的計算,一旦出現計算結果已經確定的情況,則計算過程即被終止。 對於&&運算來說,只要運算符左端的值為false,則因無論運算符右端的值為true或為false,其最終結果都為false。

     對於 || 運算來說,只要運算符左端的值為true,則因無論運算符右端的值為true或為false,其最終結果都為true。 所以,系統一旦判斷出|| 運算符左端的值為true,則系統將終止其后的計算過程。

   異或相同為false,相反則為true。

   在程序設計時使用&&和||運算符,不建議使用&和|運算符。

 

 四:位運算符:

位運算是以二進制位為單位進行的運算,也就是說,會把十進制數先轉換為二進制進行運算;

①十進制二進制的相互轉化:

  ②左移(<<):

1 package nums;
2 
3 public class Test4 {
4 public static void main(String[] args) {
5    System.out.println(5 << 2);// 運行結果是20
6 }
7 }

 

   

運行過程:先把5轉換為二進制   0101

     然后進行位移,向左位移2位

     也就是00010100

     轉換為十進制為20;

  

  ②右移(>>):

1 package nums;
2 
3 public class Test4 {
4 public static void main(String[] args) {
5    System.out.println(5 << 2);// 運行結果是20
6    
7    System.out.println(5 >> 2);
8 }
9 }

 

 運行原理和左移是一樣的;

 ③、無符號右移( >>> ) 

  運行原理:得到二進制數

       取反值

       加1

1 package nums;
2 
3 public class Test5 {
4 public static void main(String[] args) {
5     System.out.println(5>>>2);
6 }
7 }

 

  ④:按位與(&)

   只有兩個操作數對應位同為1時,結果為1,其余全為0.

   例如:

  

  ⑤:按位或(|)

   只有兩個操作數對應位同為0時,結果為0,其余全為1.

   ⑥:異或(^)

   當運算符兩邊不同的時候結果為1,兩邊相同的時候結果為0 這就是傳說中的同性相殺,異性相吻。

   8^6=1000^0110=1110=14

   ⑦:按位非(~)

   非運算符理解起來很容易的,就是按位取反

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM