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