1.運(yùn)算符
????算數(shù)運(yùn)算符
? ? ? ? +: ?正號(hào)(可以忽略);加法運(yùn)算;串的連接 ? ?? ? ? ? ? ? ? ?
? ? ? ? -:?負(fù)號(hào); 減法運(yùn)算; ? ? ? ? ? ? ? ?
????????*/:乘除
%:取模
++ ? --:自增自減
++,--操作自己
????????++放在操作數(shù)的前面還是后面,都是自身+1
????????--放在操作數(shù)的前面還是后面,都是自身-1
++,--操作別人
????????++--放在操作數(shù)的前面,先自身+1|-1,再去參與運(yùn)算
????????++--放在操作數(shù)的后面,先去參與運(yùn)算,在自身+1-1
????賦值運(yùn)算符
基礎(chǔ)賦值運(yùn)算符
????????=? 是java中唯一一個(gè)自右向左運(yùn)算的符號(hào)?,優(yōu)先級(jí)最低
?擴(kuò)展賦值運(yùn)算符(算數(shù)運(yùn)算符+基礎(chǔ)賦值運(yùn)算符)
????????+=? a+=b; ==> a=a+b;
????????-=
????????*= a*=b; ==> a=a*b;
????????/=
????????%=
推薦使用擴(kuò)展賦值運(yùn)算符,因?yàn)檫@樣執(zhí)行效率高.
????比較運(yùn)算符|關(guān)系運(yùn)算符
????????> ?< ?>= ?<=
? ??????????byte ? short ?int ?long ?float ?double ?char
????????== ? ?!=
? ??????????基本數(shù)據(jù)類型,引用數(shù)據(jù)類型
關(guān)系運(yùn)算符最終得到的結(jié)果 boolean類型的結(jié)果
????邏輯運(yùn)算符
& 與 ? ? ?一個(gè)false就是false,兩個(gè)都為true,才為true
|? 或 ? ? ?一個(gè)為true就是true,兩個(gè)都為false,才是false
!? 非 ? ? ? 取反? !true->false? !false->true
^? 亦或 ? ?相同為false,不同為true
短路: 如果第一個(gè)操作數(shù)就能夠決定最終的結(jié)果,第二個(gè)操作數(shù)位置不執(zhí)行
&& 短路與
|| 短路或
推薦使用短路內(nèi)容
所有的邏輯運(yùn)算符的操作數(shù)都為值為boolean類型的表達(dá)式
????條件運(yùn)算符
條件表達(dá)式 ? 值1 : 值2;
條件表達(dá)式:值為boolean類型的表達(dá)式
執(zhí)行流程:
????????1.條件表達(dá)式 ,最終會(huì)得到一個(gè)boolean結(jié)果
????????2.如果結(jié)果為true,整個(gè)條件表達(dá)式最終的結(jié)果為值1
????????3.如果結(jié)果為flase,最終結(jié)果為值2
條件運(yùn)算符最終肯定會(huì)得到一個(gè)結(jié)果
????位運(yùn)算符
先把操作數(shù)轉(zhuǎn)為二進(jìn)制,根據(jù)運(yùn)算符的邏輯進(jìn)行操作,最終得到的結(jié)果再轉(zhuǎn)為十進(jìn)制
& : 同一位置的兩個(gè)數(shù),如果一個(gè)為0就是0,兩個(gè)都為1才是1
| : 同一位置的兩個(gè)數(shù),如果一個(gè)為1就是1,兩個(gè)都為0才是0
^ : 同一位置的兩個(gè)數(shù),相同為0,不同為1
位移運(yùn)算符
<< 左移 第一個(gè)操作數(shù)轉(zhuǎn)為2進(jìn)制,第二個(gè)操作數(shù)是移動(dòng)位數(shù) ,向左移動(dòng)指定的位數(shù),空位補(bǔ)零
8<<2? 1000左移2位? 1000 00 -> 轉(zhuǎn)為十進(jìn)制 32
>> 右移 第一個(gè)操作數(shù)轉(zhuǎn)為2進(jìn)制,第二個(gè)操作數(shù)是移動(dòng)位數(shù) ,向右移動(dòng)指定的位數(shù),想象數(shù)據(jù)的右邊有一條分水線,右側(cè)的內(nèi)容砍掉,只保留左側(cè)的數(shù)據(jù),轉(zhuǎn)為十進(jìn)制
8>>2? 1000 右移2位? 10->轉(zhuǎn)為十進(jìn)制? 2
右移相當(dāng)于/2? ? 8>>3? 8/2^3
左移相當(dāng)于*2 8<<3? 8*2^3
位運(yùn)算符比直接使用* /效率高
2.Scanner
Scanner : 接收鍵盤輸入的內(nèi)容
使用步驟:
????????1.導(dǎo)包? import 導(dǎo)入 + 權(quán)限命名(報(bào)名+類名);
????????????????????位置: 類的上面導(dǎo)包
????????2.創(chuàng)建這個(gè)類型的引用
????????????????????Scanner sc=new Scanner(System.in);
????????3.使用功能:
? ? ? ? ? ? ? ? 引用.功能名字();
????????????????????sc.nextInt();? 接收用戶鍵盤輸入的整數(shù)類型的數(shù)據(jù)
????????????????????sc.nextLong();? 接收用戶鍵盤輸入的整數(shù)類型的數(shù)據(jù)
????????????????????sc.nextByte();? 接收用戶鍵盤輸入的整數(shù)類型的數(shù)據(jù)
????????????????????sc.nextShort();? 接收用戶鍵盤輸入的整數(shù)類型的數(shù)據(jù)
????????????????????sc.nextFloat();? 接收用戶鍵盤輸入的整數(shù)類型的數(shù)據(jù)
????????????????????sc.nextDouble();? 接收用戶鍵盤輸入的整數(shù)類型的數(shù)據(jù)
????????????????????sc.next()? 從有效字符開始接收,空格不算,接收用戶輸入的字符串內(nèi)容,知道遇到空格,tab,就接收不到數(shù)據(jù),但是功能沒有停止,遇到enter功能結(jié)束
????????????????????sc.nextLine() 接收一整行的數(shù)據(jù)
????????????????????從第一個(gè)字符開始接收,知道遇到enter結(jié)束
????????????????????系列next功能不能接收enter,遇到enter結(jié)束,nextLine可以接收enter
????????4.關(guān)閉
????????????????????引用.close()
關(guān)閉了之后就不能再次使用,就算是重新打開也不好用
3.Random
產(chǎn)生隨機(jī)數(shù)
1.導(dǎo)包? import java.util.Random;
2.創(chuàng)建類型的引用 Random ran=new Random();
3.使用功能:
引用.nextInt();? 產(chǎn)生一個(gè)int范圍內(nèi)的隨機(jī)整數(shù)
引用.nextInt(整數(shù)n);? 產(chǎn)生一個(gè) [0,n) 隨機(jī)整數(shù)
[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)之間的隨機(jī)小數(shù)
4.流程控制語句
順序結(jié)構(gòu): 從上到下從左到右
選擇結(jié)構(gòu): 滿足條件才能執(zhí)行
循環(huán)結(jié)構(gòu): 重復(fù)執(zhí)行某些代碼
選擇結(jié)構(gòu):
????????if ...else
????????switch
if else語句
if結(jié)構(gòu):
????????單選擇|單分支:
????????if(條件表達(dá)式){
????????????????????滿足條件才執(zhí)行的語句體;
????????????}
條件表達(dá)式:值為boolean類型的表達(dá)式
執(zhí)行流程:
1.執(zhí)行條件表達(dá)式,如果結(jié)果為true,就執(zhí)行語句體
2.如果結(jié)果為false,就跳過if結(jié)構(gòu)
雙選擇|雙分支:
if(條件表達(dá)式){
語句體1;
}else{
語句體2;
}
執(zhí)行流程:
1.執(zhí)行條件表達(dá)式,如果結(jié)果為true,就執(zhí)行語句體1
2.如果結(jié)果為false,就執(zhí)行語句體2
多選擇|多分支:
if(條件表達(dá)式1){
語句體1;
}else if(條件表達(dá)式2){
語句體2;
}
.....
else{
以上條件都不滿足,就執(zhí)行else中的內(nèi)容? 語句體n
}
執(zhí)行流程:
1.計(jì)算條件表達(dá)式1,如果結(jié)果為true,執(zhí)行語句體1,如果結(jié)果為false
2.執(zhí)行條件表達(dá)式2,如果結(jié)果為true,執(zhí)行語句體2,如果結(jié)果為false
....
如果以上條件都不滿足,執(zhí)行else中的語句體n
注意:如果語句體只有一句,前后的{}可以省略
如果一個(gè)if語句中如果存在接盤俠else,肯定有結(jié)果
if與條件運(yùn)算符之間的區(qū)別:
條件運(yùn)算符肯定有結(jié)果,if不一定
能使用條件運(yùn)算符的就推薦使用條件運(yùn)算符,結(jié)構(gòu)簡單,效率較高
switch語句
定值判斷 switch
區(qū)間判斷? if
能用switch肯定能用if,能用if的不一定能用switch
switch(表達(dá)式){
case 值1 :
語句體1;
break;
case 值2:
語句體2;
break;
case 值3:
語句體3;
break;
......
default:
以上值都不滿足,執(zhí)行default中的內(nèi)容
break;
}
表達(dá)式: 只能為byte,short,int,char,字符串(1.7),枚舉(1.5)
一般使用變量
case: case后的定值與表達(dá)式的結(jié)果進(jìn)行判斷是否相等,對(duì)應(yīng)執(zhí)行不同的語句體
break: 結(jié)束switch語句,如果沒有break,會(huì)發(fā)生case穿透,從現(xiàn)在執(zhí)行完的語句體開始,如果沒有break,下面的case無論是否相等,都會(huì)執(zhí)行對(duì)應(yīng)的語句體,直到遇到下一個(gè)break或者switch語句的結(jié)束而結(jié)束
default: 接盤俠,相當(dāng)于else,以上值都不滿足,執(zhí)行default中的內(nèi)容
可寫可不寫,default位置可以改變
執(zhí)行流程:
1.計(jì)算表達(dá)式
2.那值與case后的值比較是否相等,如果相等