天天看點

Java運算符優先級順序Java運算符優先級順序1.算數運算符2.自增,自減規則

Java運算符優先級順序

圖集說明:

Java運算符優先級順序Java運算符優先級順序1.算數運算符2.自增,自減規則

1.算數運算符

補充兩個:

  • 單目運算符 正号 +10 10
  • 單目運算符 負号 n=10;-n; -10

(1)除法規則 /

若兩個操作數都是整型,結果也是整型,除數不能為0

若兩個操作數有一個是浮點型,結果是浮點型

System.out.println(10/3);

//System.out.println(10/0); //除數不能為0,錯誤

System.out.println(10/3.0); //

System.out.println(10.0/0); //Infinity,正無窮大

System.out.println(-10/0.0); //-Infinity ,負無窮大

(2)取模規則 %

求餘數運算

結果的符号與被取模數有關,與模數無關

System.out.println(5.5 % 3.2);

System.out.println(5 % 0.0); //NaN ,非數

System.out.println(-5 % 0.0); //NaN ,非數

System.out.println(0 % 5.0);

System.out.println(0 % 0.0); //NaN ,非數

//System.out.println(5 % 0);

System.out.println((-5) % 3);

System.out.println(5 % (-3));

2.自增,自減規則

單目運算符

操作數隻能是變量,不能是常量和表達式

分為字首和字尾

字首 先算後用

字尾 先用後算

//int n =1++;

int a =1;

System.out.println(a);

int b = ++a+2;

System.out.println(“a=”+a+",b="+b);

int c = a-- +2;

System.out.println(“a=”+a+",c="+c);

3.指派運算符

規則:

為變量指定值,不能為常量或表達式指派= 符号兩邊的資料類型不一緻時,使用自動類型轉換或強制類型轉換原則處理

int n = 10; //聲明并指派

int a1,b1,c1; // 連續聲明

a1=b1=c1=10; // 多個已聲明變量連續指派

//int x=y=z=10; //錯誤

除了 = 運算符外,都是擴充指派運算符,編譯器先運算在指派

int a2=1;

a2 +=1; // a= ? 表達式等價于?

a2 *=2; // a=? 表達式等價于?

如果兩種類型不相容,或者目标類型小于原型時,要進行強制類型轉換

使用擴充運算符時,強制類型轉換自動完成,不需要顯示強制轉換

byte b3=1;

//b3= b3+1; // 常量1 是int 型,b+1是int 型

b+=1; // 自動完成強制類型轉換

4.關系運算符

結果是布爾型 Boolean

除== 外 其他的運算符都隻能是數值類型

隻要是數值類型,不管資料類型是否相同,都能比較

基本類型的常量和變量不能和引用類型的常量和變量比較

Boolean 類型的常量和變量不能和其他任意類型的常量變量使用== 比較

引用類型之間沒有繼承關系也不能用== 比較

boolean b4 = 1<2.0; //結果為:

//boolean b5 =“0” <= “0”; // < 不支援引用類型比較

boolean b6 =“0” == “0”; // == 支援字元串比較

//boolean b7 = true!=0; //不支援布爾與其他類型比較

boolean b8 = true == false;

5.邏輯運算符

規則:

& 與 && 運算符都是與 兩個操作數都是true 結果才是true,其他為false

& 兩個操作數都進行判斷

&& 前面的為false,後面的不判斷

| 和 || 都表示或操作, 兩個操作數隻要有一個為true 結果就位true,否則為false

| 兩個操作數都進行判斷

|| 前面的為true,後面的不判斷

^ 為異或運算,異1同0

6.位運算符

補充:

<< 左移 00000001<<2 0000 0100

1000 0001 <<2 0000 0100

右移 0000 0100>>2 0000 0001

1000 0100 >>2 1110 0001

無符号右移 0000 0100 >>>2 0000 0001

1000 0100 >>>2 0010 0001

規則:

隻能操作整型變量或常量

& 參與按位與運算的兩個操作數 對應的二進制位同為1 ,則結果為1,否則為0

| 參與按位或運算的兩個操作數對應的二進制位有一個1 ,則結果為1,否則為0

~ 取反

^ 異1 同0

<< 左移 二進制位整體左移指定位數,後邊補0,左邊移出去的舍棄

右移 二進制位整體右移指定位數,左邊填充符号位(正0負1),右邊移出去的舍棄
無符号右移 二進制位整體右移指定位數,左邊填充0,右邊的舍棄

對于低于int 型(byte short char)的操作數總是先轉換為int型後再位移

對于int 型的位移,當位移數大于int 位數大于32 時,先用位移數對32求餘,得到的餘數才是真的位移數 a>>33 a>>1

Long 型位移,當位移數大于long 位數64時,先用位移數對64求餘,餘數為實際位移數

int n = -12>>>3;

System.out.println(n);

byte a =-12;

byte b = 3;

byte m =(byte)(a>>>b);

System.out.println(m);

繼續閱讀