1. 程式人生 > 其它 >java--運算子和表示式

java--運算子和表示式

運算子:就是對常量或者遍歷進行操作的符號;

表示式:用運算子把常量或者變數連線起來符合java語法的式子稱為表示式,不同運算子連線的表示式體現的是不同型別的表示式。

一、算術運算子

1、使用%運算子:

  • java中運算子除了加減乘除之外,還有取餘(%)運算以及自增(++)自減(--)
  • 取餘(取模),意為取餘數,可以用於整數、char和浮點數。
 1 //1、取餘
 2 int n=255;
 3 char n2='A';
 4 double n3=16.8;
 5 System.out.println(n3&8);//0.800000000000007
 6         int a=6;
 7         int
b=4; 8 System.out.println(a+b);//10 9 System.out.println(a-b);//2 10 System.out.println(a*b);//24 11 System.out.println(a/b);//1 12 System.out.println(a%b);//2 13 //除法得到的是商,取餘得到的是餘數 14 //整數相除只能得到整數,要想得到小數,必須有浮點數的參與 15 System.out.println(6.0/4);//1.5

注意事項:

  • /和%的區別:兩個資料做除法,/取結果的商,%取結果的餘數;
  • 整數操作只能得到整數,要想得到小數,必須有浮點數參與運算。

2、字元“+”操作:

拿字元在計算機底層對應的數值來進行計算的

‘A’----65;A-Z是連續的

'a'----97;a-z是連續的

‘0’----48;0-9是連續的

 1         int i=10;
 2         //char c='A';//75,"A"的值為65
 3         //char c='a';//107 “a”的值為97
 4         char c='0';//58   “0”的值為48
 5         System.out.println(i + c);//58
 6 
 7 
 8         //char ch=i+c;
//型別錯誤,char型別會被自動提升為int型別 9 int j=i+c; 10 System.out.println(j);//58 11 12 double k=10+13.14; 13 System.out.println(k);

注意:算術表示式中包含多個基本資料型別的值的時候,整個算術表示式的型別會自動進行提升

提升規則:

  • byte型別,short型別和char型別將被提升到int型別;

  • 整個表示式的型別自動提升到表示式中最高等級操作同樣的型別

  • 等級順序:byte,short,char--->int----->long---->flooat---->double

3、字串“+”操作:

  • 當“+”操作中出現字串時,這個“+”時字串連線符,而不是算數運算;

  • 在“+”操作中,如果出現了字串,就是連線運算子,否則就是算數運算,當連續進行“+”操作時,從左到右逐個執行

  • 例如:1+99+“年級”=====100年級

二、自增自減運算

  • 前置自增自減:先自增自減後運算
  • 後置自增自減:先運算後自增自減(後邊的居多)
1 int a=10,b=20; 
2 int c1=a++;
3 int c2=++b;
4 System.out.println("a="+a+",b="+b+"c1="+c1+",c2"+c2);//11 21 10 21

結論:

  1. 單獨使用的時候,變數無論是前置還是後置運算,其結果一定為+1;
  2. 只在使用它的時候考慮前置和後置規則;
  3. 參與操作的時候,如果放在變數的後邊,先拿變數參與操作,後拿變數做++或--;
  4. 參與操作的時候,如果放在變數的前邊,先拿變數做++或者--,後拿變數參與運算。

三、關係運算符:

1 //不管成立不成立,結果為布林值,true or false
2 
3 int max=10;
4 int num=9;
5 boolean b1=max>15;//false
6 boolean b2=num%2==1;//true
7 System.out.println(num=max);//把max的值賦值給num

 

四、邏輯運算子:

1、邏輯運算&&邏輯與||邏輯或!邏輯非

 

 結論:與運算:一假必假

或運算:一真必真

2、使用邏輯運算子

 1 //4、邏輯運算子
 2 //
 3 int score=80;
 4 boolean res13=score>=60&&score<=90;//true
 5 //
 6 boolean flag=true;
 7 int i=200;
 8 boolean res2=flag||(i>=0&&i<10);//true
 9 //
10 res2=!flag||(i>=0&&i<10);//flase

3、“短路邏輯”運算子

  • (&&)短路與運算:一假必假 指:當一個表示式為假時後面的表示式就不會再取運算了

  • (||)短路或運算:一真必真 指:當第一個表示式為真時後面的表示式不參與運算

1 int i=100,j=200;
2 boolean b1=(i>j)&&(i++>100);
3 System.out.println(b1);
4 System.out.println(i);
5 boolean b2=i>0||j++>200;
6 System.out.println(b2);
7 System.out.println(j);

 

五、賦值運算

1、使用“=”進行賦值運算

  • 賦值運算子一定是從右邊表示式看向左邊

i=1;表示式將1賦值給i;

1 //賦值運算子
2 int x,y,c;
3 x=y=c=100;
4 //將100賦值給c----》b=(c=100)

2、使用擴充套件賦值表示式

 

 

1 i=10;
2 i += 20;//把左邊和右邊的資料做加法操作,結果賦值給左邊,相當於 i=i+20;
3 //注意:擴充套件的賦值運算子底層隱含了強制型別轉化;
4 short s=10;
5 s=(short)(s+20);
6 System.out.println(s);

六、三目運算子

1、使用三目運算子

  • 三目運算子(條件運算子):

    boolean表示式?表示式1:表示式2;

  • boolean表示式為true,則運算表示式1,否則執行表示式2.

  • 自右向左結合 1 String s=65>60?"及格":"不及格";//不及格 

2、三目的巢狀:

  • 三目運算子可以巢狀使用,表示式1和表示式2的結果可以為巢狀三目的boolean表示式

 1 int a=-1; 2 String r=a>0?"正數":(a==0?"0":"負數"); 

七、位運算子:

按照二進位制數進行操作;

運算元:整型

& | ^:boolen

& | ^ ~ << >> >>>

&:(與運算:兩個同時為1,結果為1,否則為0)

0&0 1&0 0&1 1&1

|:(或:參加運算的兩個物件,一個為1,其值為1)

0|0 1|0 0|1 1|1

^:(異或:相同為0,不同為1,將某些位置取反)

0^0 1^0 0^1 1^1