運算符 分類 算術運算符 位運算符 關係運算符|比較運算符 邏輯運算符 條件運算符 賦值運算符 其中優先順序順序從上到下,可以記憶口訣:單目乘除位關係,邏輯三目後賦值 操作數: 運算符左右兩邊的數 表達式: 運算符連接操作數整體叫做表達式 語句: 分號代表語句的結束 單目|一元運算符: 操作數為1個 ...
分類
-
算術運算符
-
位運算符
-
關係運算符|比較運算符
-
邏輯運算符
-
條件運算符
-
賦值運算符
其中優先順序順序從上到下,可以記憶口訣:單目乘除位關係,邏輯三目後賦值
操作數: 運算符左右兩邊的數 表達式: 運算符連接操作數整體叫做表達式 語句: 分號代表語句的結束
單目|一元運算符: 操作數為1個 +號 ++ --
雙目|二元運算符: 操作數為2個 + - * /
三目|三元運算符: 條件運算符
算術運算符
+號:
-
正號(可省略)
-
加法運算
-
字元串的連接
-
如果+左右兩邊有字元串的出現"",+就是作為字元串的連接符使用,把兩邊的內容拼接成為一整個字元串使用
-
-號:
-
符號
-
減法運算
此外,還有* / %
% 模以,取模,求餘數
++ --
-
++,--操作自己 無論++在前還是在後,自己加一 無論--在前還是在後,自己減一
-
++,--操作別人 ++在前,先自己加一在參與運算 ++在後,先參與運算在自己加一 --同理
賦值運算符
-
基礎賦值運算符
-
= 是java中唯一一個自右向左運算的符號優先順序最低
-
-
擴展賦值運算符
-
+= a+=b; ==> a=a+b;-=同理
-
a=b; ==> a=ab; /=、%=同理
-
推薦使用擴展賦值運算符 優點: 執行效率高 缺點: 不直觀
關係運算符
符號:> < >= <=
可以參與運算的類型:byte short int long float double char
符號:== !=
可以參與運算的類型:基本數據類型、引用數據類型
關係運算符最終得到的結果:boolean類型的結果
邏輯運算符
& 與:一個false就是false,兩個都為true,才為true
| 或:一個為true就是true,兩個都為false,才是false
! 非:取反 !true->false !false->true
^ 異或:相同為false,不同為true
短路: 如果第一個操作數就能夠決定最終的結果,第二個操作數位置不執行。
&& 短路與、|| 短路或
推薦使用短路
所有的邏輯運算符的操作數都為值為boolean類型的表達式。
條件運算符|三目運算符|三元運算符
條件表達式?值1:值2;
條件表達式:值為boolean類型的表達式
執行流程:
1.條件表達式 ,最終會得到一個boolean結果
2.如果結果為true,整個條件表達式最終的結果為值1,否則執行值2;
條件運算符最終肯定會得到一個結果
位運算(僅做瞭解)
先把操作數轉為二進位,根據運算符的邏輯進行操作,最終得到的結果再轉為十進位
& : 同一位置的兩個數,如果一個為0就是0,兩個都為1才是1 | : 同一位置的兩個數,如果一個為1就是1,兩個都為0才是0 ^ : 同一位置的兩個數,相同為0,不同為1 位移運算符
左移 第一個操作數轉為2進位,第二個操作數是移動位數 ,向左移動指定的位數,空位補零,例如:
8<<2 1000左移2位 1000 00 -> 轉為十進位 32
右移 第一個操作數轉為2進位,第二個操作數是移動位數 ,向右移動指定的位數,想象數據的右邊有一條分水線,右側的內容砍掉,只保留左側的數據,轉為十進位,例如:
8>>2 1000 右移2位 10->轉為十進位 2
右移相當於/2 8>>3 8/2^3 左移相當於*2 8<<3 8*2^3
位運算符比直接使用* /效率高
運算符的優先順序: (),.優先順序是最高的
常用類
Scanner
註意:不要讓你的類名與java中已有的類名一致
引用數據類型: 引用數據類型 變數名|引用 = new 引用數據類型();
使用功能: 變數名|引用.功能名字();
Scanner : 接收鍵盤輸入的內容
1.導包 import 導入 + 許可權命名(報名+類名);
位置: 類的上面導包
2.創建這個類型的引用
Scanner sc=new Scanner(System.in);
3.使用功能:
引用.功能名字();
sc.nextInt(); 接收用戶鍵盤輸入的整數類型的數據 sc.nextLong(); 接收用戶鍵盤輸入的長整數類型的數據 sc.nextByte(); 接收用戶鍵盤輸入的位元組類型的數據 sc.nextShort(); 接收用戶鍵盤輸入的短整數類型的數據 sc.nextFloat(); 接收用戶鍵盤輸入的單精度類型的數據 sc.nextDouble(); 接收用戶鍵盤輸入的雙精度類型的數據
sc.next() 從有效字元開始接收,空格不算,接收用戶輸入的字元串內容,知道遇到空格,tab,就接收不到數據,但是功能沒有停止,遇到enter功能結束 sc.nextLine() 接收一整行的數據
從第一個字元開始接收,知道遇到enter結束
系列next功能不能接收enter,遇到enter結束,nextLine可以接收enter
4.關閉
引用.close() 關閉了之後就不能再次使用,就算是重新打開也不好用
Random隨機數
產生隨機數 1.導包 import java.util.Random; 2.創建類型的引用 Random ran=new Random(); 3.使用功能: 引用.nextInt(); 產生一個int範圍內的隨機整數 引用.nextInt(整數n); 產生一個 [0,n) 隨機整數 [0,max) ran.nextInt(max); [0,max] ran.nextInt(max+1); [min,max] ran.nextInt(max-min+1)+min; [min,max) ran.nextInt(max-min)+min; 引用.nextDouble() [0.0,1.0)之間的隨機小數
流程式控制制
順序結構: 從上到下從左到右 選擇結構: 滿足條件才能執行 迴圈結構: 重覆執行某些代碼
選擇結構
if_else
if結構:
單選擇|單分支:
if(條件表達式){
滿足條件才執行的語句體;
}
條件表達式:值為boolean類型的表達式
執行流程:
1.執行條件表達式,如果結果為true,就執行語句體
2.如果結果為false,就跳過if結構
雙選擇|雙分支:
if(條件表達式){
語句體1;
}else{
語句體2;
}
執行流程:
1.執行條件表達式,如果結果為true,就執行語句體1
2.如果結果為false,就執行語句體2
多選擇|多分支:
if(條件表達式1){
語句體1;
}else if(條件表達式2){
語句體2;
}
.....
else{
以上條件都不滿足,就執行else中的內容 語句體n
}
執行流程:
1.計算條件表達式1,如果結果為true,執行語句體1,如果結果為false
2.執行條件表達式2,如果結果為true,執行語句體2,如果結果為false
....
果以上條件都不滿足,執行else中的語句體n
註意:如果語句體只有一句,前後的{}可以省略, 如果一個if語句中如果存在接盤俠else,肯定有結果。
if與條件運算符之間的區別:條件運算符肯定有結果,if不一定 能使用條件運算符的就推薦使用條件運算符,結構簡單,效率較高
switch
定值判斷 switch 區間判斷 if 能用switch肯定能用if,能用if的不一定能用switch
switch(表達式){
case 值1 :
語句體1;
break;
case 值2:
語句體2;
break;
case 值3:
語句體3;
break;
......
default:
以上值都不滿足,執行default中的內容
break;
}
表達式: 只能為byte,short,int,char,字元串(1.7),枚舉(1.5) 一般使用變數
case: case後的定值與表達式的結果進行判斷是否相等,對應執行不同的語句體 break: 結束switch語句,如果沒有break,會發生case穿透,從現在執行完的語句體開始,如果沒有break,下麵的case無論是否相等,都會執行對應的語句體,直到遇到下一個break或者switch語句的結束而結束 default: 接盤俠,相當於else,以上值都不滿足,執行default中的內容
可寫可不寫,default位置可以改變
執行流程: 1.計算表達式 2.那值與case後的值比較是否相等,如果相等就執行對應的語句體,如果不相等就向下繼續比較