Java基礎(chǔ)知識點

本文屬xxKarina原創(chuàng)记焊,轉(zhuǎn)載請注明
個人博客地址:
https://xxkarina.github.io/

不知道為什么袱讹,最近很喜歡Java這門語言面睛,個人認(rèn)為,學(xué)習(xí)一門編程語言该镣,扎實的基礎(chǔ)是相當(dāng)重要的冻璃,所以在這里,我想跟大家分享一下我掌握的知識點

嗯损合,不說大家都知道省艳,Java是一門兼容性很好的語言,跨平臺支持的很好嫁审,比較常用的有LinuxWindows跋炕,所以首先,我將會跟大家分享以下兩者的區(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ū)分

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敞映,一起剝皮案震驚了整個濱河市较曼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌振愿,老刑警劉巖捷犹,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異冕末,居然都是意外死亡萍歉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門档桃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枪孩,“玉大人,你說我怎么就攤上這事∶镂瑁” “怎么了拒担?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長斗幼。 經(jīng)常有香客問我澎蛛,道長,這世上最難降的妖魔是什么蜕窿? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任谋逻,我火速辦了婚禮,結(jié)果婚禮上桐经,老公的妹妹穿的比我還像新娘毁兆。我一直安慰自己,他們只是感情好阴挣,可當(dāng)我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布气堕。 她就那樣靜靜地躺著,像睡著了一般畔咧。 火紅的嫁衣襯著肌膚如雪茎芭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天誓沸,我揣著相機與錄音梅桩,去河邊找鬼。 笑死拜隧,一個胖子當(dāng)著我的面吹牛宿百,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播洪添,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼垦页,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了干奢?” 一聲冷哼從身側(cè)響起痊焊,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎律胀,沒想到半個月后宋光,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡炭菌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了逛漫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片黑低。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出克握,到底是詐尸還是另有隱情蕾管,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布菩暗,位于F島的核電站掰曾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏停团。R本人自食惡果不足惜旷坦,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望佑稠。 院中可真熱鬧秒梅,春花似錦、人聲如沸舌胶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幔嫂。三九已至辆它,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間履恩,已是汗流浹背锰茉。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留似袁,地道東北人洞辣。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像昙衅,于是被迫代替她去往敵國和親扬霜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1 一個Java源程序是由若干個類組成而涉。 2 class 是Java的關(guān)鍵字著瓶,用來定義類。 3 Java應(yīng)用程序中...
    少帥yangjie閱讀 2,399評論 1 8
  • Java基本語法: __1啼县、標(biāo)識符 Java出現(xiàn)的名稱 如源文件名 類名 變量名 方法名 __ 命名規(guī)范(見名知意...
    八怪不姓丑閱讀 1,835評論 8 35
  • 一:java概述:1材原,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境季眷,java的開發(fā)工...
    ZaneInTheSun閱讀 2,661評論 0 11
  • 從三月份找實習(xí)到現(xiàn)在余蟹,面了一些公司,掛了不少子刮,但最終還是拿到小米威酒、百度窑睁、阿里、京東葵孤、新浪担钮、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,275評論 11 349
  • 早上躺在床上尤仍,沒了睡意箫津,也不想起來,便閉起眼睛慢慢發(fā)呆宰啦。不知覺想起了一些多年前快要被遺忘的記憶苏遥。都是些極瑣碎的小事...
    息有狐閱讀 269評論 0 3