java語(yǔ)言基礎(chǔ)一(JavaGuide-20181212)

  1. 面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別
    面向過(guò)程
    面向?qū)ο?/li>
  2. Java 語(yǔ)言有哪些特點(diǎn)
  3. 什么是 JDK 什么是 JRE 什么是 JVM 三者之間的聯(lián)系與區(qū)別
  4. 什么是字節(jié)碼 采用字節(jié)碼的最大好處是什么
    先看下 java 中的編譯器和解釋器:
    采用字節(jié)碼的好處:
  5. Java和C++的區(qū)別
  6. 什么是 Java 程序的主類 應(yīng)用程序和小程序的主類有何不同
  7. Java 應(yīng)用程序與小程序之間有那些差別
  8. 字符型常量和字符串常量的區(qū)別
  9. 構(gòu)造器 Constructor 是否可被 override
  10. 重載和重寫(xiě)的區(qū)別
  11. Java 面向?qū)ο缶幊倘筇匦?封裝泄鹏、繼承、多態(tài)
    封裝
    繼承
    多態(tài)

1. 面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別

面向過(guò)程

優(yōu)點(diǎn): 性能比面向?qū)ο蟾呦ィ驗(yàn)轭愓{(diào)用時(shí)需要實(shí)例化像吻,開(kāi)銷比較大岭佳,比較消耗資源;比如單片機(jī)炕桨、嵌入式開(kāi)發(fā)、Linux/Unix等一般采用面向過(guò)程開(kāi)發(fā)春寿,性能是最重要的因素光坝。

缺點(diǎn): 沒(méi)有面向?qū)ο笠拙S護(hù)尸诽、易復(fù)用、易擴(kuò)展

面向?qū)ο?/h3>

優(yōu)點(diǎn): 易維護(hù)教馆、易復(fù)用逊谋、易擴(kuò)展,由于面向?qū)ο笥蟹庋b土铺、繼承胶滋、多態(tài)性的特性,可以設(shè)計(jì)出低耦合的系統(tǒng)悲敷,使系統(tǒng)更加靈活究恤、更加易于維護(hù)

缺點(diǎn): 性能比面向過(guò)程低

2. Java 語(yǔ)言有哪些特點(diǎn)

  1. 簡(jiǎn)單易學(xué);
  2. 面向?qū)ο螅ǚ庋b后德,繼承部宿,多態(tài));
  3. 平臺(tái)無(wú)關(guān)性( Java 虛擬機(jī)實(shí)現(xiàn)平臺(tái)無(wú)關(guān)性)瓢湃;
  4. 可靠性理张;
  5. 安全性;
  6. 支持多線程( C++ 語(yǔ)言沒(méi)有內(nèi)置的多線程機(jī)制绵患,因此必須調(diào)用操作系統(tǒng)的多線程功能來(lái)進(jìn)行多線程程序設(shè)計(jì)雾叭,而 Java 語(yǔ)言卻提供了多線程支持);
  7. 支持網(wǎng)絡(luò)編程并且很方便( Java 語(yǔ)言誕生本身就是為簡(jiǎn)化網(wǎng)絡(luò)編程設(shè)計(jì)的落蝙,因此 Java 語(yǔ)言不僅支持網(wǎng)絡(luò)編程而且很方便)织狐;
  8. 編譯與解釋并存暂幼;

3. 什么是 JDK 什么是 JRE 什么是 JVM 三者之間的聯(lián)系與區(qū)別

這幾個(gè)是Java中很基本很基本的東西,但是我相信一定還有很多人搞不清楚移迫!為什么呢旺嬉?因?yàn)槲覀兇蠖鄶?shù)時(shí)候在使用現(xiàn)成的編譯工具以及環(huán)境的時(shí)候,并沒(méi)有去考慮這些東西厨埋。

JDK: 顧名思義它是給開(kāi)發(fā)者提供的開(kāi)發(fā)工具箱,是給程序開(kāi)發(fā)者用的邪媳。它除了包括完整的JRE(Java Runtime Environment),Java運(yùn)行環(huán)境荡陷,還包含了其他供開(kāi)發(fā)者使用的工具包悲酷。

