本文屬xxKarina原創(chuàng)记焊,轉(zhuǎn)載請注明
個人博客地址:
https://xxkarina.github.io/
不知道為什么袱讹,最近很喜歡Java這門語言面睛,個人認(rèn)為,學(xué)習(xí)一門編程語言该镣,扎實的基礎(chǔ)是相當(dāng)重要的冻璃,所以在這里,我想跟大家分享一下我掌握的知識點
嗯损合,不說大家都知道省艳,Java是一門兼容性很好的語言,跨平臺支持的很好嫁审,比較常用的有Linux
和Windows
跋炕,所以首先,我將會跟大家分享以下兩者的區(qū)別
Linux與Windows的區(qū)別
Linux是一個開源的操作系統(tǒng)律适,與Windows有三大不同點:
- 文件系統(tǒng)不同:Windows是盤符辐烂,Linux是目錄
- 外部設(shè)備映射不同: Windows是盤符遏插,Linux是掛載點(目錄)
- 安全級別不同: Windows安全級別低,Linux安全級別高纠修,因為是服務(wù)端系統(tǒng) /home——具有最高權(quán)限
c語言和Java的區(qū)別
而對于c語言和Java的區(qū)別的話胳嘲,主要就是在編譯過程
- c文件,編譯扣草,直接編譯為可執(zhí)行文件(0了牛,1)
-
java文件,編譯辰妙,字節(jié)碼文件(
.class
)鹰祸,jvm
(不同平臺有不同的JVM)運行字節(jié)碼文件,計算機識別(0密浑,1)
JDK蛙婴、JRE、JVM
上面提到了JVM(Java虛擬機)尔破,那我們就來看下JDK街图、JRE、JVM三者的關(guān)系
- JDK - Java開發(fā)工具包
- JRE- Java運行環(huán)境
- JVM - Java虛擬機
三者的區(qū)別可以用一句話進(jìn)行概括:運行一個Java程序所需要的最小環(huán)境是 JRE呆瞻,開發(fā)一個Java的最小環(huán)境是JDK台夺,加載字節(jié)碼文件径玖,實現(xiàn)跨平臺需要用到JVM
環(huán)境
說到環(huán)境這個詞痴脾,我就不得不說一下Java的IDE(集成開發(fā)環(huán)境)eclipse,這是一款主流的Java開發(fā)環(huán)境梳星,代碼提示赞赖,搭建目錄結(jié)構(gòu)等等,都是十分贊的冤灾,推薦使用
eclipse常用的快捷鍵前域,我這里想跟大家分享一些:
- 輸入main的時候,然后就使用Alt+/之后就可以出現(xiàn)代碼提示
- Alt+/是比較常用的一個代碼提示快捷鍵(可以完成一些代碼的插入)
- CTRL+1(快速修復(fù))就是可以快速查看錯誤并且快速修復(fù)
- Shift+Enter(當(dāng)前行下插入一個空行韵吨,不限位置)
- ctrl+shift+enter(當(dāng)前行上插入一個空行)
- ctrl+d刪除當(dāng)前行
- Alt+上下鍵匿垄,可以交換語句的位置
- ctrl+alt+上下鍵可以快速的復(fù)制一行,當(dāng)時有時候會和電腦自帶的快捷鍵沖突
- 所以需要自定義一下归粉,改為ctrl+上下鍵
- ctrl+shift+f(格式化當(dāng)前代碼)
- ctrl+f(查找與替換)
- ctrl+shift+x(把當(dāng)前選中的文本全部變成小寫)
- ctrl+shift+y(把當(dāng)前選中的文本全部變成大寫)
- ctrl+/(注釋或取消注釋當(dāng)前行)
- ctrl+shift+/(注釋多行)
- ctrl+shift+(解除多行注釋)
命名
有了環(huán)境之后就可以開始搭建我們的目錄結(jié)構(gòu)了椿疗,搭建目錄結(jié)構(gòu)就需要使用到命名操作,在一門編程語言中糠悼,命名是對團隊合作的十分重要的一步届榄,一個好的命名可以給開發(fā)帶來極大的便利
變量的命名其實比較基礎(chǔ)的就是要做到“見名知意”,變量的命名采用駝峰式命名法倔喂,類名的首字母大寫铝条,命名之后就需要聲明變量和初始化變量靖苇,凡事都是需要先有了才可以對其進(jìn)行操作,變量也是一樣班缰,需要在使用前進(jìn)行初始化贤壁,而且必須與數(shù)據(jù)類型相匹配。
還需要注意的一點是:默認(rèn)的整數(shù)會杯認(rèn)為是int類型埠忘,默認(rèn)的小數(shù)是double型
整型直接量可以直接賦值給byte,char,short,byte,char,short只要參與運算芯砸,則一律轉(zhuǎn)為int
分支結(jié)構(gòu)
分支結(jié)構(gòu)有:if語句,if else語句给梅,else if 語句假丧,switch case語句
需要注意的是:在Java中,存在變量的作用域
變量的作用于就是從變量聲明到包含這個變量的最近的大括號結(jié)束
當(dāng)作用范圍重疊時动羽,變量不能重名
除了分支結(jié)構(gòu)包帚,我們經(jīng)常使用的還有循環(huán),所謂循環(huán)就是:一組相同或相似的語句被有規(guī)律的重復(fù)性執(zhí)行
對于循環(huán)运吓,我們需要做到的三點是:
循環(huán)三要素:
1.循環(huán)條件初始化
2.循環(huán)條件(以循環(huán)變量為條件)
3.循環(huán)變量的改變(向著循環(huán)結(jié)束變)——在循環(huán)過程中改變的量就是循環(huán)變量
這里渴邦,我想用一道經(jīng)典的題來進(jìn)行講解:
//題目如下:用編程實現(xiàn)9+99+999+...+99..9(十個九),并且輸出運算結(jié)果
//題目分析如下:
//設(shè)num為每次加的那個數(shù)拘哨,可以看到谋梭,當(dāng)
/**
* i=1 num=9
* i=2 num=99
* i=3 num=999
* i=4 num=9999
*/
/**
* 9到99 9*10+9
* 99到999 99*10+9
* 999到9999 999*10+9
*/
// 有了以上的規(guī)律,編寫程序就不是什么難事啦
我們知道倦青,循環(huán)常用的有三種:當(dāng)?shù)叫脱h(huán)(while)瓮床,直到型循環(huán)(do-while),for循環(huán)
那面對這三種我們應(yīng)該怎么選用呢产镐,請看下面幾點:
- 如果題目中出現(xiàn)“當(dāng)”這個字眼的話隘庄,一般我們會選用當(dāng)?shù)叫脱h(huán)
- 如果題目中出現(xiàn)“直到”這個字眼的話,我們一般使用直到型循環(huán)
- 如果題目給出的了固定的循環(huán)次數(shù)癣亚,我們可以選用for循環(huán)
上面的三點看起來可能十分不起眼丑掺,那我們現(xiàn)在就來實戰(zhàn)演練一下:
題目:有數(shù)列2/3、4/5述雾、6/9街州、10/15……求此數(shù)列前30項的和
分析:對于數(shù)列的題,首先要找出通項公式玻孟,或前后項的計算關(guān)系公式唆缴,根據(jù)公式求所需。由于數(shù)列的題一般執(zhí)行次數(shù)能確定取募,用for
循環(huán)語句來編寫比較方便
題目:年存款利率為3%琐谤,本金為10000,存款總額超過20000時玩敏,求具體的收益
分析:對于這類型的題斗忌,其實隱含了”當(dāng)“字质礼,當(dāng)存款總額超過20000時,求具體的收益织阳。用while
循環(huán)語句來編寫比較方便
數(shù)據(jù)結(jié)構(gòu)
前面我們一直在說編寫程序眶蕉,那程序到底是什么呢,簡單的說唧躲,程序是由算法和數(shù)據(jù)結(jié)構(gòu)組成的造挽,以上的分支結(jié)構(gòu)和循環(huán)都是流程問題亦即算法問題,所謂的數(shù)據(jù)結(jié)構(gòu)就是把數(shù)據(jù)按照某種特定的結(jié)構(gòu)來保存弄痹,設(shè)計合理的數(shù)據(jù)結(jié)構(gòu)是十分重要的饭入,數(shù)組就是一種基本的數(shù)據(jù)結(jié)構(gòu)
數(shù)組:相同的數(shù)據(jù)類型的元素組成的集合就是數(shù)組
數(shù)組的聲明有多種方式,常用的如下:
int[] arr = new int[4];
int [] arr = {1,2,3};
int[] arr;
arr = new int[4];
int[] arr = new int[]{1,2,3};
數(shù)組也有很多實用的API肛真,具體的谐丢,大家可以查閱相關(guān)的文檔
方法
方法用于封裝特定邏輯功能,盡可能獨立蚓让,可以被反復(fù)調(diào)用乾忱,減少代碼輸出
方法定義五要素
- 修飾詞
- 返回值類型
- 方法名
- 參數(shù)列表
- 方法體
方法的參數(shù)可有可無,有參數(shù)更加靈活
當(dāng)方法需要返回結(jié)果時历极,設(shè)置特定返回值類型窄瘟,不需要結(jié)果的時候,為void
返回結(jié)果通過return 關(guān)鍵字趟卸,return 后的數(shù)據(jù)必須和返回值的類型匹配
類——面向?qū)ο?/h4>
我們看到的東西其實都可以稱之為對象蹄葱,將對象抽象出來,就有了類
類是一種數(shù)據(jù)類型
類中只能包含:屬性(變量)和行為(方法)
一個類可以創(chuàng)建多個對象
同一個類的多個對象衰腌,結(jié)構(gòu)相同新蟆,數(shù)據(jù)不同
將類實例化,我們可以使用new
new 出來的東西在堆里面右蕊,其余在棧里面
成員變量都是在堆里面的
局部變量在棧里面
成員變量在創(chuàng)建對象時存在,對象被回收時消失
垃圾回收器不定時回收沒有引用指向的對象吮螺,回收過程透明
自動調(diào)用方式:System.gc()
內(nèi)存泄漏是由于不再使用的對象未被及時回收
建議饶囚,對象不用時,對象及時賦值為null(空鸠补,沒有指向?qū)ο螅?/p>
講到類就脫不了方法萝风,講到方法,就不得不提及下方法的重載紫岩,講到方法的重載就需要知道方法的簽名
方法的簽名:就是方法名和參數(shù)列表
一個類中不可以有兩個方法的簽名完全相同规惰,那重載(overload)指代的就是方法的簽名不同(方法名相同,參數(shù)不同)
一個類中泉蝌,經(jīng)常見到的不外乎構(gòu)造方法歇万,而揩晴,構(gòu)造方法是可以重載的
那構(gòu)造方法是什么呢,有什么作用呢贪磺,一般用來做什么呢
- 構(gòu)造方法與類同名硫兰,沒有返回值類型
- 構(gòu)造方法常常用于給成員變量初始化
- 構(gòu)造方法是在創(chuàng)建對象時被自動調(diào)用
- 編輯器會在沒有顯示指明構(gòu)造方法的情況下,默認(rèn)給出一個無參數(shù)的構(gòu)造方法
我們知道寒锚,類是需要實例化之后才可以使用的劫映,那實例化出來的那么多個對象在使用的時候怎么區(qū)分呢,于是我們就有了this
刹前,但是泳赋,需要注意的是,這個不是指針
Java 沒有指針喇喉,沒有二維數(shù)組(叫做數(shù)組的數(shù)組)
this
在這里只是一個簡單的指向作用摹蘑,誰調(diào)用它,就指向誰
幀棧和方法區(qū)
有調(diào)用就會有存儲轧飞,存儲主要有兩個(幀棧和方法區(qū))
在Java中衅鹿,調(diào)用一個方法就會得到一個“幀棧”过咬,幀棧中存儲的就是局部變量大渤,方法調(diào)用結(jié)束之后,幀棧就消失掸绞,局部變量也會跟著相應(yīng)的消失
相應(yīng)的還有方法區(qū):方法區(qū)用于存放類的信息泵三,Java程序運行時,首先啊會通過類裝載器載入類文件的字節(jié)碼信息衔掸,經(jīng)過解析后將其裝入方法區(qū)烫幕,類的各種信息都在方法區(qū)存儲
所以簡單的總結(jié)一下就是
方法區(qū):存儲類的信息(.class及方法)
方法只有一個,通過this關(guān)鍵字區(qū)分