免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

有哪些Java基礎(chǔ)知識(shí)

本篇內(nèi)容介紹了“有哪些Java基礎(chǔ)知識(shí)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)10多年成都定制網(wǎng)站服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及高端網(wǎng)站定制服務(wù),成都定制網(wǎng)站及推廣,對(duì)成都邊坡防護(hù)網(wǎng)等多個(gè)領(lǐng)域擁有多年的營(yíng)銷(xiāo)推廣經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。

 面向?qū)ο笈c面向過(guò)程的區(qū)別
首先面向過(guò)程和面向?qū)ο蟮恼Z(yǔ)言沒(méi)有具體的性能高下之分,要依據(jù)每種語(yǔ)言的設(shè)計(jì)來(lái)做參考。個(gè)人認(rèn)為面向過(guò)程和面向?qū)ο蟮淖畲髤^(qū)別在于:面向過(guò)程的語(yǔ)言是結(jié)構(gòu)化的,面向?qū)ο蟮恼Z(yǔ)言是模塊化的。模塊化的代碼比結(jié)構(gòu)化的代碼更易于維護(hù),復(fù)用與擴(kuò)展。

OracleJDK與OpenJDK的區(qū)別
OpenJDK是基于Sun捐贈(zèng)的HotSpot的源代碼開(kāi)發(fā)的,是開(kāi)源的。OracleJDK是Oracle對(duì)JDK商業(yè)化版本,由Oracle發(fā)布并維護(hù),因此OracleJDK比OpenJDK更可靠。

Java與C++的異同

  • Java和C++都是基于面向?qū)ο蟮恼Z(yǔ)言。

  • Java不提供指針來(lái)訪(fǎng)問(wèn)內(nèi)存,C++運(yùn)行指針訪(fǎng)問(wèn)內(nèi)存。

  • 垃圾回收機(jī)制。Java無(wú)需開(kāi)發(fā)者手動(dòng)釋放內(nèi)存,因?yàn)镴ava由垃圾回收機(jī)制自動(dòng)回收內(nèi)存;C++則需要開(kāi)發(fā)者手動(dòng)釋放內(nèi)存。因此Java在內(nèi)存管理上相對(duì)C++更安全。

  • Java不支持多繼承,而C++支持。

JVM、JDK和JRE的區(qū)別

  • JVM:(java virtual machine)是java虛擬機(jī)

  • JRE:(java runtime environment)是java運(yùn)行時(shí)環(huán)境

  • JDK:(java development kit)是java開(kāi)發(fā)工具包,不僅包含來(lái)jre和jvm,還提供來(lái)javac編譯器和javadoc等其他開(kāi)發(fā)所需工具

Java語(yǔ)言的特點(diǎn)

  • 面向?qū)ο?/p>

  • 平臺(tái)無(wú)關(guān)性,也就是跨平臺(tái)(依靠JVM)

  • 垃圾回收機(jī)制(GC)

  • 支持多線(xiàn)程

  • 支持便捷的網(wǎng)絡(luò)編程

  • 編譯和解釋?zhuān)↗IT)

  • 安全

面向?qū)ο蟮奶卣?/strong>
面向?qū)ο蟮娜筇卣鳎悍庋b、繼承、多態(tài)。

  • 封裝:封裝是隱藏對(duì)象屬性和實(shí)現(xiàn)細(xì)節(jié),只對(duì)外提供可訪(fǎng)問(wèn)或修改的接口的技術(shù)。封裝的目的是為了簡(jiǎn)化編程和增加程序的安全性,使得使用者無(wú)需了解對(duì)象的具體實(shí)現(xiàn)細(xì)節(jié)。

  • 繼承:繼承是在已存在的類(lèi)上定義新的類(lèi)的技術(shù)。在Java中,已存在的類(lèi)被成為基類(lèi)(父類(lèi)),新的類(lèi)叫派生類(lèi)(子類(lèi))。子類(lèi)擁有父類(lèi)所有屬性、方法。但是子類(lèi)對(duì)父類(lèi)中私有的方法或?qū)傩圆⒉粨碛校⒉荒茉L(fǎng)問(wèn)和使用。繼承的目的主要是為零代碼的復(fù)用。

  • 多態(tài):多態(tài)指的是相同類(lèi)型的對(duì)象,調(diào)用其相同的方法,參數(shù)也相同,但是它的表現(xiàn)形式也就是結(jié)果不同。多態(tài)的目的是為了程序的可擴(kuò)展性和維護(hù)性。在java中可以使用繼承和接口2大特性實(shí)現(xiàn)多態(tài)。