JRE: 普通用戶而只需要安裝 JRE(Java Runtime Environment)來(lái)運(yùn)行 Java 程序。而程序開(kāi)發(fā)者必須安裝JDK來(lái)編譯亲善、調(diào)試程序。

JVM: 當(dāng)我們運(yùn)行一個(gè)程序時(shí)逗柴,JVM 負(fù)責(zé)將字節(jié)碼轉(zhuǎn)換為特定機(jī)器代碼蛹头,JVM 提供了內(nèi)存管理/垃圾回收和安全機(jī)制等。這種獨(dú)立于硬件和操作系統(tǒng)戏溺,正是 java 程序可以一次編寫(xiě)多處執(zhí)行的原因渣蜗。

區(qū)別與聯(lián)系:

  1. JDK 用于開(kāi)發(fā),JRE 用于運(yùn)行java程序 旷祸;
  2. JDK 和 JRE 中都包含 JVM 耕拷;
  3. JVM 是 java 編程語(yǔ)言的核心并且具有平臺(tái)獨(dú)立性。

4. 什么是字節(jié)碼 采用字節(jié)碼的最大好處是什么

先看下 java 中的編譯器和解釋器:

Java 中引入了虛擬機(jī)的概念托享,即在機(jī)器和編譯程序之間加入了一層抽象的虛擬的機(jī)器骚烧。這臺(tái)虛擬的機(jī)器在任何平臺(tái)上都提供給編譯程序一個(gè)的共同的接口。

編譯程序只需要面向虛擬機(jī)闰围,生成虛擬機(jī)能夠理解的代碼赃绊,然后由解釋器來(lái)將虛擬機(jī)代碼轉(zhuǎn)換為特定系統(tǒng)的機(jī)器碼執(zhí)行。在 Java 中羡榴,這種供虛擬機(jī)理解的代碼叫做字節(jié)碼(即擴(kuò)展名為 .class 的文件)碧查,它不面向任何特定的處理器,只面向虛擬機(jī)校仑。

每一種平臺(tái)的解釋器是不同的忠售,但是實(shí)現(xiàn)的虛擬機(jī)是相同的。Java 源程序經(jīng)過(guò)編譯器編譯后變成字節(jié)碼迄沫,字節(jié)碼由虛擬機(jī)解釋執(zhí)行稻扬,虛擬機(jī)將每一條要執(zhí)行的字節(jié)碼送給解釋器,解釋器將其翻譯成特定機(jī)器上的機(jī)器碼邢滑,然后在特定的機(jī)器上運(yùn)行腐螟。這也就是解釋了 Java 的編譯與解釋并存的特點(diǎn)愿汰。

Java 源代碼---->編譯器---->jvm 可執(zhí)行的 Java 字節(jié)碼(即虛擬指令)---->jvm---->jvm 中解釋器----->機(jī)器可執(zhí)行的二進(jìn)制機(jī)器碼---->程序運(yùn)行。

采用字節(jié)碼的好處:

Java 語(yǔ)言通過(guò)字節(jié)碼的方式乐纸,在一定程度上解決了傳統(tǒng)解釋型語(yǔ)言執(zhí)行效率低的問(wèn)題衬廷,同時(shí)又保留了解釋型語(yǔ)言可移植的特點(diǎn)。所以 Java 程序運(yùn)行時(shí)比較高效汽绢,而且吗跋,由于字節(jié)碼并不專對(duì)一種特定的機(jī)器,因此宁昭,Java程序無(wú)須重新編譯便可在多種不同的計(jì)算機(jī)上運(yùn)行跌宛。

