一拥诡、基礎(chǔ)綱要:
運(yùn)算符
1.賦值運(yùn)算符
?????? ?????? 1.1基本賦值運(yùn)算符: =?? java中唯一個自右向左運(yùn)算的符號
????????????? 1.2擴(kuò)展賦值運(yùn)算符:+=? -=? *= /= %=?????????????
????????????? 1.3:優(yōu)缺點(diǎn)
????????????? ?????? 缺點(diǎn):
??????????????????????????? 不直觀
???????????????????? 優(yōu)點(diǎn):
??????????????????????????? 自動做強(qiáng)制類型轉(zhuǎn)換
??????????????????????????? 提高執(zhí)行效率
???????????????????? 推薦使用擴(kuò)展賦值運(yùn)算符
2.比較運(yùn)算符|關(guān)系運(yùn)算符:>?<?? >=? <=? ==!=
????????????? 2.1結(jié)果是boolean類型的值???????????
????????????? ?????? byte?short? int? long??float? double? char
????????????? 2.2可以做基本數(shù)據(jù)類型的比較,可以做引用數(shù)據(jù)類型的比較
浮點(diǎn)數(shù)參與運(yùn)算結(jié)果可能不準(zhǔn)確
3.邏輯運(yùn)算符 & | 触趴!^????????????
短路 如果左邊的操作的值就能決定最終整個表達(dá)式的結(jié)果,右面的表達(dá)式就不在執(zhí)行
????????????? &&? 兩個操作數(shù)都是true才是true,一個為false結(jié)果就為false
????????????? ||? 一個為true就是true,兩個都為false才為false???????
????????????? 推薦使用短路與短路或
4.條件運(yùn)算符 | 三目| 三元???????
????????????? 條件表達(dá)式 ? 值1 : 值2 ;????????
????????????? 執(zhí)行流程:
???????????????????? 4.1.先執(zhí)行條件表達(dá)式? -->值為boolean類型的表達(dá)式
???????????????????? 4.2.如果結(jié)果為true, 最終結(jié)果取值1
???????????????????? 4.3.如果結(jié)果為false,最終結(jié)果取值2
5.位運(yùn)算符
????????????? &二進(jìn)制的兩個數(shù),同一位置的值,進(jìn)行邏輯判斷,兩個值如果有一個為0就位0,兩個值都是1才是1
????????????? |同一位置的兩個數(shù),如果有一個為1就是1,兩個都是0才是0
????????????? ^同一位置的兩個數(shù),如果相同為0,不同為1????????
6.運(yùn)算符的優(yōu)先級 :
????????????? 單目算數(shù)位關(guān)系,邏輯三目后賦值
兩個常用類
1.使用引用數(shù)據(jù)類型的方式
????????????? 1.1創(chuàng)建引用數(shù)據(jù)類型的變量|引用
???????????????????? 引用數(shù)據(jù)類型變量名|引用 = new 引用數(shù)據(jù)類型(); --公式?
????????????? 1.2使用功能
???????????????????? ?????? 引用.功能名字();??
?????? 2.Scanner:
????????????? 2.1導(dǎo)包 import 相對地址;
???????????????????? 提供類Scanner的位置
???????????????????? 位置:類的上面導(dǎo)包
????????????? 2.2創(chuàng)建Scanner類型的引用
????????????? 2.3使用:功能名字();
???????????????????? nextInt();? 接收用戶輸入的int類型整數(shù)
???????????????????? nextByte();? 接收用戶輸入的byte類型整數(shù)
???????????????????? nextShort();? 接收用戶輸入的Short類型整數(shù)
???????????????????? nextLong();? 接收用戶輸入的Long類型整數(shù)
???????????????????? nextDouble();? 接收用戶輸入的Double類型整數(shù)
???????????????????? nextFloat();? 接收用戶輸入的Float類型整數(shù)
???????????????????? next();接收用戶輸入的String類型數(shù)據(jù)
??????????????????????????? 有效字符開始接收,遇到空格停止接收氮发,遇到enter停止功能
???????????????????? nextLine();接收用戶輸入的一整行的內(nèi)容
??????????????????????????? 從第一個位置開始接收,遇到enter結(jié)束
????????????? close();一定要在用完之后關(guān)閉,否則當(dāng)前類中重新開啟也不能用
注意:nextLine()功能之前如果存在系列的next功能.需要處理遺留在緩沖區(qū)的enter
2.4字符串比較是否相等?? 字符串1.equals(字符串2)?
3.Random 類? 產(chǎn)生隨機(jī)數(shù)
????????????? 3.1導(dǎo)包 java.util.Random
????????????? 3.2創(chuàng)建類型的引用? Random
????????????? 3.3使用功能
???????????????????? 產(chǎn)生隨機(jī)整數(shù)
??????????????????????????? nextInt()?? --> int范圍內(nèi)的隨機(jī)整數(shù)
??????????????????????????? nextInt(n)? -->隨機(jī)產(chǎn)生 [0,n) 隨機(jī)整數(shù)
??????????????????????????? n只能決定最大范圍
???????????????????? 產(chǎn)生隨機(jī)小數(shù)
??????????????????????????? nextDouble()[0.0,1.0)隨機(jī)小數(shù)?
?????? 注意:?????????
????????????? 偽隨機(jī)數(shù)?????????????
????????????? 常用公式:????????????
???????????????????? [min,max]引用.nextInt(max-min+1)+min;
控制語句
?????? 1.分類:
????????????? 順序結(jié)構(gòu) : 默認(rèn) 從上到下?從左到右
????????????? 選擇結(jié)構(gòu) : 根據(jù)某些條件執(zhí)行不同的代碼
????????????? 循環(huán)結(jié)構(gòu) : 重復(fù)執(zhí)行一些代碼
?????? 2.選擇結(jié)構(gòu):
???????????????????? if..else
???????????????????? switch??????????
2.1 if ..else
2.1.1單分支|單選擇
???????????????????? if(條件表達(dá)式){
??????????????????????????? 語句體...
???????????????????? }????????????
???????????????????? 條件表達(dá)式:值為boolean類型的表達(dá)式
???????????????????? 執(zhí)行流程:
??????????????????????????? 計算條件表達(dá)式的結(jié)果
??????????????????????????? 如果false,就跳過if結(jié)構(gòu),繼續(xù)向下執(zhí)行
??????????????????????????? 如果為true,執(zhí)行{}中的語句體?????????????????
????????????? ?????? 2.1.2雙分支|雙選擇
???????????????????? if(條件表達(dá)式){
??????????????????????????? 語句體1...
???????????????????? }else{
??????????????????????????? 語句體2
???????????????????? }
???????????????????? 如果條件滿足執(zhí)行語句體1,條件不滿足執(zhí)行語句體2
????????????? ?????? 2.1.3多選擇|多分支
???????????????????? if(條件表達(dá)式1){
??????????????????????????? 語句體1...
???????????????????? }else if(條件表達(dá)式2){
??????????????????????????? 語句體2...
???????????????????? }else if(條件表達(dá)式3){
??????????????????????????? 語句體3
???????????????????? }else{
??????????????????????????? 語句體n;
???????????????????? }
???????????????????? 執(zhí)行流程:
??????????????????????????? 1.先執(zhí)行條件表達(dá)式1,如果為true,執(zhí)行語句體1
??????????????????????????? 2.如果為false,計算條件表達(dá)式2,如果為true,執(zhí)行語句體2
??????????????????????????? 3.如果為false,計算條件表達(dá)式3,如果為true,執(zhí)行語句體3
??????????????????????????? 4....
??????????????????????????? 5.如果以上條件都不滿足,執(zhí)行else中的語句體n???????????????????????
????????????? ?????? 注意:語句體前后的{}可以省略,語句體只有一句的時候可以省略
2.2.switch? 定值判斷??
????????????? switch(表達(dá)式){
???????????????????? case值1:
??????????????????????????? 語句體1;
??????????????????????????? break;
???????????????????? case值2:
??????????????????????????? 語句體2;
??????????????????????????? break;
??????????????????????????? ....
???????????????????? default:
??????????????????????????? 語句體n;
??????????????????????????? break;
????????????? }
????????????? 表達(dá)式:byte,short,int,char , 枚舉(1.5),字符串(1.7)這幾種類型的值
????????????? case: case后面接的值是與表達(dá)式進(jìn)行判斷,必須是一個值,不能是區(qū)間
????????????? break:防止case穿透 結(jié)束switch語句
case穿透:從滿足條件的語句體開始執(zhí)行,如果遇到break結(jié)束switch,如果沒有break下面的case不再判斷直接執(zhí)行語句體
????????????? default:默認(rèn)的,相當(dāng)于else,如果以上都不滿足,就執(zhí)行default中的內(nèi)容
???????????????????? default位置可以改變???????????????
?????? 2.3.if與switch之間的區(qū)別
????????????? if可以做區(qū)間判斷
????????????? switch定值判斷
????????????? 能用switch都可以用if?能用if的不一定能用switch
3.循環(huán):重復(fù)執(zhí)行一些代碼
?????? ?????? for
????????????? while
????????????? do...while
?????? ?????? for循環(huán)
???????????????????? for(條件初始化;條件判斷;條件變化 ){
??????????????????????????? 循環(huán)體語句;
???????????????????? }
???????????????????? 執(zhí)行流程:
??????????????????????????? 1.先執(zhí)行條件初始化? 聲明一個變量并且賦值 i
??????????????????????????? 2.條件判斷?? 對i進(jìn)行判斷?? 值為boolean類型的表達(dá)式
?????????????????????????????????? 如果值為false,for循環(huán)結(jié)構(gòu)結(jié)束,如果值為true,執(zhí)行循環(huán)體語句
??????????????????????????? 3.條件變化
??????????????????????????? 重復(fù)執(zhí)行2,3步?????????????????
???????????????????? 注意:在循環(huán)體語句中可以使用i的值??
??????????????????????????? ?變量i可以決定循環(huán)執(zhí)行的次數(shù)
二爽冕、拓展
?位運(yùn)算:左右移和符號位
位移運(yùn)算符
???????????????????? >>>無符號右移/2^n
?????? 將運(yùn)算符左邊的對象向右移動右側(cè)指定的位數(shù),在高位補(bǔ)上0披蕉;
>>? (有符號)右移?
?????? 將運(yùn)算符左邊的對象向右移動右側(cè)指定的位數(shù)颈畸,值為正,高位補(bǔ)0没讲,值為負(fù)眯娱,高位補(bǔ)1; ? ? ? ? ??
<<? 左移*2^n
?將運(yùn)算符左邊的對象向左移動右側(cè)指定的位數(shù)食零,在低位補(bǔ)上0 ?
float和double類型數(shù)據(jù)在內(nèi)存中的存儲方式
1.浮點(diǎn)數(shù):
計算機(jī)中有兩種表示實(shí)數(shù)的方法:定點(diǎn)表示和浮點(diǎn)表示
定點(diǎn)數(shù):小數(shù)位數(shù)固定于某個位置困乒,這種方式的整數(shù)和小數(shù)部分的表示形式和普通整數(shù)的表示形式?jīng)]有什么區(qū)別
浮點(diǎn)數(shù):小數(shù)點(diǎn)位置可以浮動的數(shù)據(jù),以科學(xué)技術(shù)法的形式表示
2.表示形式:
N=M*R^E贰谣;
N為浮點(diǎn)數(shù)娜搂,M為尾數(shù)(mantissa),E為階碼(exponent)吱抚,R為階的基數(shù)百宇,也就是底數(shù),計算機(jī)里的底數(shù)不會是10的秘豹,一般是2携御、8、16既绕。在一臺計算機(jī)里啄刹,所有數(shù)據(jù)中的R是確定,并且相同的凄贩。
3.在計算機(jī)內(nèi)的形式:MS? E ?? M
MS為符號位
如單精度浮點(diǎn)數(shù)(32位)誓军,符號位占1位,階碼8位疲扎,尾數(shù)23位
4.舉例:單精度浮點(diǎn)數(shù)3.75
(1) 首先轉(zhuǎn)化為2進(jìn)制表示 ?3.75=?(2+1+1/2+1/4)=?1.111×21?3.75=?(2+1+1/2+1/4)=?1.111×21?
(2) 整理符號位并進(jìn)行規(guī)格化表示 ?1.111×21=(?1)(1)×(1+0.1110 0000 0000 0000 0000 000)×21?1.111×21=(?1)(1)×(1+0.1110 0000 0000 0000 0000 000)×21
?(3) 進(jìn)行階碼的移碼處理 (?1)(1)×(1+0.1110 0000 0000 0000 0000 000)×21(?1)(1)×(1+0.1110 0000 0000 0000 0000 000)×21 =(?1)(1)×(1+0.1110 0000 0000 0000 0000 000)×2128?127=(?1)(1)×(1+0.1110 0000 0000 0000 0000 000)×2128?127?
于是昵时,符號位S=1,尾數(shù)M為1110 0000 0000 0000 0000 0001110 0000 0000 0000 0000 000
階碼E為12810=1000 0000212810=1000 00002,
則最終的32位單精度浮點(diǎn)數(shù)為 1 1110 0000 0000 0000 0000 000 1000 0000?
--------------------- 作者:shuzfan 來源:CSDN 原文:https://blog.csdn.net/shuzfan/article/details/53814424?
5.有效位數(shù)
2^-23=0.00000011920928955078125
2^-22=0.0000002384185791015625
因此0.0000001和0.0000002之間的小數(shù)是沒辦法精確描述的椒丧,因此一般說float精確到小數(shù)點(diǎn)后第七位