重載和重寫(xiě)的區(qū)別
個(gè)人認(rèn)為重載和重寫(xiě)完全沒(méi)有可比性,不知道為啥老有人喜歡拿圖嗎做筆記。

  • 重載:重載是描述一個(gè)類(lèi)中有多個(gè)方法名相同的方法,但是它們的參數(shù)、類(lèi)型、返回值、參數(shù)順序可能不同,表現(xiàn)形式也就不同。

  • 重寫(xiě):重寫(xiě)是描述子類(lèi)對(duì)父類(lèi)的某個(gè)方法的邏輯進(jìn)行重新編寫(xiě),但重寫(xiě)的只是方法的內(nèi)容,方法名、參數(shù)、類(lèi)型、順序、返回值都不變的。

接口和抽象類(lèi)的區(qū)別

  • 接口需要被實(shí)現(xiàn),而抽象類(lèi)是需要被繼承的。

  • 接口里的方法都是公共抽象的,而抽象類(lèi)幾允許抽象也允許非抽象的方法(在JDK8中,接口被允許定義defalut方法,JDK9中還允許定義private私有方法)。

  • 一個(gè)類(lèi)允許實(shí)現(xiàn)多個(gè)接口,但只允許繼承一個(gè)抽象父類(lèi)。

  • 接口是對(duì)類(lèi)的規(guī)范,規(guī)范的是行為能力。而抽象類(lèi)是對(duì)類(lèi)的抽象,抽象的是邏輯。

Object類(lèi)方法有哪些?

  • getClass

  • equals

  • hashCode

  • toString

  • wait

  • wait(long):讓當(dāng)前對(duì)象進(jìn)入TIMED_WATING狀態(tài)

  • wait(long,int):讓當(dāng)前對(duì)象進(jìn)入TIMED_WATING狀態(tài)

  • notify

  • notifyAll

  • clone

  • finalize

靜態(tài)屬性方法和成員屬性方法區(qū)別
靜態(tài)屬性和方法屬于類(lèi)Class,而成員屬性和方法屬于實(shí)例化的對(duì)象。

靜態(tài)方法只能使用靜態(tài)方法和靜態(tài)屬性,不能使用成員屬性和方法。因?yàn)殪o態(tài)屬性和方法在對(duì)象還沒(méi)有實(shí)例化的時(shí)候就存在類(lèi)。

簡(jiǎn)單理解就是不允許一個(gè)已經(jīng)在的事物使用一個(gè)不存在的事物。

子類(lèi)屬性與父類(lèi)屬性初始好順序

  • 無(wú)論如何,靜態(tài)數(shù)據(jù)首先加載,所以先初始化父類(lèi)靜態(tài)變量和靜態(tài)初始?jí)K(靜態(tài)變量和靜態(tài)初始?jí)K按源代碼編寫(xiě)的順序執(zhí)行,普通初始化塊和普通成員變量也是如此),再初始化子類(lèi)靜態(tài)變量和靜態(tài)初始化塊。

  • 普通初始化塊和普通成員變量?jī)?yōu)先于構(gòu)造方法,所以接下來(lái)加載父類(lèi)的普通初始化塊和普通成員變量,再調(diào)用父類(lèi)構(gòu)造方法。

  • 調(diào)用子類(lèi)普通代碼塊,普通變量和構(gòu)造方法。

自動(dòng)拆箱和裝箱
自動(dòng)拆箱和裝箱實(shí)際上是Java編譯器的一個(gè)語(yǔ)法糖。

自動(dòng)裝箱是指:將基本數(shù)據(jù)類(lèi)型轉(zhuǎn)為對(duì)應(yīng)的包裝類(lèi)對(duì)象的過(guò)程。

自動(dòng)拆箱是指:將包裝類(lèi)型轉(zhuǎn)為對(duì)應(yīng)的基本數(shù)據(jù)類(lèi)型。

自動(dòng)裝箱實(shí)際上是調(diào)用類(lèi)包裝類(lèi)對(duì)象的valueof方法,如:Integer.valueof(1)

自動(dòng)拆箱實(shí)際上是調(diào)用類(lèi)包裝類(lèi)的xxxValue方法,如:Integer.intValue()