解釋性語(yǔ)言:解釋型語(yǔ)言,是在運(yùn)行的時(shí)候?qū)⒊绦蚍g成機(jī)器語(yǔ)言积仗。解釋型語(yǔ)言的程序不需要在運(yùn)行前編譯疆拘,在運(yùn)行程序的時(shí)候才翻譯,專門的解釋器負(fù)責(zé)在每個(gè)語(yǔ)句執(zhí)行的時(shí)候解釋程序代碼寂曹。這樣解釋型語(yǔ)言每執(zhí)行一次就要翻譯一次哎迄,效率比較低÷≡玻——百度百科

5. Java和C++的區(qū)別

我知道很多人沒(méi)學(xué)過(guò) C++漱挚,但是面試官就是沒(méi)事喜歡拿咱們 Java 和 C++ 比呀!沒(méi)辦法C煅酢V祭浴!就算沒(méi)學(xué)過(guò)C++侣背,也要記下來(lái)白华!

  • 都是面向?qū)ο蟮恼Z(yǔ)言,都支持封裝秃踩、繼承和多態(tài)
  • Java 不提供指針來(lái)直接訪問(wèn)內(nèi)存衬鱼,程序內(nèi)存更加安全
  • Java 的類是單繼承的,C++ 支持多重繼承憔杨;雖然 Java 的類不可以多繼承鸟赫,但是接口可以多繼承。
  • Java 有自動(dòng)內(nèi)存管理機(jī)制消别,不需要程序員手動(dòng)釋放無(wú)用內(nèi)存

6. 什么是 Java 程序的主類 應(yīng)用程序和小程序的主類有何不同

一個(gè)程序中可以有多個(gè)類抛蚤,但只能有一個(gè)類是主類。在 Java 應(yīng)用程序中寻狂,這個(gè)主類是指包含 main()方法的類岁经。而在 Java 小程序中,這個(gè)主類是一個(gè)繼承自系統(tǒng)類 JApplet 或 Applet 的子類蛇券。應(yīng)用程序的主類不一定要求是 public 類缀壤,但小程序的主類要求必須是 public 類樊拓。主類是 Java 程序執(zhí)行的入口點(diǎn)。

7. Java 應(yīng)用程序與小程序之間有那些差別

簡(jiǎn)單說(shuō)應(yīng)用程序是從主線程啟動(dòng)(也就是 main() 方法)塘慕。applet 小程序沒(méi)有main方法筋夏,主要是嵌在瀏覽器頁(yè)面上運(yùn)行(調(diào)用init()線程或者run()來(lái)啟動(dòng)),嵌入瀏覽器這點(diǎn)跟 flash 的小游戲類似图呢。

8. 字符型常量和字符串常量的區(qū)別

  1. 形式上: 字符常量是單引號(hào)引起的一個(gè)字符 字符串常量是雙引號(hào)引起的若干個(gè)字符
  2. 含義上: 字符常量相當(dāng)于一個(gè)整形值( ASCII 值),可以參加表達(dá)式運(yùn)算 字符串常量代表一個(gè)地址值(該字符串在內(nèi)存中存放位置)
  3. 占內(nèi)存大小 字符常量只占2個(gè)字節(jié) 字符串常量占若干個(gè)字節(jié)(至少一個(gè)字符結(jié)束標(biāo)志) (注意: char在Java中占兩個(gè)字節(jié))

java編程思想第四版:2.2.2節(jié)

9. 構(gòu)造器 Constructor 是否可被 override

在講繼承的時(shí)候我們就知道父類的私有屬性和構(gòu)造方法并不能被繼承条篷,所以 Constructor 也就不能被 override(重寫(xiě)),但是可以 overload(重載),所以你可以看到一個(gè)類中有多個(gè)構(gòu)造函數(shù)的情況。

10. 重載和重寫(xiě)的區(qū)別

重載: 發(fā)生在同一個(gè)類中蛤织,方法名必須相同赴叹,參數(shù)類型不同、個(gè)數(shù)不同指蚜、順序不同乞巧,方法返回值和訪問(wèn)修飾符可以不同,發(fā)生在編譯時(shí)摊鸡。

