核心知識(shí)學(xué)習(xí)記錄)
這周我開始了JAVA的學(xué)習(xí)。說(shuō)實(shí)話剛開始的時(shí)候我心里還挺沒(méi)底的畢竟 Java 這玩意兒聽起來(lái)就挺高大上什么虛擬機(jī)、垃圾回收、面向?qū)ο笠欢衙~砸過(guò)來(lái)感覺像是要學(xué)一門天書。不過(guò)因?yàn)橹皩W(xué)過(guò) C 語(yǔ)言所以上手的時(shí)候其實(shí)沒(méi)那么慌——像變量、數(shù)據(jù)類型、運(yùn)算符這些概念在 C 里都見過(guò)只是換了個(gè)寫法而已。而且說(shuō)實(shí)話C 語(yǔ)言當(dāng)年也沒(méi)少折磨我什么數(shù)組、內(nèi)存管理那叫一個(gè)頭大現(xiàn)在回頭看那些痛苦反而成了學(xué) Java 的底氣。不過(guò) Java 畢竟是面向?qū)ο蟮恼Z(yǔ)言很多細(xì)節(jié)和 C 還是不太一樣比如類型轉(zhuǎn)換的規(guī)則、字符串的拼接方式還有底層那些原碼反碼補(bǔ)碼的運(yùn)算都得重新捋一遍。有時(shí)候?qū)懼鴮懼矔?huì)卡殼查半天資料才發(fā)現(xiàn)原來(lái)是個(gè)小細(xì)節(jié)沒(méi)注意到那種感覺真是“酸爽”。下面這份筆記就是我最近整理出來(lái)的 Java 基礎(chǔ)核心知識(shí)從字面量、變量到原碼反碼補(bǔ)碼再到運(yùn)算符和 Scanner 錄入希望能幫到和我一樣正在入門路上的小伙伴。大家一起加油慢慢來(lái)總會(huì)啃下來(lái)的一、基礎(chǔ)語(yǔ)法字面量與變量這一節(jié)算是 Java 里最基礎(chǔ)的東西了說(shuō)白了就是先搞清楚“數(shù)據(jù)長(zhǎng)什么樣、怎么存起來(lái)”。1. 字面量Literals字面量這個(gè)詞聽起來(lái)挺唬人其實(shí)說(shuō)白了就是程序里直接寫出來(lái)的那些數(shù)據(jù)值比如你寫個(gè) 18寫個(gè) 中國(guó)這些都是字面量。不同類型的字面量寫法上還有點(diǎn)講究咱們看下面這張表就清楚了字面量類型說(shuō)明舉例整數(shù)類型直接寫18, -88小數(shù)類型直接寫加上小數(shù)點(diǎn)1.93, -5.21字符串類型用雙引號(hào)引起來(lái)中國(guó)字符類型用單引號(hào)引起來(lái)內(nèi)容只能有一個(gè)男, A, 0布爾類型表示真假true, false空類型一個(gè)特殊的值空值null這里有個(gè)小坑得提醒一下字符串和字符看著像其實(shí)完全不是一回事。字符串用雙引號(hào)里面可以裝一長(zhǎng)串字符用單引號(hào)里面只能放一個(gè)多一個(gè)都不行寫錯(cuò)了編譯器直接給你報(bào)錯(cuò)別問(wèn)我怎么知道的。2. 變量Variables變量這東西你可以把它想象成一個(gè)帶名字的小盒子里面可以放數(shù)據(jù)。為啥要有變量因?yàn)楹芏鄷r(shí)候數(shù)據(jù)是會(huì)變的你總不能每次都重新寫一遍吧那多麻煩。定義格式數(shù)據(jù)類型 變量名 數(shù)據(jù)值;使用場(chǎng)景當(dāng)某個(gè)數(shù)據(jù)經(jīng)常發(fā)生改變時(shí)將其定義為變量。注意事項(xiàng)變量中只能存一個(gè)值變量名不能重復(fù)。變量使用前一定要賦值初始化。一條語(yǔ)句可以定義多個(gè)變量如 int a 1, b 2;。注意變量名別亂起最好起個(gè)能看懂的名字不然過(guò)兩天你自己回頭看代碼都得猜半天這變量是干嘛的。二、數(shù)據(jù)類型與標(biāo)識(shí)符1. 計(jì)算機(jī)存儲(chǔ)規(guī)則在計(jì)算機(jī)中任意數(shù)據(jù)都是以二進(jìn)制的形式來(lái)存儲(chǔ)的。字節(jié)Byte是計(jì)算機(jī)最小的存儲(chǔ)單元1個(gè)字節(jié) 8個(gè)bit位bits。在 Java 中int 類型占 4個(gè)字節(jié) / 32個(gè)bit位。2. 基本數(shù)據(jù)類型四類八種整數(shù)byte1字節(jié)short2字節(jié)int4字節(jié)long8字節(jié)小數(shù)float4字節(jié)double8字節(jié)字符char2字節(jié)布爾boolean1字節(jié)取值范圍大小關(guān)系double float long int short byte后綴說(shuō)明定義 long 類型需加 L 后綴定義 float 類型需加 F 后綴。3. 標(biāo)識(shí)符標(biāo)識(shí)符就是代碼中所有我們自己起名的名字如類名、變量名。硬性要求由數(shù)字、字母、下劃線 _、美元符 $ 組成不能以數(shù)字開頭不能是 Java 關(guān)鍵字。三、計(jì)算機(jī)底層數(shù)據(jù)表示原碼、反碼與補(bǔ)碼在 Java及現(xiàn)代計(jì)算機(jī)中整數(shù)的運(yùn)算在底層都是以補(bǔ)碼的形式進(jìn)行的。理解這三者是理解計(jì)算機(jī)處理負(fù)數(shù)運(yùn)算的關(guān)鍵。1. 原碼最直觀的二進(jìn)制形式。最高位是符號(hào)位0正1負(fù)。弊端負(fù)數(shù)計(jì)算時(shí)結(jié)果會(huì)出錯(cuò)運(yùn)算方向與正確方向相反。2. 反碼為了解決原碼不能計(jì)算負(fù)數(shù)的問(wèn)題。正數(shù)反碼不變負(fù)數(shù)反碼在原碼基礎(chǔ)上符號(hào)位不變數(shù)值位取反0變11變0。弊端負(fù)數(shù)運(yùn)算時(shí)如果結(jié)果跨越了 0結(jié)果會(huì)與實(shí)際不符。3. 補(bǔ)碼徹底解決跨 0 運(yùn)算出錯(cuò)的問(wèn)題。計(jì)算機(jī)底層存儲(chǔ)和運(yùn)算統(tǒng)一使用補(bǔ)碼。正數(shù)補(bǔ)碼與原碼相同負(fù)數(shù)補(bǔ)碼 反碼 1。四、運(yùn)算符與類型轉(zhuǎn)換1. 類型轉(zhuǎn)換隱式轉(zhuǎn)換小 - 大不同類型數(shù)據(jù)計(jì)算時(shí)Java 自動(dòng)轉(zhuǎn)換。如有 byte/short 先提升為 int再將取值范圍小的提升為大的。強(qiáng)制轉(zhuǎn)換大 - 小需要顯式寫代碼弊端有可能導(dǎo)致精度丟失。2. 字符與字符串運(yùn)算ASCII 碼字符參與算術(shù)運(yùn)算時(shí)會(huì)先根據(jù) ASCII 碼表轉(zhuǎn)化為對(duì)應(yīng)的整數(shù)如 A 是 65a 是 97。字符串運(yùn)算字符串只有 操作。任意數(shù)據(jù) 字符串都是拼接操作并產(chǎn)生一個(gè)新的字符串。例如10 8 歲 1 2 的結(jié)果是 18歲12。3. 常見運(yùn)算符算術(shù)運(yùn)算符, -, *, /, %取余。賦值運(yùn)算符, , - 等。三元運(yùn)算符關(guān)系表達(dá)式 ? 表達(dá)式1 : 表達(dá)式2;。表達(dá)式成立執(zhí)行1不成立執(zhí)行2。優(yōu)先級(jí)括號(hào) () 最高其次是 !、正負(fù)號(hào)再次是 * / %然后是加減最后是關(guān)系、邏輯運(yùn)算符等。五、鍵盤錄入Scanner使用 Scanner 類可以接收鍵盤輸入的數(shù)據(jù)import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner sc new Scanner(System.in); // 1. 創(chuàng)建對(duì)象 // 2. 接收數(shù)據(jù) // int num sc.nextInt(); // 接收整數(shù) // double d sc.nextDouble(); // 接收小數(shù) String str sc.next(); // 接收字符串 } }*下周學(xué)習(xí)目標(biāo)邏輯與結(jié)構(gòu)從下周開始我將告別單一的語(yǔ)法零件開始學(xué)習(xí)如何讓程序思考和動(dòng)起來(lái)。目標(biāo)一流程控制語(yǔ)句掌握 if、switch 判斷語(yǔ)句和 for、while 循環(huán)語(yǔ)句。學(xué)會(huì)使用 break 和 continue 控制流程。目標(biāo)二數(shù)組掌握數(shù)組的初始化、遍歷和常見操作。理解數(shù)組的內(nèi)存原理學(xué)會(huì)處理越界、空指針等異常。目標(biāo)三方法理解方法的作用掌握方法的定義與調(diào)用。掌握帶參數(shù)、帶返回值的方法。學(xué)習(xí)注意下周內(nèi)容邏輯性強(qiáng)多畫流程圖多敲代碼。遇到報(bào)錯(cuò)不要慌學(xué)會(huì)看控制臺(tái)的報(bào)錯(cuò)信息。祝大家學(xué)習(xí)順利