在自動(dòng)裝箱的時(shí)候,如果包裝類(lèi)允許緩存并且值在緩存的范圍內(nèi),那么裝箱生產(chǎn)的對(duì)象會(huì)被緩存到常量池中。

Integer、Byte、Short、Long、Character包裝類(lèi)型具有緩存池,而其他三種:Float、Double、Boolean不具有緩存池。

包裝類(lèi)的緩存池緩存范圍基本都為:-128—— 127之間,除了Character的緩存范圍為0——127。

String為什么不可變?
先說(shuō)下我的看法:String是Java中最常使用的類(lèi)沒(méi)有之一,如果String時(shí)可變的,那么會(huì)發(fā)生非常多數(shù)不清的問(wèn)題。如IP地址、人名、郵箱非常多的敏感數(shù)據(jù)。如果String時(shí)可變的,就會(huì)發(fā)生安全問(wèn)題,且字符串常量池也就無(wú)從談起了。

String時(shí)不可變的,那么它的本質(zhì)上也是線(xiàn)程安全的。不可變類(lèi)的缺點(diǎn)就是每個(gè)不同值需要?jiǎng)?chuàng)建一個(gè)對(duì)象。

String是用final修飾的,保證類(lèi)String類(lèi)不能被擴(kuò)展。String內(nèi)部的字段時(shí)用final修飾的,并且沒(méi)有對(duì)外提供修改字段的方法。這也是為什么String不可變的原理。

final關(guān)鍵字的作用

  • 被final修飾的類(lèi),不能被繼承,并且這個(gè)類(lèi)所有成員方法都為final,不能被重寫(xiě)。

  • 被final修飾的屬性變量,不能被修改。如果該變量是基本數(shù)據(jù)類(lèi)型,那么其值在初始化后不能被修改。如果該變量是引用類(lèi)型,那么該引用不能再指向其他對(duì)象。

  • 被final修飾的方法不能被子類(lèi)重寫(xiě)。

StringBuilder和StringBuffer區(qū)別
StringBuilder 和 StringBuffer 都是可變的字符串,但是StringBuilder線(xiàn)程不安全的。

StringBuffer是線(xiàn)程安全的。因此單線(xiàn)程情況下考慮使用StringBuilder,多線(xiàn)程考慮使用StringBuffer。

他們之間的關(guān)系就好比HashMap和HashTable的關(guān)系。

equals知識(shí)點(diǎn)

  • == 與 equals區(qū)別

  • ==,如果是基本數(shù)據(jù)類(lèi)型,比較的是值,如果是引用數(shù)據(jù)類(lèi)型,比較的是對(duì)象的內(nèi)存地址;equals比較的是對(duì)象的值。因此在java中比較2個(gè)對(duì)象的值是否相等使用equals,判斷2個(gè)對(duì)象釋放是一個(gè)對(duì)象,使用==。

  • hashCode方法返回:

  • equals方法重寫(xiě)要求

  • 自反性:x.equals(x) == true 永遠(yuǎn)成立

  • 非空性:x.equals(null) == false 永遠(yuǎn)成立

  • 對(duì)稱(chēng)性:如果x.equals(y) == true,那y.equals(x) == true

  • 傳遞性:如果x.equals(y) == tue,并且y.equals(z) == true,那么一定滿(mǎn)足x.equals(z) == true

  • 一致性:如果x.equals(y) == true,那么只要x和y的值不變,那么x.equals(y) == true 永遠(yuǎn)成立

  • 為什么重寫(xiě)equals方法一定要重寫(xiě)hashcode方法?

在普通環(huán)境下(不涉及hash表),equals方法和hashcode方法一毛錢(qián)關(guān)系沒(méi)有的,此時(shí)重寫(xiě)equals但不重寫(xiě)hashcode是沒(méi)有關(guān)系的。但當(dāng)使用map、set這些散列表時(shí),它們會(huì)根據(jù)對(duì)象的hashcode來(lái)計(jì)算對(duì)象在散列表中的位置的。試想下,如果2個(gè)對(duì)象的值相等,但是由于它們是2個(gè)對(duì)象,hashcode卻不相等。 那么即使放入map,set(map)仍會(huì)存在重復(fù)數(shù)據(jù)。