重寫(xiě): 發(fā)生在父子類中摊欠,方法名、參數(shù)列表必須相同柱宦,返回值范圍小于等于父類,拋出的異常范圍小于等于父類播瞳,訪問(wèn)修飾符范圍大于等于父類掸刊;如果父類方法訪問(wèn)修飾符為 private 則子類就不能重寫(xiě)該方法。

11. Java 面向?qū)ο缶幊倘筇匦?封裝赢乓、繼承忧侧、多態(tài)

封裝

封裝把一個(gè)對(duì)象的屬性私有化,同時(shí)提供一些可以被外界訪問(wèn)的屬性的方法牌芋,如果屬性不想被外界訪問(wèn)蚓炬,我們大可不必提供方法給外界訪問(wèn)。但是如果一個(gè)類沒(méi)有提供給外界訪問(wèn)的方法躺屁,那么這個(gè)類也沒(méi)有什么意義了肯夏。

繼承

繼承是使用已存在的類的定義作為基礎(chǔ)建立新類的技術(shù),新類的定義可以增加新的數(shù)據(jù)或新的功能犀暑,也可以用父類的功能驯击,但不能選擇性地繼承父類。通過(guò)使用繼承我們能夠非常方便地復(fù)用以前的代碼耐亏。

關(guān)于繼承如下 3 點(diǎn)請(qǐng)記谆捕肌:

  1. 子類擁有父類非 private 的屬性和方法。
  2. 子類可以擁有自己屬性和方法广辰,即子類可以對(duì)父類進(jìn)行擴(kuò)展暇矫。
  3. 子類可以用自己的方式實(shí)現(xiàn)父類的方法主之。(以后介紹)。

多態(tài)

所謂多態(tài)就是指程序中定義的引用變量所指向的具體類型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定李根,而是在程序運(yùn)行期間才確定槽奕,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類中實(shí)現(xiàn)的方法朱巨,必須在由程序運(yùn)行期間才能決定史翘。

在Java中有兩種形式可以實(shí)現(xiàn)多態(tài):繼承(多個(gè)子類對(duì)同一方法的重寫(xiě))和接口(實(shí)現(xiàn)接口并覆蓋接口中同一方法)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冀续,一起剝皮案震驚了整個(gè)濱河市琼讽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洪唐,老刑警劉巖钻蹬,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異凭需,居然都是意外死亡问欠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門粒蜈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)顺献,“玉大人,你說(shuō)我怎么就攤上這事枯怖∽⒄” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵度硝,是天一觀的道長(zhǎng)肿轨。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蕊程,這世上最難降的妖魔是什么椒袍? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮藻茂,結(jié)果婚禮上驹暑,老公的妹妹穿的比我還像新娘。我一直安慰自己辨赐,他們只是感情好岗钩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著肖油,像睡著了一般兼吓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上森枪,一...
    開(kāi)封第一講書(shū)人閱讀 52,196評(píng)論 1 308
  • 那天视搏,我揣著相機(jī)與錄音审孽,去河邊找鬼。 笑死浑娜,一個(gè)胖子當(dāng)著我的面吹牛佑力,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筋遭,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼打颤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了漓滔?” 一聲冷哼從身側(cè)響起编饺,我...
    開(kāi)封第一講書(shū)人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎响驴,沒(méi)想到半個(gè)月后透且,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豁鲤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年秽誊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琳骡。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锅论,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出楣号,到底是詐尸還是另有隱情棍厌,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布竖席,位于F島的核電站,受9級(jí)特大地震影響敬肚,放射性物質(zhì)發(fā)生泄漏毕荐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一艳馒、第九天 我趴在偏房一處隱蔽的房頂上張望憎亚。 院中可真熱鬧,春花似錦弄慰、人聲如沸第美。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)什往。三九已至,卻和暖如春慌闭,著一層夾襖步出監(jiān)牢的瞬間别威,已是汗流浹背躯舔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留省古,地道東北人粥庄。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像豺妓,于是被迫代替她去往敵國(guó)和親惜互。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

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