深拷貝和淺拷貝

  • 深拷貝:拷貝所有的內(nèi)容,除了基本數(shù)據(jù)類(lèi)型變量復(fù)制一份,連引用類(lèi)型變量也復(fù)制一份。

  • 淺拷貝:復(fù)制基本數(shù)據(jù)類(lèi)型變量,對(duì)于引用類(lèi)型的變量,直接返回這個(gè)引用本身。

IO流分類(lèi)

  • 按照流的流向,分為:輸入流和輸出流。

  • 按照操作單元,分為:字節(jié)流和字符流。

使用字節(jié)流還是字符流?
考慮通用性,應(yīng)該使用字節(jié)流。如果只是文本文件的操作,可以使用字符流。

BigDecimal
BigDecimal時(shí)Java中表示大浮點(diǎn)數(shù)的類(lèi)型。

在Java中,如果遇到浮點(diǎn)數(shù)的判斷,可以使用BigDecimal來(lái)做計(jì)算,因?yàn)槿绻褂闷胀〝?shù)據(jù)類(lèi)型很可能會(huì)發(fā)生精度丟失的情況,這個(gè)時(shí)候的結(jié)果可能會(huì)出乎意料之外。

Java異常體系結(jié)構(gòu)
在Java中,異常分為 Exception和Error,這2個(gè)類(lèi)都繼承自Throwable。

  • Exception: Exception異常是程序本身可以處理的。Exception 分為運(yùn)行時(shí)異常(RuntimeException)和 非運(yùn)行時(shí)異常(CheckedException)。

  • RuntimeException: RuntimeException(運(yùn)行時(shí)異常)是在程序運(yùn)行時(shí)可能會(huì)發(fā)生的異常,如NullPointException, 這類(lèi)異常往往是不可預(yù)料的,編譯器也不會(huì)要求你手動(dòng)try catch或throws。

  • CheckedException: CheckedException(非運(yùn)行時(shí)異常)是RuntimeException以外的異常,如IOException, 這類(lèi)異常要求必須顯示的try catch或throws , 如果不處理,那么編譯就不會(huì)通過(guò)。

  • Error: Error錯(cuò)誤是程序無(wú)法處理的,表示程序或JVM出現(xiàn)了很?chē)?yán)重的,無(wú)法解決的問(wèn)題。

Comparable和Comparator

  • Comparable: 自然排序接口。實(shí)現(xiàn)了它的類(lèi)意味著就支持排序。

  • Comparator: 外部比較器。無(wú)需讓需要排序的對(duì)象實(shí)現(xiàn)排序邏輯,而是根據(jù)Comparator定義的邏輯來(lái)排序。 Comparator相較于Comparable更加的靈活。

為什么要慎用 Arrays.asList()?
因?yàn)锳rrays.asList這個(gè)方法返回的根本就不是我們期盼的ArrayList, 而是Arrays類(lèi)內(nèi)部實(shí)現(xiàn)的ArrayList,這個(gè)內(nèi)部類(lèi)只支持訪(fǎng)問(wèn)和set操作, 并不支持remove,add,clear等修改操作。

Java中引用的類(lèi)型
Java中引用類(lèi)型總共有四種: 強(qiáng)引用,軟引用,弱引用,虛引用。

  • 強(qiáng)引用(Strong Reference): Java程序中絕大部分都是強(qiáng)引用,一般使用new關(guān)鍵字創(chuàng)建的對(duì)象就是強(qiáng)引用。 只要強(qiáng)引用存在,強(qiáng)引用的對(duì)象就不會(huì)被回收,除非不可達(dá)(參考jvm部分)

  • 軟引用(Soft Reference): 軟引用一般不會(huì)被回收,但是當(dāng)堆內(nèi)存不夠的時(shí)候, 比如幾乎快要發(fā)生OOM的時(shí)候,就會(huì)回收掉軟引用對(duì)象。

  • 弱引用(Weak Reference): 只要垃圾回收開(kāi)始,就會(huì)回收掉弱引用的對(duì)象。

  • 虛引用(Phantom Reference,又稱(chēng)幽靈引用): 和其他幾種引用不同,虛引用不決定對(duì)象的生命周期, 它在任何時(shí)候都可能被回收掉。

“有哪些Java基礎(chǔ)知識(shí)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

本文題目:有哪些Java基礎(chǔ)知識(shí)
文章網(wǎng)址:http://m.newbst.com/article8/jesgip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站網(wǎng)站制作網(wǎng)站內(nèi)鏈品牌網(wǎng)站設(shè)計(jì)虛擬主機(jī)標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)