欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      給Java新手的一些建議——Java知識(shí)點(diǎn)歸納(Java基礎(chǔ)部分)

      時(shí)間:2019-05-12 06:27:40下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《給Java新手的一些建議——Java知識(shí)點(diǎn)歸納(Java基礎(chǔ)部分)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《給Java新手的一些建議——Java知識(shí)點(diǎn)歸納(Java基礎(chǔ)部分)》。

      第一篇:給Java新手的一些建議——Java知識(shí)點(diǎn)歸納(Java基礎(chǔ)部分)

      北大青鳥華美官網(wǎng): 004km.cn

      寫這篇文章的目的是想總結(jié)一下自己這么多年來(lái)使用java的一些心得體會(huì),主要是和一些java基礎(chǔ)知識(shí)點(diǎn)相關(guān)的,所以也希望能分享給剛剛?cè)腴T的Java程序員和打算入Java開發(fā)這個(gè)行當(dāng)?shù)臏?zhǔn)新手們,希望可以給大家一些經(jīng)驗(yàn),能讓大家更好學(xué)習(xí)和使用Java。

      這次介紹的主要內(nèi)容是和J2SE相關(guān)的部分,另外,會(huì)在以后再介紹些J2EE相關(guān)的、和Java中各個(gè)框架相關(guān)的內(nèi)容。

      我覺得對(duì)于J2SE方面主要就是要掌握以下的一些內(nèi)容。1.JVM相關(guān)(包括了各個(gè)版本的特性)

      北大青鳥華美官網(wǎng): 004km.cn

      對(duì)于剛剛接觸Java的人來(lái)說(shuō),JVM相關(guān)的知識(shí)不一定需要理解很深,對(duì)此里面的概念有一些簡(jiǎn)單的了解即可。不過(guò)對(duì)于一個(gè)有著3年以上Java經(jīng)驗(yàn)的資深開發(fā)者來(lái)說(shuō),不會(huì)JVM幾乎是不可接受的。

      JVM作為java運(yùn)行的基礎(chǔ),很難相信對(duì)于JVM一點(diǎn)都不了解的人可以把java語(yǔ)言吃得很透。我在面試有超過(guò)3年Java經(jīng)驗(yàn)的開發(fā)者的時(shí)候,JVM幾乎就是一個(gè)必問的問題了。當(dāng)然JVM不是唯一決定技術(shù)能力好壞的面試問題,但是可以佐證java開發(fā)能力的高低。

      在JVM這個(gè)大類中,我認(rèn)為需要掌握的知識(shí)有:JVM內(nèi)存模型和結(jié)構(gòu)GC原理,性能調(diào)優(yōu)調(diào)優(yōu):Thread Dump,分析內(nèi)存結(jié)構(gòu)class 二進(jìn)制字節(jié)碼結(jié)構(gòu),class loader 體系,class加載過(guò)程,實(shí)例創(chuàng)建過(guò)程方法執(zhí)行過(guò)程Java各個(gè)大版本更新提供的新特性(需要簡(jiǎn)單了解)2.Java的運(yùn)行(基礎(chǔ)必備)

      這條可能出看很簡(jiǎn)單,java程序的運(yùn)行誰(shuí)不會(huì)呢?不過(guò)很多時(shí)候,我們只是單純通過(guò)IDE去執(zhí)行java程序,底層IDE又是如何執(zhí)行java程序呢?很多人并不了解。

      這個(gè)知識(shí)點(diǎn)是最最基本的java開發(fā)者需要掌握的,初學(xué)java,第一個(gè)肯定是教你如何在命令行中執(zhí)行java程序,但是很多人一旦把java學(xué)完了,IDE用上了,就把這個(gè)都忘了。為什么強(qiáng)調(diào)要知道這個(gè)呢,知道了java最純粹的啟動(dòng)方式之后,你才能在啟動(dòng)出問題的時(shí)候,去分析當(dāng)時(shí)啟動(dòng)的目錄多少,執(zhí)行命名如何,參數(shù)如何,是否有缺失等。這樣有利于你真正開發(fā)中去解決那些奇奇怪

      北大青鳥華美官網(wǎng): 004km.cn 怪的可能和環(huán)境相關(guān)的問題。

      在這里需要掌握的知識(shí)有:javac編譯java文件為 class 文件java 命令的使用,帶package的java類如何在命令行中啟動(dòng)java程序涉及到的各個(gè)路徑(classpath,java。library。path,java運(yùn)行的主目錄等)3.數(shù)據(jù)類型

      這條沒有什么好多說(shuō)的,無(wú)非就是Java中的基本類型和對(duì)象類型的掌握。可以再了解一些JDK如何自動(dòng)轉(zhuǎn)換方面的知識(shí),包括裝箱拆箱等,還要注意避免裝箱之后的類型相等的判斷

      主要知識(shí)點(diǎn):基本類型:int,long,float,double,boolean。。對(duì)應(yīng)的對(duì)象類型: Integer 等類型到基本類型的轉(zhuǎn)換,裝箱和拆箱Object類型: equals,hashcodeString類型的特點(diǎn) 4.對(duì)象和實(shí)例,對(duì)象的創(chuàng)建

      在這方面,開發(fā)者需要了解class和instance的概念以及之間的差別,這是java面向?qū)ο筇匦缘囊粋€(gè)基礎(chǔ)。主要知識(shí)點(diǎn)有:Class和 Instance 的概念I(lǐng)nstance 創(chuàng)建的過(guò)程:

      1。無(wú)繼承:分配內(nèi)存空間,初始化變量,調(diào)用構(gòu)造函數(shù)

      2。有繼承:處理靜態(tài)動(dòng)作,分配內(nèi)存空間,變量定義為初始值,從基類->子類,處理定義處的初始化,執(zhí)行構(gòu)造方法

      需要注意的點(diǎn):

      靜態(tài)屬性等從基類->子類進(jìn)行初始化

      默認(rèn)無(wú)參構(gòu)造方法相關(guān)的特性

      北大青鳥華美官網(wǎng): 004km.cn 5.訪問控制

      這也是java封裝特性的一個(gè)基礎(chǔ),需要掌握的有:public protected default private 對(duì)于class,method,field 的修飾作用 6.流程控制

      Java 流程控制的基礎(chǔ),雖然有些語(yǔ)法不一定很常用,但是都需要了解,并且在合適的地方使用它們。需要掌握的有:if,switch,loop,for,while 等流程控制的語(yǔ)法 7.面向?qū)ο缶幊痰母拍?/p>

      這是一個(gè)java的核心概念,對(duì)于任何java開發(fā)者都需要熟練掌握。Java中很多特性或者說(shuō)知識(shí)點(diǎn)都是和java面向?qū)ο缶幊谈拍钕嚓P(guān)的。在我的理解,一個(gè)好的開發(fā)者不僅僅需要了解這些特性(知識(shí)點(diǎn))本身,也更需要知道這些對(duì)象在java的面向?qū)ο缶幊谈拍钪惺侨绾误w現(xiàn)出來(lái)的,這樣更有利于開發(fā)者掌握java這門開發(fā)語(yǔ)言,以及其他面向?qū)ο缶幊痰恼Z(yǔ)言。在這里只是簡(jiǎn)單羅列了一下,主要的知識(shí)點(diǎn)包括有:面向?qū)ο笕筇匦裕悍庋b,繼承,多態(tài);各自的定義概念,有哪些特性體現(xiàn)出來(lái),各自的使用場(chǎng)景靜態(tài)多分派,動(dòng)態(tài)單分派的概念重載的概念和使用繼承:接口多實(shí)現(xiàn),基類單繼承抽象,抽象類,接口多態(tài):方法覆蓋的概念和使用接口回調(diào)

      北大青鳥華美官網(wǎng): 004km.cn 8.Static

      靜態(tài)屬性在java日常開發(fā)中也是經(jīng)常使用,需要了解和 static 關(guān)鍵字相關(guān)的用法,還有和其他關(guān)鍵字的配合使用,如是否可以和 abstract,final 等關(guān)鍵字聯(lián)合使用。主要需要掌握的有:靜態(tài)屬性的定義,使用,以及類加載時(shí)如何初始化靜態(tài)方法的定義和使用靜態(tài)類的定義和使用靜態(tài)代碼塊的定義和初始化時(shí)機(jī) 9.基礎(chǔ)知識(shí)點(diǎn)

      這里主要羅列一些散落的,沒有系統(tǒng)歸類的一些java知識(shí)點(diǎn)。在日常的開發(fā)中用到也不少。這塊內(nèi)容其實(shí)還有很多,目前只是暫時(shí)歸納了這幾個(gè)在這里:

      包括有:equals,hashcode,string/stringbuffer,final,finally,finalize 10.集合框架

      這個(gè)是一個(gè)需要多加掌握的部分,做java開發(fā),可以說(shuō)沒有不用到集合框架的,這很重要。但是這里的知識(shí)點(diǎn)并不難,但是對(duì)于集合最好要了解內(nèi)部的實(shí)現(xiàn)方式,因?yàn)檫@樣有助于你在各個(gè)不同的場(chǎng)景選擇適合的框架來(lái)解決問題,比如有1W個(gè)元素的集合,經(jīng)常要進(jìn)行contains判斷操作,知道了集合的特性或者內(nèi)部實(shí)現(xiàn),就很容易做出正確的選擇。

      這里包括了如下內(nèi)容(并發(fā)相關(guān)不包含在內(nèi)):集合框架的體系:基礎(chǔ)Collection,Map具體集合實(shí)現(xiàn)的內(nèi)容,List,Set,Map 具體的實(shí)

      北大青鳥華美官網(wǎng): 004km.cn 現(xiàn),內(nèi)部結(jié)構(gòu),特殊的方法,適用場(chǎng)景等集合相關(guān)的工具類 Collections 等的用法 11.異??蚣?/p>

      異常在java的開發(fā)中可能沒有那么被重視。一般遇到異常,直接上拋,或者隨便catch一下處理之后對(duì)于程序整體運(yùn)行也沒有什么大的影響。不過(guò)在企業(yè)級(jí)設(shè)計(jì)開發(fā)中,異常的設(shè)計(jì)與處理的好壞,往往就關(guān)系著這個(gè)系統(tǒng)整體的健壯性。一個(gè)好的系統(tǒng)的異常對(duì)于開發(fā)者來(lái)說(shuō),處理應(yīng)該統(tǒng)一,避免各處散落很多異常處理邏輯;對(duì)于系統(tǒng)來(lái)說(shuō),異常應(yīng)該是可控的,并且是易于運(yùn)維的,某些異常出現(xiàn)后,應(yīng)該有應(yīng)對(duì)的方法,知道如何運(yùn)維處理,所以雖然異??蚣芎芎?jiǎn)單,但是對(duì)于整個(gè)企業(yè)級(jí)應(yīng)用開發(fā)來(lái)說(shuō),異常處理是很重要的,處理好異常就需要了解Java中的異常體系。

      這部分需要掌握的知識(shí)點(diǎn)不多,主要就是:異常的體系:ThrowableExceptionRuntimeExceptionErrorRuntimeException和一般 Exception 的區(qū)別,具體處理方法等 12.Java IO

      IO 在java中不僅僅是文件讀寫那么簡(jiǎn)單,也包括了 socket 網(wǎng)絡(luò)的讀寫等等一切的輸入輸出操作。比如說(shuō)標(biāo)準(zhǔn)HTTP請(qǐng)求中Post的內(nèi)容的讀取也是一個(gè)輸出的過(guò)程,等等…

      對(duì)于IO,Java不僅提供了基本Input、Output相關(guān)的api,也提供了一些簡(jiǎn)化操作的Reader、北大青鳥華美官網(wǎng): 004km.cn Writer等api,在某些開發(fā)(涉及大量IO操作的項(xiàng)目)中也很重要,一般日常的開發(fā)中也會(huì)涉及(日志,臨時(shí)文件的讀寫等)。

      在這中的知識(shí)點(diǎn)主要有:基本IO的體系:包括有InputStream,OutputStream,Reader/Writer,文件讀取,各種流讀取等NIO 的概念,具體使用方式和使用場(chǎng)景 13.多線程并發(fā)

      多線程是Java中普遍認(rèn)為比較難的一塊。多線程用好了可以有效提高cpu使用率,提升整體系統(tǒng)效率,特別是在有大量IO操作阻塞的情況下;但是它也是一柄雙刃劍,如果用不好,系統(tǒng)非但提升不大,或者沒有提升,而且還會(huì)帶來(lái)多線程之間的調(diào)試時(shí)等問題。

      在多線程中內(nèi)容有很多,只是簡(jiǎn)單說(shuō)明一下Java中初步使用多線程需要掌握的知識(shí)點(diǎn),以后有機(jī)會(huì)單獨(dú)再詳細(xì)介紹一些高級(jí)特性的使用場(chǎng)景。多線程的實(shí)現(xiàn)和啟動(dòng)callable 與runable區(qū)別syncrhoized,reentrantLock各自特點(diǎn)和比對(duì)線程池future 異步方式獲取執(zhí)行結(jié)果concurrent 包lock..14.網(wǎng)絡(luò)

      Java中也是提供了可以直接操作 TCP協(xié)議、UDP協(xié)議的API。在需要強(qiáng)調(diào)網(wǎng)絡(luò)性能的情況下,可以直接使用TCP/UDP 進(jìn)行通訊。在查看Tomcat等的源碼中,就可以看到這些相關(guān)API的使用情況。不過(guò)一般

      北大青鳥華美官網(wǎng): 004km.cn 也比較少會(huì)直接使用TCP,會(huì)使用諸如MINA、Netty這樣的框架來(lái)進(jìn)行處理,因?yàn)檫@個(gè)方面的開發(fā)涉及不多,所以就不再詳細(xì)羅列了。15.時(shí)間日期處理

      幾乎對(duì)于每個(gè)應(yīng)用來(lái)說(shuō),時(shí)間日期的處理也是繞不過(guò)去的,但是JDK8 之前的時(shí)間相關(guān)API用法并不友好。在那個(gè)時(shí)代,可以選擇Joda等時(shí)間框架。到了JDK8 發(fā)布之后,全新的時(shí)間API基本融合了其他框架的優(yōu)點(diǎn),已經(jīng)可以很好的直接使用了。

      對(duì)于Java開發(fā)者來(lái)說(shuō),需要熟練地使用API來(lái)對(duì)時(shí)間和日期做相關(guān)的處理。

      具體知識(shí)點(diǎn)不再羅列,會(huì)在以后再寫個(gè)專門的文章來(lái)總結(jié)一下JDK8中時(shí)間日期API的用法。

      16.XML解析/ JSON解析

      其實(shí)這兩塊內(nèi)容都不是J2SE里面的內(nèi)容,但是在日常開發(fā)中,和其他程序交互,和配置文件交互,越來(lái)越離不開這兩種格式的解析。

      不過(guò)對(duì)于一個(gè)開發(fā)者來(lái)說(shuō),能夠了解一些XML/JSON具體解析的原理和方法,有助于你在各個(gè)具體的場(chǎng)景中更好的選擇合適你的方式來(lái)使得你的程序更有效率和更加健壯。

      XML:需要了解 DOM解析和 SAX解析的基本原理和各自的適用場(chǎng)景

      JSON:需要了解一些常用JSON框架的用法,如 Jackson,F(xiàn)astJson,Gson等。

      北大青鳥華美官網(wǎng): 004km.cn 17.Maven的使用

      Maven也不是Java里面的內(nèi)容,但是maven是革命性的,給java開發(fā)帶來(lái)了巨大的便利。從依賴的引入和管理,開發(fā)流程的更新和發(fā)布產(chǎn)出,乃至版本的更新,使用maven可以大大簡(jiǎn)化開發(fā)過(guò)程中的復(fù)雜度,從而節(jié)省大量時(shí)間??梢哉f(shuō),maven已經(jīng)成為java開發(fā)者的標(biāo)配了。所以我把maven也作為一個(gè)java開發(fā)者對(duì)于基礎(chǔ)必備的知識(shí)點(diǎn)。以后會(huì)再放上一些我的一些對(duì)于maven使用的經(jīng)驗(yàn)和技巧等,這里就不再細(xì)說(shuō)了。18.泛型

      這是JDK5開始引入的新概念,其實(shí)是個(gè)語(yǔ)法糖,在編寫java代碼時(shí)會(huì)有些許便利,一般的應(yīng)用或者是業(yè)務(wù)的開發(fā),只需要簡(jiǎn)單使用,不一定會(huì)用到定義泛型這樣的操作,但是開發(fā)一些基礎(chǔ)公共組件會(huì)使用到,可以在需要的時(shí)候再細(xì)看這個(gè)部分,一般情況下只要會(huì)簡(jiǎn)單使用即可。19.標(biāo)注

      也是jdk5 之后引入的。spring是個(gè)優(yōu)秀的框架,最開始就以xml作為標(biāo)準(zhǔn)的配置文件。不過(guò)到了Spring3 之后,尤其是 spring-boot 興起之后,越來(lái)越推崇使用標(biāo)注來(lái)簡(jiǎn)化xml配置文件了,對(duì)于開發(fā)者來(lái)說(shuō),可以節(jié)省不少xml配置的時(shí)間。但是劣勢(shì)是在于標(biāo)注散落在各個(gè)類中,不

      北大青鳥華美官網(wǎng): 004km.cn 像xml,可以對(duì)所有配置有個(gè)全局性的理解和管理,所以還沒有辦法說(shuō)完全就取代所有的xml。對(duì)于一般開發(fā)者,會(huì)使用標(biāo)注即可,一些公共組建的開發(fā)者可能會(huì)需要了解標(biāo)注的定義和實(shí)現(xiàn),可以在具體需要的時(shí)候再細(xì)看。20.RMI

      RemoteMethodInvocation,Java語(yǔ)言特有的遠(yuǎn)程調(diào)用接口,使用還是比較簡(jiǎn)單方便。不過(guò)需要跨語(yǔ)言的情況下,就需要使用 webservice 等其他方式來(lái)支持。一般來(lái)說(shuō),程序都不需要使用RMI,不過(guò)可以在特定的情況下使用,我就在一個(gè)項(xiàng)目中,使用RMI來(lái)進(jìn)行程序遠(yuǎn)程啟動(dòng)停止的控制。21.JNI

      Java Native Interface,可以允許Java中調(diào)用本地接口方法,一般用于C/C++代碼的調(diào)用。需要注意的是在java中加載so/dll文件的路徑問題,本身調(diào)用接口并不復(fù)雜,但是經(jīng)常在是否加載了所需的本地接口庫(kù)中花費(fèi)較多時(shí)間。

      以上也只是簡(jiǎn)單介紹了下我對(duì)于這些java基本知識(shí)點(diǎn)和技術(shù)點(diǎn)的一些看法和介紹,這些內(nèi)容都源自于我這些年來(lái)使用java的一些總結(jié),希望給剛剛接觸Java,或者打算從Java開發(fā)的人一些經(jīng)驗(yàn),希望能夠更有效率地學(xué)習(xí)和使用java,避免走了彎路浪費(fèi)了寶貴的時(shí)間。這當(dāng)中還

      北大青鳥華美官網(wǎng): 004km.cn 有些內(nèi)容不夠完善的地方,會(huì)通過(guò)以后的文章再添加上。由于個(gè)人能力有限,當(dāng)然其中也會(huì)有些錯(cuò)誤和疏漏,歡迎指正,一起討論,共同來(lái)把這篇文章再完善下,希望它可以真正幫助到有需要的人。

      第二篇:java面試題(基礎(chǔ)部分)

      Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?

      方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說(shuō)該方法被重寫(Overriding)。子類的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對(duì)它而言,父類中的定義如同被“屏蔽”了。如果在一個(gè)類中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。

      Overloaded的方法是可以改變返回值的類型。數(shù)組有沒有l(wèi)ength()這個(gè)方法? String有沒有l(wèi)ength()這個(gè)方法?數(shù)組沒有l(wèi)ength()這個(gè)方法,有l(wèi)ength的屬性。

      String有有l(wèi)ength()這個(gè)方法。Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?

      Set里的元素是不能重復(fù)的,那么用iterator()方法來(lái)區(qū)分重復(fù)與否。equals()是判讀兩個(gè)Set是否相等。equals()和==方法決定引用值是否指向同一對(duì)象equals()在類中被覆蓋,為的是當(dāng)兩個(gè)分離的對(duì)象的內(nèi)容和類型相配的話,返回真值。

      24最常見到的runtime exception。

      ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException,EmptyStackException, IllegalArgumentException,IllegalMonitorStateException, IllegalPathStateException,IllegalStateException,ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException,NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, Secur

      ityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationExceptionerror和exception有什么區(qū)別?

      error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題。比如說(shuō)內(nèi)存溢出。不可能指望程序能處理這樣的情況。

      exception 表示一種設(shè)計(jì)或?qū)崿F(xiàn)問題。也就是說(shuō),它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。abstract class和interface有什么區(qū)別?

      聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽象類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。

      接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對(duì)象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類是否實(shí)現(xiàn)了接口。abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized?

      都不能接口是否可繼承接口? 抽象類是否可實(shí)現(xiàn)(implements)接口? 抽象類是否可繼承實(shí)體類(concrete class)?

      接口可以繼承接口。抽象類可以實(shí)現(xiàn)(implements)接口,抽象類可繼承實(shí)體類,但前提是實(shí)體類必須有明確的構(gòu)造函數(shù)。啟動(dòng)一個(gè)線程是用run()還是start()?

      啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來(lái)停止一個(gè)線程。

      是否可以繼承String類?

      String類是final類故不可以繼承。

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

      構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。

      當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?

      不能,一個(gè)對(duì)象的一個(gè)synchronized方法只能由一個(gè)線程訪問。

      33try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不

      會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?

      會(huì)執(zhí)行,在return前執(zhí)行。

      編程題: 用最有效率的方法算出2乘以8等於幾?<< 3

      兩個(gè)對(duì)象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對(duì)不對(duì)?

      不對(duì),有相同的hash code。

      36當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?

      是值傳遞。Java編程語(yǔ)言只由值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對(duì)該對(duì)象的引用。對(duì)象的內(nèi)容可以在被調(diào)用的方法中改變,但對(duì)象的引用是永遠(yuǎn)不會(huì)改變的。

      37swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

      switch(expr1)中,expr1是一個(gè)整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語(yǔ)句的參數(shù)應(yīng)該是 int、short、char 或者 byte。long,string 都不能作用于swtich。

      Hashtable和HashMap

      Hashtable繼承自Dictionary類,而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn)

      HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許

      還有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因?yàn)閏ontains方法容易讓人引起誤解。

      最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個(gè)線程訪問Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap就必

      須為之提供外同步。

      Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異。

      1.Java的接口和C++的虛類的相同和不同處。

      由于Java不支持多繼承,而有可能某個(gè)類或?qū)ο笠褂梅謩e在幾個(gè)類或?qū)ο罄锩娴姆椒ɑ驅(qū)傩?,現(xiàn)有的單繼承機(jī)制就不能滿足要求。與繼承相比,接口有更高的靈活性,因?yàn)榻涌谥袥]有任何實(shí)現(xiàn)代碼。當(dāng)一個(gè)類實(shí)現(xiàn)了接口以后,該類要實(shí)現(xiàn)接口里面所有的方法和屬性,并且接口里面的屬性在默認(rèn)狀態(tài)下面都是

      public static,所有方法默認(rèn)情況下是public.一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。

      2.Java中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用。

      當(dāng)Java程序違反了Java的語(yǔ)義規(guī)則時(shí),Java虛擬機(jī)就會(huì)將發(fā)生的錯(cuò)誤表示為一個(gè)異常。違反語(yǔ)義規(guī)則包括2種情況。一種是Java類庫(kù)內(nèi)置的語(yǔ)義檢查。例如數(shù)組下標(biāo)越界,會(huì)引發(fā)IndexOutOfBoundsException;訪問null的對(duì)象時(shí)會(huì)引發(fā)NullPointerException。另一種情況就是Java允許程序員擴(kuò)展這種語(yǔ)義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時(shí)用throw關(guān)鍵字引發(fā)異常。所有的異常都是java.lang.Thowable的子類。

      3.垃圾回收的優(yōu)點(diǎn)和原理。并考慮2種回收機(jī)制。

      Java語(yǔ)言中一個(gè)顯著的特點(diǎn)就是引入了垃圾回收機(jī)制,使c++程序員最頭疼的內(nèi)存管理的問題迎刃而解,它使得Java程序員在編寫程序的時(shí)候不再需要考慮內(nèi)存管理。由于有個(gè)垃圾回收機(jī)制,Java中的對(duì)象不再有“作用域”的概念,只有對(duì)象的引用才有“作用域”。垃圾回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。垃圾回收器通常是作為一個(gè)單獨(dú)的低級(jí)別的線程運(yùn)行,不可預(yù)知的情況下對(duì)內(nèi)存堆中已經(jīng)死亡的或者長(zhǎng)時(shí)間沒有使用的對(duì)象進(jìn)行清除和回收,程序員不能實(shí)時(shí)的調(diào)用垃圾回收器對(duì)某個(gè)對(duì)象或所有對(duì)象進(jìn)行垃圾回收?;厥諜C(jī)制有分代復(fù)制垃圾回收和標(biāo)記垃圾回收,增量垃圾回收。

      4.線程同步的方法。

      wait():使一個(gè)線程處于等待狀態(tài),并且釋放所持有的對(duì)象的lock。

      sleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常。

      notify():喚醒一個(gè)處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時(shí)候,并不能確切地喚醒某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程,而且不是按優(yōu)先級(jí)。

      Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對(duì)象的鎖,而是讓它們競(jìng)爭(zhēng)。

      5.Error與Exception有什么區(qū)別?

      Error表示系統(tǒng)級(jí)的錯(cuò)誤和程序不必處理的異常,Exception表示需要捕捉或者需要程序進(jìn)行處理的異常。

      6.在java中一個(gè)類被聲明為final類型,表示了什么意思?

      表示該類不能被繼承,是頂級(jí)類。heap和stack有什么區(qū)別。

      棧是一種線形集合,其添加和刪除元素的操作應(yīng)在同一段完成。棧按照后進(jìn)先出的方式進(jìn)行處理。堆是棧的一個(gè)組成元素。

      8談?wù)刦inal, finally, finalize的區(qū)別。

      final—修飾符(關(guān)鍵字)如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個(gè)類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖?。被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。

      finally—異常處理時(shí)提供 finally 塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話)。

      finalize—方法名。Java 技術(shù)允許使用 finalize()方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize()方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize()方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。9Anonymous Inner Class(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實(shí)現(xiàn))interface(接口)?

      匿名的內(nèi)部類是沒有名字的內(nèi)部類。不能extends(繼承)其它類,但一個(gè)內(nèi)部類可以作為一個(gè)接口,由另一個(gè)內(nèi)部類實(shí)現(xiàn)。

      10Static Nested Class 和 Inner Class的不同

      Nested Class(一般是C++的說(shuō)法),Inner Class(一般是JAVA的說(shuō)法)。Java內(nèi)部類與C++嵌套類最大的不同就在于是否有指向外部的引用上。

      注: 靜態(tài)內(nèi)部類(Inner Class)意味著1創(chuàng)建一個(gè)static內(nèi)部類的對(duì)象,不需要一個(gè)外部類對(duì)象,2不能從一個(gè)static內(nèi)部類的一個(gè)對(duì)象訪問一個(gè)外部類對(duì)象.

      第三篇:JAVA基礎(chǔ)知識(shí)點(diǎn)總結(jié)

      1)開發(fā)Java語(yǔ)言的公司? Sun(Sun Microsystems)太陽(yáng)微電子公司開發(fā) 2)

      Java的3個(gè)版本?

      J2SE(Java2 Standard Edition)標(biāo)準(zhǔn)版

      J2EE(Java 2 Platform,Enterprise Edition)企業(yè)版 J2ME(Java 2 Micro Edition)微小版

      在5.0以后新版本中稱作:JavaSE JavaEE JavaME 3)

      Java語(yǔ)言的幾個(gè)主要特點(diǎn)?平臺(tái)無(wú)關(guān)性:能運(yùn)行于不同的平臺(tái)上

      安全性:去掉了指針操作,內(nèi)存由操作系統(tǒng)分配 面向?qū)ο螅豪妙愂钩绦蚋永诰S護(hù)

      分布式:可以使用網(wǎng)絡(luò)文件和使用本機(jī)文件一樣容易 健壯性:檢查程序編譯和運(yùn)行的錯(cuò)誤 4)

      Java的三大核心機(jī)制

      虛擬機(jī)機(jī)制:利用虛擬機(jī)解釋字節(jié)碼執(zhí)行java程序?qū)崿F(xiàn)跨平臺(tái) 垃圾收集機(jī)制:自動(dòng)內(nèi)存回收

      代碼安全性機(jī)制:加載代碼后校驗(yàn)代碼后再執(zhí)行代碼 第2章Java語(yǔ)言的開發(fā)環(huán)境 1)

      JDK是什么?

      JDK(Java Development Kit)Java開發(fā)工具包。包括了JRE,是開發(fā)Java的人員必備的開發(fā)運(yùn)行Java程序的工具。2)

      JRE是什么?

      JRE(Java Runtime Environment)Java運(yùn)行環(huán)境,運(yùn)行JAVA程序所必須的環(huán)境的集合,包含JVM標(biāo)準(zhǔn)實(shí)現(xiàn)及Java核心類庫(kù)。3)

      JVM是什么?

      JVM(Java Virtual Machine)Java虛擬機(jī),它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。4)

      安裝JDK的操作系統(tǒng)問題?

      必須針對(duì)于不同的操作系統(tǒng)下載安裝不同的JDK,例如windows下安裝針對(duì)于windows的JDK,linux下安裝針對(duì)于linux的JDK。

      5)需要配置的相關(guān)環(huán)境變量? path:用于搜索外部命令,例如編譯程序的javac命令,執(zhí)行程序的java命令

      classpath:用于搜索類,即class文件,例如可以在不同的位置執(zhí)行類文件 6)

      配置環(huán)境變量的方式? 有兩種:臨時(shí)配置和持久配置

      臨時(shí)配置:在命令行下用set 變量名=變量值,僅在當(dāng)前命令行窗口有效

      持久配置:在我的電腦——屬性中配置,持久有效 7)可以編寫Java程序的常見開發(fā)工具? 記事本,EditPlus,ULTRAEDIT,Eclipse,Jbuilder,NetBeans 8)

      Java文件的類型?

      有兩種:

      擴(kuò)展名為java的文件:是Java源文件,屬于編譯之前的純文本文件,存儲(chǔ)java源代碼。

      擴(kuò)展名為class的文件:是Java類文件,屬于編譯之后的二進(jìn)制文件,存儲(chǔ)字節(jié)碼。9)

      Java的編譯運(yùn)行原理?

      首先編寫java源文件,然后編譯成class類文件,然后通過(guò)虛擬機(jī)解釋成機(jī)器碼到硬件執(zhí)行。

      10)Java是編譯型語(yǔ)言還是解釋型的語(yǔ)言?

      既不是完全編譯型,也不是完全解釋型,是半編譯半解釋的。第3章Java程序的基本結(jié)構(gòu) 1)

      Java語(yǔ)言區(qū)分大小寫嗎?

      區(qū)分,不管是數(shù)據(jù)還是標(biāo)識(shí)符或者關(guān)鍵字都區(qū)分大小寫,例如public不能寫成Public,“abc”不能寫成“ABC”,int i不能寫成INT I等等。2)main方法是作什么用處的? 這是程序的入口方法,是由虛擬機(jī)自動(dòng)調(diào)用的。

      3)語(yǔ)句必須用分號(hào)結(jié)束嗎? 必須的,但是代碼塊{}可以用分號(hào)結(jié)束,也可以不用分號(hào)結(jié)束

      4)

      Java中有幾種注釋,各自的功能

      有三種:

      單行注釋//:加在行首只能注釋一行 多行注釋/* */:注釋多行,但不能嵌套使用

      文檔注釋/***/:用于生成HTML形式的文檔,需要配合javadoc命令實(shí)現(xiàn) 5)Java語(yǔ)言的數(shù)據(jù)類型是強(qiáng)類型還是弱類型? 是強(qiáng)類型,意味著每一個(gè)變量都必須明確聲明數(shù)據(jù)類型。6)

      Java語(yǔ)言中數(shù)據(jù)類型的劃分?有什么區(qū)別? 分成基本類型和引用類型兩大類。

      基本類型:有8種,只能存儲(chǔ)單一的值,不以對(duì)象的形式存在引用類型:除了基本類型之外其他的都是引用類型,能夠存儲(chǔ)復(fù)雜數(shù)據(jù)類型,以對(duì)象的形式存在 7)

      基本類型都有哪8種類型? 布爾類型:boolean 占1字節(jié) 字符類型:char 占2字節(jié)

      整型:byte 占1字節(jié) short 占2字節(jié) int 占4字節(jié) long 占8字節(jié)

      浮點(diǎn)型:float 占4字節(jié)double 占8字節(jié) 8)

      布爾值可不可以用0或者非0數(shù)代替?

      不可以,布爾值只能是true和false,不能使用數(shù)字,這和C語(yǔ)言是不一樣的。9)

      直接寫個(gè)整數(shù)10默認(rèn)是什么類型的?

      整型的直接量例如10,100等默認(rèn)的數(shù)據(jù)類型都是int型 10)如何讓一個(gè)整型的直接量變成long型的? 在直接量后面加大寫L后者小寫l,例如10L 11)整型數(shù)據(jù)在程序中直接使用可以使用什么進(jìn)制? 10進(jìn)制,8進(jìn)制,16進(jìn)制,但不能使用二進(jìn)制 12)浮點(diǎn)運(yùn)算在Java中有沒有誤差? 有誤差,所以精密運(yùn)算請(qǐng)使用BigDecimal類 13)直接寫一個(gè)3.14的直接量是什么數(shù)據(jù)類型的?

      是double型,如果想表示是float的3.14必須寫成3.14F或者3.14f,double型的3.14也可以寫成3.14D 14)char型采取的是什么類型的字符集?

      是Unicode全球統(tǒng)一編碼,支持任何世界上官方的語(yǔ)言中的字符

      15)常見的轉(zhuǎn)義字符有哪些? 轉(zhuǎn)義序列 名稱 b 退格 t 制表 n 換行 r

      回車

      ” 雙引號(hào) ’ 單引號(hào) 反斜杠

      16)常見的Unicode字符對(duì)應(yīng)的編碼?

      大寫的A到Z是對(duì)應(yīng)65到90,小寫的a到z是對(duì)應(yīng)97到122,字符0到9是對(duì)應(yīng)48到57

      17)空字符是不是用’’(兩個(gè)并列的單引號(hào))來(lái)表示? 不是,空字符用’u0000’來(lái)表示,兩個(gè)并列的單引號(hào)什么也不是。

      18)點(diǎn),分號(hào),花括號(hào)的各自的作用?

      點(diǎn)的作用有兩個(gè):一個(gè)是使用類或?qū)ο笾械某蓡T,用對(duì)象.成員,再一個(gè)就是包名和子包名之間的分隔符,例如頂層包名.子包名 分號(hào)的作用是表示語(yǔ)句結(jié)束 花括號(hào)的作用是代表一個(gè)語(yǔ)句塊

      19)語(yǔ)句和關(guān)鍵字之間可以有任意的空白嗎? 可以的,例如System.out.println(100);就是正確的語(yǔ)句,但是關(guān)鍵字本身不能加空白或換行

      20)標(biāo)識(shí)符是什么?

      標(biāo)識(shí)符就是指在程序中給包,類,接口,方法,變量起的名字 21)標(biāo)識(shí)符有什么起名規(guī)則? 1. 應(yīng)以字母、下劃線、美元符開頭 2. 后跟字母、下劃線、美元符或數(shù)字 3. 不能用關(guān)鍵字和保留字

      4. 嚴(yán)格區(qū)分大小寫 5. 名稱長(zhǎng)度沒有限制 22)中文的變量名可以嗎?

      是可以的,例如 int 數(shù)字 = 10;這個(gè)語(yǔ)句是正確的。因?yàn)閖ava中采取Unicode字符集,所以任何的Unicode中的字符都可以作為標(biāo)識(shí)符的名稱,但考慮字符集的支持問題推薦還是使用英文字母命名。

      23)關(guān)鍵字和保留字有區(qū)別嗎?

      在1.5后沒有區(qū)別,都被稱作關(guān)鍵字,但是1.5之前認(rèn)為關(guān)鍵字是在Java中有特殊用途的不允許編程人員擅自改作其他用途,而保留字是在Java中沒有特殊用途但不允許編程人員擅自改作其他用途,按此說(shuō)法goto和const應(yīng)該是此意義上的保留字。

      24)true,false,null可以用作標(biāo)識(shí)符命名嗎?

      不可以,這3個(gè)雖然不是關(guān)鍵字,但都是有特殊用途的值,也不能作為標(biāo)識(shí)符命名

      25)一條聲明語(yǔ)句可以聲明多個(gè)變量嗎? 可以的,例如以下聲明都是正確的int i;int i,j;int i = 10,j;int i,j = 10;

      int i = 10,j = 20;

      26)變量在沒有賦值的情況下可以使用嗎?

      不可以,變量沒有賦值使用會(huì)報(bào)出變量未初始化的編譯錯(cuò)誤。27)常量有什么特點(diǎn)?

      在聲明變量的時(shí)候加上final修飾符即為常量,表示這個(gè)變量只能被賦一次值。

      28)算數(shù)運(yùn)算符有哪些? 基本算數(shù)運(yùn)算符有+-* / % ++--

      29)單目運(yùn)算符,雙目運(yùn)算符,三目運(yùn)算符都是什么意思? 其實(shí)也有叫一元運(yùn)算符,雙元操作符,三元操作符的,指的是

      有幾個(gè)操作數(shù)形成一個(gè)完整表達(dá)式,例如++就是一個(gè)單目運(yùn)算符,只需要一個(gè)操作數(shù)就可以形成表達(dá)式,像i++,而+運(yùn)算符就是雙目運(yùn)算符,需要兩個(gè)操作數(shù)形成表達(dá)式,例如5 + 3,還有三目運(yùn)算符,例如5 > 3 ? 0 :-1

      30)++和--放在前面和放在后面有什么區(qū)別?

      如果是在一個(gè)表達(dá)式中,那++放后面表示先運(yùn)算表達(dá)式,然后再進(jìn)行自增運(yùn)算,如果在一個(gè)表達(dá)式中,++放前面,則表示先進(jìn)行自增運(yùn)算然后在運(yùn)算表達(dá)式。--同樣道理。例如: int i = 10;int j = i ++;//先進(jìn)行賦值運(yùn)算然后再進(jìn)行自增運(yùn)算j的結(jié)果是10

      int i = 10;

      int j = ++ i;//先進(jìn)行自增運(yùn)算然后再進(jìn)行賦值運(yùn)算

      j的結(jié)果是11

      31)-5 % 2等于幾,5 %-2等于幾?

      -5 % 2等于-1,5%-2等于1,運(yùn)算得到是正數(shù)還是負(fù)數(shù)取決于第一個(gè)操作數(shù)的符號(hào) 32)5 / 2 結(jié)果是不是2.5?

      不是,是2,因?yàn)?和2都是int類型,所以不可能得到double型的結(jié)果。

      33)比較運(yùn)算符有哪些?

      有><>=<===!= 六項(xiàng)基本比較運(yùn)算 34)任何數(shù)據(jù)類型都可以使用> < >= <=運(yùn)算符嗎?

      不是所有數(shù)據(jù)類型,例如true>false這個(gè)表達(dá)式就是編譯錯(cuò)誤,布爾類型和引用類型的表達(dá)式只能用==和!=兩個(gè)比較運(yùn)算,例如”abc” <= ”xyz” 這個(gè)表達(dá)式也是編譯錯(cuò)誤的 35)’a’ > ’b’這個(gè)表達(dá)式編譯正確嗎?

      編譯正確,’a’和’b’是字符類型,內(nèi)部用Unicode編碼表示的話a是97,b是98,所以實(shí)際上比較的是97>98,結(jié)果為false 36)邏輯運(yùn)算符有哪些?

      有 &邏輯與,|邏輯或,!邏輯非,^ 異或,&& 短路與,||短路或

      37)邏輯與,邏輯或和短路與,短路或有什么區(qū)別? 邏輯與和短路與的區(qū)別是: ?

      如果是邏輯與&,不管第一個(gè)表達(dá)式是true還是false,都會(huì)執(zhí)行第二個(gè)表達(dá)式,例如a > b & x < y,即使a > b為false,也會(huì)執(zhí)行x > y ?

      如果是短路與&&,如果第一個(gè)表達(dá)式為false,將不會(huì)執(zhí)行第二個(gè)表達(dá)式

      例如a > b && x < y,如果a > b為false,就不會(huì)執(zhí)行x > y

      以此類推,邏輯或和短路或的區(qū)別是:

      ? 如果是邏輯或|,不管第一個(gè)表達(dá)式是true還是false,都會(huì)執(zhí)行第二個(gè)表達(dá)式 ?

      如果是短路或||,如果第一個(gè)表達(dá)式為true,將不會(huì)執(zhí)行

      第二個(gè)表達(dá)式

      38)與或非三個(gè)邏輯運(yùn)算符的優(yōu)先級(jí)是怎么排列的? “非”優(yōu)先級(jí)最高,“與”其次,“或”優(yōu)先級(jí)最低 39)原碼,反碼,補(bǔ)碼分別是什么意思? ?

      原碼:將數(shù)字轉(zhuǎn)換為二進(jìn)制,第一位為符號(hào)位,正數(shù)為0,負(fù)數(shù)為1

      例如:12的原碼是00001100-12的原碼是10001100 ?

      反碼:正數(shù)的反碼和原碼相同,負(fù)數(shù)的反碼將原碼符號(hào)位之外的位逐位取反

      例如:12的反碼是00001100-12的反碼是11110011 ?

      補(bǔ)碼:正數(shù)的補(bǔ)碼和原碼相同,負(fù)數(shù)的補(bǔ)碼將反碼加1 例如:12的補(bǔ)碼是00001100-12的補(bǔ)碼是11110100 最后強(qiáng)調(diào)一點(diǎn),計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)用補(bǔ)碼形式來(lái)存儲(chǔ)。40)位運(yùn)算符都有哪些?

      &與 |或 ^異或 ~非 >>右移 <<左移 >>>無(wú)符號(hào)右移 41)1<<35怎么理解?

      1是int類型是32位,所以需要把35%32=3,所以事實(shí)上是和執(zhí)行1<<3等價(jià)的42)數(shù)據(jù)類型轉(zhuǎn)換需要遵循什么原則?

      小類型向大類型轉(zhuǎn)換,是自動(dòng)轉(zhuǎn)換的,或者說(shuō)隱式轉(zhuǎn)換的 大類型向小類型轉(zhuǎn)換,是需要強(qiáng)制轉(zhuǎn)換的,或者說(shuō)顯式轉(zhuǎn)換例如:byte b = 1;

      short s = b;//自動(dòng)轉(zhuǎn)換

      b =(byte)s;//強(qiáng)制轉(zhuǎn)換

      43)byte b = 10這個(gè)語(yǔ)句是正確的,為什么10是int型比byte大還不需要強(qiáng)制轉(zhuǎn)換呢?

      因?yàn)樵趈ava中做了特殊處理,其中規(guī)定byte,short,char類型可以直接賦予int類型的直接量,例如: byte b = 10;short s = 10;char c = 10;

      以上賦值語(yǔ)句都是正確的。

      但是不能超出超出類型的范圍,例如以下賦值就是錯(cuò)誤的: byte b = 128;

      如果超出范圍,必須得作強(qiáng)制轉(zhuǎn)換,例如以下語(yǔ)句是正確的: byte b =(byte)128;

      需要強(qiáng)調(diào)的是,必須是int類型的直接量,以下語(yǔ)句就是錯(cuò)誤的: byte b = 10L;

      10L不是int類型的直接量。

      44)byte b =(byte)300;強(qiáng)制轉(zhuǎn)換后的結(jié)果是44,是按照什么規(guī)律得出來(lái)的?

      是先把300轉(zhuǎn)換成二進(jìn)制,然后根據(jù)byte類型的大小截取了后8個(gè)位

      300的補(bǔ)碼是00000000 00000000 00000001 00101100

      b的結(jié)果是:00000000 00000000 00000001 00101100 結(jié)果為44 45)byte b =(byte)true;這個(gè)轉(zhuǎn)換成立嗎?

      不成立,布爾值和數(shù)字是不兼容的,不能作任何轉(zhuǎn)換。

      46)int i =(int)“100”;這個(gè)轉(zhuǎn)換成立嗎?

      不成立,引用類型和基本類型是不能直接強(qiáng)制轉(zhuǎn)換的,需要用包裝類的方法來(lái)轉(zhuǎn)換。

      47)char型和short型哪個(gè)比較大?

      不能說(shuō)哪個(gè)大,哪個(gè)小,這兩個(gè)類型char的取值是從0~65535,而short類型的取值是-32768~32767,這個(gè)兩個(gè)類型之間的轉(zhuǎn)換都需要強(qiáng)制轉(zhuǎn)換。

      48)字符串是不是基本類型?

      不是,String是java.lang包中的一個(gè)類,是引用類型的,8種基本類型中沒有一個(gè)是String類型。49)空字符串用什么來(lái)表示?

      用””(兩個(gè)并列的雙引號(hào))表示,代表0個(gè)長(zhǎng)度的字符串對(duì)象。50)String s = “”;和String s = null;有什么區(qū)別?

      第一個(gè)表示s被賦值,指向了一個(gè)字符串對(duì)象,第二個(gè)表示s沒有指向任何對(duì)象實(shí)例,是真空

      51)兩個(gè)字符串用什么運(yùn)算符可以連成一個(gè)字符串? 用+運(yùn)算符,例如”abc” + “xyz”最后的結(jié)果就是“abcxyz” 52)數(shù)學(xué)運(yùn)算符加法和字符串連接符都是+,怎么區(qū)分? 是通過(guò)運(yùn)算符兩邊的操作數(shù)來(lái)判斷的,如果兩邊的操作數(shù)都是數(shù)字型的基本類型,則進(jìn)行數(shù)學(xué)運(yùn)算,如果兩邊的操作數(shù)有一個(gè)是字符串,則把另一個(gè)操作數(shù)也轉(zhuǎn)換為則進(jìn)行字符串連接運(yùn)算。例如:+ 4 的結(jié)果是9 “5” + 4的結(jié)果是54

      53)判斷字符串內(nèi)容相同用什么方法?

      用equals方法判斷內(nèi)容相同,==只能判斷引用是否相同 54)提供用戶輸入使用哪個(gè)類 使用javav.util.Scanner類

      55)if語(yǔ)句可以用if(-1)形式判斷嗎? 不可以,數(shù)字不能代替布爾值

      56)if語(yǔ)句和循環(huán)語(yǔ)句的花括號(hào)什么時(shí)候可以省略?

      當(dāng)執(zhí)行的語(yǔ)句只有一句的時(shí)候 57)switch語(yǔ)句有哪些規(guī)則?

      表達(dá)式expr的返回值必須是下述幾種類型之一:int, byte, char, short或枚舉常量;

      case子句中的值必須是常量,且所有case子句中的值應(yīng)是不同的,也必須是下述幾種類型之一:int, byte, char, short或枚舉常量

      default子句是任選的;

      break語(yǔ)句用來(lái)在執(zhí)行完一個(gè)case分支后使程序跳出switch語(yǔ)句塊;

      58)對(duì)于退出循環(huán)break和continue有什么區(qū)別? break是退出整個(gè)循環(huán)

      continue是退出當(dāng)前循環(huán)繼續(xù)下一次循環(huán) 59)聲明數(shù)組創(chuàng)建數(shù)組的方法? 以下聲明都是合法的: int [] a;int a[];String[] a;

      以下創(chuàng)建數(shù)組對(duì)象都是合法的: int[] a = new int[3];int[] a = {1,2,3};int[] a = new int[] {1,2,3};

      60)int[] x和String[] s這兩個(gè)數(shù)組對(duì)象,哪個(gè)是基本類型,哪個(gè)是引用類型?

      兩個(gè)都是數(shù)組對(duì)象,都是引用類型的61)數(shù)組元素下標(biāo)最小是多少,最大是多少,超出范圍會(huì)怎么樣?

      最小是0,最大是數(shù)組元素個(gè)數(shù)減一,超出范圍將會(huì)出現(xiàn)下標(biāo)越界異常

      62)得到數(shù)組長(zhǎng)度用length屬性還是length()方法? 是length屬性,得到字符串長(zhǎng)度才有l(wèi)ength方法

      63)聲明int[][] a = new int[3][],a是一個(gè)二維數(shù)組,a[0]本身

      是什么類型的?

      二維數(shù)組的元素都是一維數(shù)組,a[0]是int[]類型的 64)數(shù)組的大小一經(jīng)創(chuàng)建可不可以改變大小了? 不可以,數(shù)組是定長(zhǎng)的,一經(jīng)創(chuàng)建就不能再改變大小了 65)可以把2個(gè)int型,3個(gè)double型,4個(gè)String型的值放到一個(gè)數(shù)組中嗎?

      不可以,數(shù)組的元素類型必須是相同類型的。66)java中的多維數(shù)組必須是要形成矩陣排列嗎? 不一定,也可以是不規(guī)則的。67)操作數(shù)組比較方便的實(shí)用類?

      java.util.Arrays類提供了很多關(guān)于數(shù)組的實(shí)用方法。第4章對(duì)象和類 1)OOP是什么意思? Object Oriented Programming(面向?qū)ο缶幊?

      2)

      類和對(duì)象的區(qū)別?

      類:對(duì)象的藍(lán)圖,生成對(duì)象的模板,是對(duì)一類事物的描述,是抽象的概念上的定義

      對(duì)象:對(duì)象是實(shí)際存在的該類事物的每個(gè)個(gè)體,因而也稱為實(shí)例 3)

      類之間的3種關(guān)系? 依賴關(guān)系(uses-a)聚集關(guān)系(has-a)繼承關(guān)系(is-a)4)

      一個(gè)java源文件可以寫多個(gè)類嗎?

      可以,但必須只能有一個(gè)公有類,并且文件名和公有類的類名相同。5)類中有哪些成員?

      有屬性(數(shù)據(jù)域),方法,構(gòu)造器(構(gòu)造方法)

      6)

      構(gòu)造方法和普通方法的區(qū)別?

      構(gòu)造方法沒有返回值,方法名必須和類名相同,需要用new語(yǔ)句調(diào)用構(gòu)造方法。7)

      普通方法可不可以也類名作為方法名?

      是可以的,因?yàn)檎{(diào)用普通方法的語(yǔ)法和調(diào)用構(gòu)造器的語(yǔ)法不一樣。8)

      一個(gè)構(gòu)造器調(diào)用另外一個(gè)構(gòu)造器需要用什么語(yǔ)法? 用this()語(yǔ)法調(diào)用另外一個(gè)重載構(gòu)造器,需要注意的是調(diào)用語(yǔ)句必須是構(gòu)造器中的第一句 9)

      什么時(shí)候虛擬機(jī)會(huì)自動(dòng)添加一個(gè)默認(rèn)構(gòu)造器?

      當(dāng)類中沒有顯式定義任何構(gòu)造器的時(shí)候,虛擬機(jī)會(huì)自動(dòng)添加一個(gè)無(wú)參的構(gòu)造器

      10)實(shí)例成員和靜態(tài)成員的區(qū)別?

      實(shí)例成員:是屬于對(duì)象實(shí)例的,用對(duì)象.成員名稱語(yǔ)法調(diào)用 靜態(tài)成員:和對(duì)象實(shí)例無(wú)關(guān),是屬于類本身的,用類名.成員名稱語(yǔ)法調(diào)用

      11)靜態(tài)初始化塊statci{}的執(zhí)行時(shí)機(jī)是什么時(shí)候? 在類被加載的時(shí)候,僅執(zhí)行一次。

      12)靜態(tài)方法可不可以直接調(diào)用同一個(gè)類中的非靜態(tài)方法? 不可以,靜態(tài)方法不能直接調(diào)用一個(gè)非靜態(tài)成員,需要用對(duì)象調(diào)用。

      13)包是什么?

      包實(shí)際上就是物理上的文件夾,可以把類放到不同的包中。14)把一個(gè)類放到包中,需要在類中加上什么語(yǔ)句? 需要加上包聲明package語(yǔ)句,必須寫在源文件的第一句。15)什么時(shí)候需要導(dǎo)入類?用什么語(yǔ)句?

      當(dāng)使用的類和當(dāng)前類并不在同一個(gè)包中的時(shí)候,用import語(yǔ)句導(dǎo)入。

      16)默認(rèn)包中的類可以導(dǎo)入嗎?

      不可以,不在默認(rèn)包中的類無(wú)法使用默認(rèn)包中的類。17)java中哪個(gè)包中的類是自動(dòng)導(dǎo)入的? java.lang包

      18)什么叫做完整類名? 頂層包名.子包名.類名

      19)靜態(tài)導(dǎo)入語(yǔ)句有什么作用?

      在使用類中的靜態(tài)成員的時(shí)候前面不需要加類名前綴。

      20)局部變量和全局變量的區(qū)別? 區(qū)別 局部變量 全局變量

      聲明位置 方法或塊內(nèi)部 方法外類內(nèi)部 訪問權(quán)限修飾符 沒有訪問權(quán)限 有訪問權(quán)限

      默認(rèn)值 沒有默認(rèn)值

      有默認(rèn)值

      使用形式 直接使用 對(duì)象調(diào)用

      作用域

      在方法或語(yǔ)句塊內(nèi)部 整個(gè)類

      生命周期 進(jìn)入方法或語(yǔ)句塊創(chuàng)建退出方法或語(yǔ)句塊銷毀 隨著對(duì)象的創(chuàng)建而創(chuàng)建隨著對(duì)象的銷毀而銷毀

      21)賦值語(yǔ)句賦給目標(biāo)的是值還是引用?

      如果是基本類型則賦的是值本身,引用類型則賦的是引用地址 第5章繼承和多態(tài) 1)類的繼承是誰(shuí)繼承誰(shuí)?

      是子類繼承了父類,子類也稱為派生類,父類也稱為超類或基

      類 2)子類繼承了父類的什么東西?

      子類可以繼承父類的數(shù)據(jù)域(屬性),方法,但構(gòu)造器不能繼

      承 3)

      私有成員能被子類繼承嗎?

      能繼承,但是由于訪問權(quán)限的控制,在子類中不能直接使用父類的私有成員 4)

      Object是什么類?

      這個(gè)所有類的根類,任何類如果沒有寫顯式的繼承語(yǔ)句,默認(rèn)都是直接繼承Object類的 5)java中是單繼承還是多繼承?

      是單繼承,一個(gè)子類只能有一個(gè)父類 6)

      訪問權(quán)限修飾符有幾種,訪問的范圍又是多大? 有四種:

      private:私用 只能在被類中被訪問 default:默認(rèn) 只能被同一個(gè)包中的類訪問

      protected:受保護(hù)的 只能被同一個(gè)包中的類和不同包中的子類

      訪問

      public:公有 可以被任何類訪問 7)

      覆蓋方法的規(guī)則有哪些?

      子類覆蓋方法和父類被覆蓋方法的方法返回類型,方法名稱,參數(shù)列表必須相同

      子類覆蓋方法的訪問權(quán)限必須大于等于父類的方法的訪問權(quán)限

      方法覆蓋只能存在于子類和父類之間

      子類覆蓋方法不能比父類被覆蓋方法拋出更多異常 8)

      參數(shù)列表是否相同從哪幾方面看?

      從三方面看:參數(shù)個(gè)數(shù),類型和順序,需要注意的是參數(shù)的名字不相同是無(wú)所謂的 9)

      覆蓋方法的規(guī)則有哪些? 方法名相同

      方法的參數(shù)類型,個(gè)數(shù),順序至少有一項(xiàng)不同 方法的返回類型和修飾符均不受限制

      10)可變長(zhǎng)參數(shù)的聲明格式是什么?實(shí)際上是什么類型的? 類型 ? 變量,實(shí)際上是一個(gè)一維數(shù)組 11)this和super是作什么用處的?

      this:本身代表當(dāng)前的對(duì)象引用,可以用this.成員名稱調(diào)用當(dāng)前對(duì)象的屬性和方法,如果屬性和局部變量重名,可以用this.屬性名和局部變量區(qū)分開。也可以用this()語(yǔ)法調(diào)用本類重載構(gòu)造器。

      super:本事是一個(gè)特殊關(guān)鍵字,可以用super.成員名稱調(diào)用從父類繼承的屬性和方法,也可以用super()語(yǔ)法調(diào)用父類構(gòu)造器。

      12)super代表子類中的父類對(duì)象引用嗎?

      不,這個(gè)錯(cuò)誤的說(shuō)法,super不代表任何對(duì)象引用,僅僅是一個(gè)關(guān)鍵字

      13)什么時(shí)候子類構(gòu)造器會(huì)自動(dòng)調(diào)用父類無(wú)參構(gòu)造器? 當(dāng)子類構(gòu)造器中沒有任何顯式構(gòu)造器調(diào)用的時(shí)候,即既沒有this()調(diào)用也沒有super()調(diào)用的時(shí)候

      14)一個(gè)父類類型的引用變量可以引用一個(gè)子類的實(shí)例嗎? 可以,這個(gè)引用變量是一個(gè)多態(tài)對(duì)象 15)多態(tài)對(duì)象有什么特點(diǎn)?

      多態(tài)對(duì)象只能使用父類的成員,但如果多態(tài)對(duì)象使用了被子類覆蓋的方法,則會(huì)動(dòng)態(tài)綁定使用子類的成員,稱為虛擬方法調(diào)用

      16)引用類型之間的類型轉(zhuǎn)換需要遵循哪些規(guī)則? 自動(dòng)轉(zhuǎn)換:從子類到父類的類型可以自動(dòng)轉(zhuǎn)換 強(qiáng)制轉(zhuǎn)換:從父類到子類的類型要強(qiáng)制轉(zhuǎn)換 無(wú)繼承關(guān)系的類型轉(zhuǎn)換是非法的 17)instanceof操作符是作什么用處的?

      可以判斷一個(gè)對(duì)象的類型是否是某一個(gè)類的類型或子類,也可以判斷這個(gè)對(duì)象的類型是否是一個(gè)接口的實(shí)現(xiàn)類 18)toString方法什么時(shí)候會(huì)自動(dòng)被調(diào)用?

      在打印語(yǔ)句中傳入引用類型的對(duì)象或者對(duì)象和字符串作連接時(shí)

      19)默認(rèn)的equals方法實(shí)現(xiàn)的是比較內(nèi)容還是比較引用地址?

      在Object中是比較引用地址。

      20)覆蓋equals方法和hashCode方法有什么規(guī)則? 必須保證當(dāng)兩個(gè)對(duì)象equals比較為true的時(shí)候,返回的hashCode相同,當(dāng)比較為false的時(shí)候,返回的hashCode不同21)java中有幾個(gè)包裝類?

      有8個(gè)包裝類,正好對(duì)應(yīng)8種基本數(shù)據(jù)類型。

      分別是:Boolean Byte Short Integer Long Character Float Double 22)裝箱和拆箱分別是什么意思?

      裝箱指的是把基本類型包裝成包裝類的引用類型 拆箱指的是把包裝類形式的引用類型轉(zhuǎn)換為基本類型 例如:

      Integer objInt = new Integer(10);//裝箱

      int i = objInt.intValue();

      //拆箱

      23)JDK1.4和1.5的裝箱和拆箱有什么區(qū)別?

      自動(dòng)拆裝箱,例如: Integer intObj = 10;//自動(dòng)裝箱 int i = intObj + 5;//自動(dòng)拆箱

      24)final修飾符如何使用,使用了final修飾符有什么特點(diǎn)? final修飾符可以修飾類,方法,變量 final類為最終類,不能被子類繼承 final方法為最終方法,不能被子類覆蓋 final變量為常量,只能賦一次值

      25)abstract修飾符如何使用,使用了abstract修飾符有什么特點(diǎn)?

      abstract修飾符可以修飾類和方法 abstract類為抽象類,是不能創(chuàng)建對(duì)象的abstract方法為抽象方法,只有方法的聲明,沒有具體的實(shí)現(xiàn) 需要注意的是:

      有抽象方法的類一定是抽象類 抽象類不一定有抽象方法

      抽象類也有構(gòu)造器,但不能創(chuàng)建對(duì)象實(shí)例 26)abstract不能和哪些修飾符配合使用? 不能和private,static,final一起使用 27)可以在非抽象方法中調(diào)用抽象方法嗎? 可以,模板方法設(shè)計(jì)模式就是典型的這種調(diào)用 第6章 泛型程序設(shè)計(jì) 1)泛型的特點(diǎn)是什么? 主要特點(diǎn)是類型參數(shù)化,后期綁定數(shù)據(jù)類型 2)泛型支持基本類型嗎?

      不支持,只支持引用類型 3)如果沒有傳入類型參數(shù),默認(rèn)是什么類型? 默認(rèn)是Object類型

      4)泛型方法有什么特點(diǎn)?

      將泛型參數(shù)聲明在方法中,調(diào)用方法的時(shí)候綁定泛型 5)

      泛型類聲明泛型參數(shù)的時(shí)候,表示什

      么意思?

      表示綁定的類型必須是A類型后者是A類型的子類或?qū)崿F(xiàn)類 第7章 接口和內(nèi)部類

      1)聲明一個(gè)接口的關(guān)鍵字是什么? interface關(guān)鍵字

      2)

      接口中的成員有什么特點(diǎn)?

      數(shù)據(jù)域必須是(public static final修飾)公有靜態(tài)常量 方法必須是(public abstract修飾)公有抽象 沒有構(gòu)造方法 3)接口能創(chuàng)建對(duì)象實(shí)例嗎? 不能,接口沒有構(gòu)造器,不能創(chuàng)建對(duì)象

      4)

      接口和類的關(guān)系?

      接口和類之間是實(shí)現(xiàn)關(guān)系,一個(gè)類用implements語(yǔ)句實(shí)現(xiàn)了某接口,這個(gè)類被稱為接口的實(shí)現(xiàn)類,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,一個(gè)類實(shí)現(xiàn)了某接口,必須覆蓋這個(gè)接口中的所以方法,否則這個(gè)類必須是個(gè)抽象類 5)

      接口和接口的關(guān)系?

      接口和接口之間是繼承關(guān)系,一個(gè)接口用extends繼承另外一個(gè)接口,稱為這個(gè)接口的子接口。一個(gè)接口可以繼承多個(gè)父接口 6)

      內(nèi)部類如何定義?

      一個(gè)類聲明在另一個(gè)類的里面,這個(gè)類就被稱為內(nèi)部類,而外面的類被稱為外部類 7)

      內(nèi)部類可以分成幾種?

      實(shí)例內(nèi)部類:聲明在方法外邊沒有static修飾符 靜態(tài)內(nèi)部類:聲明在方法外邊有static修飾符 局部?jī)?nèi)部類:聲明在方法里邊 8)

      如何創(chuàng)建實(shí)例內(nèi)部類的對(duì)象實(shí)例? 需要用外部類的對(duì)象來(lái)創(chuàng)建 例如: class A {class B {

      }

      }

      如果像創(chuàng)建B類的實(shí)例,則必須用以下語(yǔ)句: A a = new A();A.B b = a.new B();9)

      如何在實(shí)例內(nèi)部類中訪問外部類的成員?

      在實(shí)例內(nèi)部類中可以直接使用外部類的成員,不需要?jiǎng)?chuàng)建外部類的對(duì)象實(shí)例,但是如果在內(nèi)部類中的成員名稱屏蔽隱藏了外部類的成員(即外部類和內(nèi)部類的成員名相同),則需要用“外部類名.this.成員名”訪問外部類成員 第8章異常處理

      1)異常的對(duì)象的根類是哪個(gè)類? 是Throwable類

      2)

      Throwable類有哪兩個(gè)分支?

      分成Error類和Excepion類兩個(gè)分支 Error類表示嚴(yán)重錯(cuò)誤

      Exception類表示可以在程序中處理的錯(cuò)誤 3)

      Exception類有哪兩個(gè)分支?

      分成運(yùn)行時(shí)異常和非運(yùn)行時(shí)異常(已檢查異常)運(yùn)行時(shí)異常編譯不檢查,在運(yùn)行時(shí)才會(huì)發(fā)生異常

      已檢查異常編譯時(shí)就會(huì)作檢查,不處理異常則通不過(guò)編譯 4)如果在try塊中發(fā)生異常,那么程序?qū)?huì)跳轉(zhuǎn)到哪? 會(huì)跳轉(zhuǎn)到catch語(yǔ)句塊 5)catch語(yǔ)句可以用父類類型捕獲子類異常嗎? 因?yàn)橛卸鄳B(tài)特點(diǎn),是可以的6)處理異常代碼finally語(yǔ)句會(huì)在什么時(shí)候執(zhí)行? finally代碼在任何時(shí)候都會(huì)執(zhí)行,不管有沒有發(fā)生異常。7)

      如何聲明已檢查異常,由誰(shuí)來(lái)處理這個(gè)異常? 用throws語(yǔ)句來(lái)聲明一個(gè)已檢查異常,由方法的調(diào)用者來(lái)處理這個(gè)異常 8)

      如何拋出一個(gè)異常? 用throw語(yǔ)句拋出

      9)如何創(chuàng)建一個(gè)自定義的異常類? 創(chuàng)建一個(gè)類,只要讓它繼承任何一個(gè)現(xiàn)有的異常類就可以了 10)覆蓋方法對(duì)于異常有什么要求? 覆蓋方法不能比父類方法拋出更多異常 第9章反射,代理,標(biāo)注

      1)

      獲得一個(gè)類型的Class對(duì)象有哪幾種途徑?

      方法1:對(duì)象.getClass()方法2:類型名.class 方法3:Class.forName()2)

      反射相關(guān)的類型都有哪些? Class 代表一個(gè)運(yùn)行時(shí)類 Field 代表一個(gè)類的屬性 Method 代表一個(gè)類的方法 Constructor 代筆一個(gè)類的構(gòu)造器 3)

      如何聲明一個(gè)自定義標(biāo)注? [<修飾符>] @interface <標(biāo)注名>{ 返回值方法名稱(); 返回值方法名稱(); ?? } 例如:

      public @interface MyComment { int id();String info();} 4)

      java有幾個(gè)內(nèi)置標(biāo)注? 有3個(gè)

      @Override——用于修飾此方法覆蓋了父類的方法,而非重載。@Deprecated——用于修飾已經(jīng)過(guò)時(shí)的方法。

      @SuppressWarnings——用于通知Java編譯器禁止特定的警告。第10章 java常用類 1)

      字符串String是可變類還是不可變類?

      是不可變類,一經(jīng)創(chuàng)建就不能修改其內(nèi)容了 2)

      字符串的常用方法有哪些? charAt方法:可以返回指定位置的字符 substring方法:可以截取子字符串 length方法:返回字符串長(zhǎng)度 indexOf方法:查找子串的位置 lastIndexOf方法:反向搜索字串的位置 replaceAll方法:替換字符串 split方法:分解字符串

      toLowerCase, toUpperCase方法:字符串大小寫轉(zhuǎn)換 3)StringBuffer類和String類有什么區(qū)別? StringBuffer是可變類,String是不可變類

      4)StringBuffer類和StringBuilder類有什么區(qū)別? StringBuffer類是線程安全的,StringBuilder類是線程不安全的5)Math類主要提供了哪些方法?

      Math類提供了大量的和數(shù)學(xué)運(yùn)算相關(guān)的靜態(tài)方法 6)Set集合和List集合共同的父接口是什么? 是Collection集合7)

      Set集合和List集合有什么區(qū)別? Set: Collection的子接口,不記錄元素的保存順序,且不允許有重復(fù)元素

      List: Collection的子接口,記錄元素的保存順序,且允許有重復(fù)元素 8)

      ArrayList和LinkedList有什么不同?

      ArrayList 的內(nèi)部實(shí)現(xiàn)是基于內(nèi)部數(shù)組Object[],所以從概念上

      講它更像數(shù)組

      LinkedList的內(nèi)部實(shí)現(xiàn)是基于一組連接的記錄,所以它更象一個(gè)鏈表 結(jié)構(gòu),所以它們?cè)谛阅苌嫌泻艽蟮牟顒e。ArrayList 隨機(jī)訪問比較塊,但插入和刪除元素比較慢 LinkedList但插入和刪除元素比較快,但隨機(jī)訪問比較慢 9)

      HashTable和HashMap有什么不同?

      HashTable是線程安全的,HashMap是線程不安全的10)Vector和ArrayList有什么不同? Vector是線程安全的ArrayList是線程不安全的 第11章 IO流 1)

      流分成哪兩類?

      按照單位劃分分成字節(jié)流和字符流。按輸入輸出分成輸入流和輸出流 2)

      和文件流相關(guān)的有那幾個(gè)類? FileInputStream文件輸入字節(jié)流 FileOutputStream文件輸出字節(jié)流 FileReader文件輸入字符流 FileWriter文件輸出字符流 3)

      文件流操作應(yīng)該用字節(jié)流還是字符流? 如果是純文本文件應(yīng)該用字符流 如果是二進(jìn)制文件應(yīng)該用字節(jié)流 4)

      文件操作用哪個(gè)類? 用java.io.File類 第12章 線程 1)

      創(chuàng)建一個(gè)線程類的兩種方式? 繼承Thread類 實(shí)現(xiàn)Runnable接口 2)線程體應(yīng)該放在哪個(gè)方法里面? run方法 3)啟動(dòng)新的線程用什么方法?

      用start方法

      4)一個(gè)線程對(duì)象能夠用start多次啟動(dòng)嗎? 不可以,一個(gè)線程方法只能start一次

      5)線程有哪幾種主要狀態(tài)? 有四種,分別是:新生狀態(tài),可運(yùn)行狀態(tài),阻塞狀態(tài),死亡狀

      態(tài) 6)

      線程的同步需要用什么方法? 舊的方法是用synchronized關(guān)鍵字

      新的方法是用ReentrantLock類的lock和unlock方法

      第四篇:Java基礎(chǔ)知識(shí)點(diǎn)總結(jié)-Ch1

      Java基礎(chǔ)知識(shí)點(diǎn)總結(jié)

      第一章 Java語(yǔ)言概述

      1.面性對(duì)象語(yǔ)言的基本特征。

      Java語(yǔ)言的特點(diǎn)。最大優(yōu)勢(shì)。

      Java語(yǔ)言是區(qū)分大小寫的。

      2.Java虛擬機(jī)的核心。

      環(huán)境變量classpath設(shè)置中的“.;”是指可以加載應(yīng)用程序當(dāng)前目錄及其子目錄中的類。環(huán)境變量的變量值的最后是以“rt.jar;.;”結(jié)束。

      3.編寫源文件時(shí)不可以使用Word編輯器,因?yàn)樗胁豢梢娮址?/p>

      要用記事本或Edit。源文件的擴(kuò)展名是java。

      4.一個(gè)Java應(yīng)用程序的源文件必須有一個(gè)類含有public static void main(String args[ ])的方法,這樣類的應(yīng)用程序叫做主類。

      5.源文件的名稱必須與有public修飾的類的名稱相同。

      若源文件有多個(gè)類,那么只能有一個(gè)是public類;

      若只有一個(gè)類是 public類,那么源文件的名字必須與這個(gè)類的名字完全相同,擴(kuò)展名是.java;

      若源文件沒有public類,那么源文件的名字只要和某個(gè)類的名字相同即可,并且擴(kuò)展名為.java。

      6.編譯時(shí),Java編譯器是什么。

      進(jìn)入某個(gè)文件夾的命令是“cd 目錄名”;退出某個(gè)文件夾的命令是“cd..”。

      7.編譯源文件后將生成多個(gè)擴(kuò)展名為.class的文件,每個(gè)擴(kuò)展名是.class的文件夾存放一個(gè)類的字節(jié)碼文件,文件名與該類的類名相同。這些字節(jié)碼文件被存放在與源文件相同的目錄中。

      8.運(yùn)行時(shí),Java解釋器是什么。

      Java應(yīng)用程序總是從主類的main方法開始執(zhí)行。

      9.在運(yùn)行字節(jié)碼文件是不可以帶有擴(kuò)展名。

      當(dāng)Java應(yīng)用程序有多個(gè)類時(shí),Java命令執(zhí)行的類名必須是主類的名字(不帶擴(kuò)展名)。

      10.例子:有一個(gè)源文件名字叫Apple.java,其中包括3個(gè)類,名字分別是Apple, Banana, Orange,有1個(gè)是主類,則主類名是什么,生成多少個(gè)字節(jié)碼文件,字節(jié)碼文件名稱是什么,在編譯,運(yùn)行時(shí)語(yǔ)句分別是怎樣的。

      11.Application程序又稱什么,Applet程序又稱什么,哪一個(gè)是源文件編譯時(shí)運(yùn)行的程序。

      12.J開發(fā)一個(gè)Java程序要經(jīng)過(guò)的三個(gè)步驟。

      13.單行注釋,多行注釋的標(biāo)記分別是什么

      14.javac *.java的意思。

      15.Allmans風(fēng)格又稱什么,Kernighan風(fēng)格又稱什么,兩者各自的意思是什么。

      第五篇:Java基礎(chǔ)學(xué)習(xí)知識(shí)點(diǎn)總結(jié)

      黑馬程序員_畢向東_Java基礎(chǔ)視頻教程

      Java基礎(chǔ)學(xué)習(xí)知識(shí)點(diǎn)總結(jié) 2016年01月06日

      day01

      一、基礎(chǔ)知識(shí):軟件開發(fā)

      1、什么是軟件?軟件:一系列按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合。

      2、常見的軟件:系統(tǒng)軟件:如:DOS,Windows,Linux等。應(yīng)用軟件:如:掃雷,迅雷,QQ等。

      3、什么是開發(fā)?制作軟件。

      二、基礎(chǔ)知識(shí):人機(jī)交互方式

      4、軟件的出現(xiàn)實(shí)現(xiàn)了人與計(jì)算機(jī)之間的更好的交互。

      5、交互方式:圖形化界面:這種方式簡(jiǎn)單直觀,使用者易于接受,容易上手操作。命令行方式:需要有一個(gè)控制臺(tái),輸入特定的指令,讓計(jì)算機(jī)完成一些特定的操作。較為麻煩,需要記錄住一些命令。

      三、基礎(chǔ)知識(shí):常用的DOS命令

      6、點(diǎn)擊開始在運(yùn)行欄輸入“cmd”進(jìn)入dos操作界面。

      7、課程中常見的命令:

      dir:列出當(dāng)前目錄下的文件以及文件夾。md:創(chuàng)建目錄。rd:刪除目錄。

      cd:進(jìn)入指定目錄。d:進(jìn)入盤符。cd..:退回到上一級(jí)目錄。cd/:退回到根目錄。del:刪除文件。

      exit:退出dos命令行。

      8、在dos命令行操作文件夾時(shí),如忘記文件夾全稱,可以輸文件夾前幾個(gè)名稱后面用*代替。

      四、基礎(chǔ)知識(shí):計(jì)算機(jī)語(yǔ)言

      9、通過(guò)DOS命令行的演示,發(fā)現(xiàn)原來(lái)操作計(jì)算機(jī)就如同和計(jì)算機(jī)說(shuō)話一樣。

      10、我們告訴它做什么,它就可以做什么。前提是,我們和它說(shuō)的內(nèi)容它必須識(shí)別才可以。這就是計(jì)算機(jī)語(yǔ)言。

      11、什么是計(jì)算機(jī)語(yǔ)言?語(yǔ)言:是人與人之間用于溝通的一種方式。例如:中國(guó)人與中國(guó)人用中文溝通。而中國(guó)人要和韓國(guó)人交流,就要學(xué)習(xí)韓語(yǔ)。

      12、計(jì)算機(jī)語(yǔ)言:人與計(jì)算機(jī)交流的方式。如果人要與計(jì)算機(jī)交流,那么就要學(xué)習(xí)計(jì)算機(jī)語(yǔ)。計(jì)算機(jī)語(yǔ)言有很多種,如:C,C++,Java等。這里,我們選擇其中一種:Java語(yǔ)言。

      五、基礎(chǔ)知識(shí):Java語(yǔ)言介紹

      13、Java語(yǔ)言概述。是SUN(Stanford University Network,斯坦福大學(xué)網(wǎng)絡(luò)公司)1995年推出的一門高級(jí)編程語(yǔ)言。是一種面向Internet的編程語(yǔ)言。隨著Java技術(shù)在Web方面的不斷成熟,已經(jīng)成為Web應(yīng)用程序的首選開發(fā)語(yǔ)言。是簡(jiǎn)單易學(xué),完全面向?qū)ο螅踩煽?,與平臺(tái)無(wú)關(guān)的編程語(yǔ)言。

      14、Java語(yǔ)言的三種技術(shù)架構(gòu)。J2EE(Java 2 Platform Enterprise Edition)企業(yè)版(現(xiàn)更名:JAVAEE):是為開發(fā)企業(yè)環(huán)境下的應(yīng)用程序提供一套解決方案。該技術(shù)體系中包含的技術(shù)如Servlet Jsp等,主要針對(duì)于Web應(yīng)用程序開發(fā)。J2SE(Java 2 Platform Standard Edition)標(biāo)準(zhǔn)版(現(xiàn)更名:JAVASE):是為開發(fā)普通桌面和商務(wù)應(yīng)用程序提供的解決方案。該技術(shù)體系是其他兩者的基礎(chǔ),可以完成一些桌面應(yīng)用程序的開發(fā)。比如Java版的掃雷。J2ME(Java 2 Platform Micro Edition)小型版(現(xiàn)更名:JAVAME):是為開發(fā)電子消費(fèi)產(chǎn)品和嵌入式設(shè)備提供的解決方案。該技術(shù)體系主要應(yīng)用于小型電子消費(fèi)類產(chǎn)品,如手機(jī)中的應(yīng)用程序等。

      15、Java語(yǔ)言的特點(diǎn):跨平臺(tái)性。什么是跨平臺(tái)性?通過(guò)Java語(yǔ)言編寫的應(yīng)用程序在不同的系統(tǒng)平臺(tái)上都可以運(yùn)行。原理是什么?只要在需要運(yùn)行Java應(yīng)用程序的操作系統(tǒng)上,先安裝一個(gè)Java虛擬機(jī)(JVM Java Virtual Machine)即可。由JVM來(lái)負(fù)責(zé)Java程序在該系統(tǒng)中的運(yùn)行。

      16、Java語(yǔ)言的特點(diǎn):跨平臺(tái)性。Java程序:Windows系統(tǒng):Win版的JVM;Linux系統(tǒng):lin版的JVM;MAC系統(tǒng):mac版的JVM。因?yàn)橛辛薐VM,所以同一個(gè)Java程序在三個(gè)不同的操作系統(tǒng)中都可以執(zhí)行。這樣就實(shí)現(xiàn)了Java程序的跨平臺(tái)性。也稱為Java具有良好的可移植性。

      六、基礎(chǔ)知識(shí):Java語(yǔ)言的環(huán)境搭建

      17、明確什么是JRE,JDK;下載JDK;安裝JDK;配置環(huán)境變量;驗(yàn)證是否成功。

      18、什么是JRE,JDK?JRE(Java Runtime Environment Java運(yùn)行環(huán)境):包括Java虛擬機(jī)(JVM Java Virtual Machine)和Java程序所需的核心類庫(kù)等,如果想要運(yùn)行一個(gè)開發(fā)好的Java程序,計(jì)算機(jī)中只需要安裝JRE即可。JDK(Java Development Kit Java開發(fā)工具包):JDK是提供給Java開發(fā)人員使用的,其中包含了Java的開發(fā)工具,也包括了JRE。所以安裝了JDK,就不用再單獨(dú)安裝JRE了。其中的開發(fā)工具:編譯工具(java.exe)打包工具(jar.exe)等。簡(jiǎn)單而言:使用JDK開發(fā)完成的Java程序,交給JRE去運(yùn)行。

      19、Java6.0 Platform

      20、下載JCK(Java Development Kit Java開發(fā)工具包)。官方網(wǎng)址:004km.cn、java.sun.com。下載完成后,安裝在電腦上。然后打開DOS命令行,效驗(yàn)文件是否安裝完畢,并利用DOS進(jìn)行Javac.exe運(yùn)行測(cè)試。為了更方便的使用Java開發(fā)工具,需要進(jìn)行環(huán)境變量配置。配置成功后就可以進(jìn)行Java程序的開發(fā)了。

      21、環(huán)境變量配置。方法一:圖形界面操作。我的電腦——屬性——高級(jí)——環(huán)境變量;編輯Path環(huán)境變量,在變量值開始處加上Java工具所在目錄,后面用分號(hào)和其他值分隔開即可;打開DOS命令行,任意目錄下敲入javac;如果出現(xiàn)javac的參數(shù)信息,配置成功。這種配置方式,一勞永逸。具體流程:右鍵點(diǎn)擊我的電腦打開屬性,點(diǎn)擊高級(jí)系統(tǒng)設(shè)置,點(diǎn)擊高級(jí),點(diǎn)擊環(huán)境變量,找到系統(tǒng)變量,新建系統(tǒng)變量(變量名:JAVA_HOME,變量值:安裝JKD的地址。如:D:ProgramStudioJDK1.7)點(diǎn)擊確定,找到變量名為Path的變量,點(diǎn)擊編輯,在變量值欄的最前面(放到前面時(shí),先尋找)加入%JAVA_HOME%bin用分號(hào)隔開。方法二:DOS界面操作(可用于臨時(shí)環(huán)境變量配置,借助別人的電腦開發(fā)Java程序)。具體流程:利用set命令:設(shè)置、查看環(huán)境變量的值。Set path:查看path的值。配置Java工具包:set path=D:ProgramStudioJDK1.7bin;%path%回車。測(cè)試javac。只對(duì)當(dāng)前窗口有效。定義class路徑:Set classpath=.;c:myclass。

      七、基礎(chǔ)知識(shí):Java程序開發(fā)體驗(yàn)

      22、Hello World。將Java代碼編寫到擴(kuò)展名為.java的文件中;通過(guò)javac命令對(duì)該java文件進(jìn)行編譯;通過(guò)java命令對(duì)生成的class文件進(jìn)行運(yùn)行。Java文件——javac.exe編譯——class文件——java運(yùn)行——結(jié)果。

      23、對(duì)于初學(xué)者,可以用記事本編寫。按部就班,一步一步寫代碼。打開記事本。Java代碼是以類的形式來(lái)體現(xiàn)的。代碼如下: class TestFirstOne //Java定義類+類名(首字母大寫){ public static void main(String[] args)//主函數(shù)(保證類的獨(dú)立運(yùn)行)

      {

      System.out.println(“hello world”);//輸出打印語(yǔ)句

      } }

      23、classpath配置。臨時(shí)配置方式:dos配置。Set Classpath=代碼路徑。回車。Classpath先在環(huán)境變量中找,然后在當(dāng)前路徑(結(jié)尾沒帶分號(hào)不找)。Path先在當(dāng)前路徑查找,然后去環(huán)境變量中查找。一勞永逸方法和上面JDK環(huán)境變量配置方法一樣。

      24、Hello World組成部門。class是java程序中的關(guān)鍵字(關(guān)鍵字只能是小寫)。{}類的區(qū)間用大括號(hào)定義(類中的內(nèi)容為了增加閱讀性,需要有階梯感,如使用tab鍵)。public static void main(String[] args)定義主函數(shù)(使用大括號(hào)確定函數(shù)的內(nèi)容)。

      25、注釋。三種方式://單行注釋,符號(hào)以后直到回車鍵的內(nèi)容;/*多行注釋,符號(hào)開始到符號(hào)結(jié)束以內(nèi)的內(nèi)容*/;/**java注釋符號(hào),可被提取出來(lái)制作軟件開發(fā)手冊(cè)*/。注釋的作用:增加程序的閱讀性;調(diào)試程序。

      26、寫代碼要養(yǎng)成寫注釋的習(xí)慣。在寫代碼前注釋相關(guān)信息。例如: /* 需求:定義一個(gè)Hello World小程序。思路: 1,2,步驟:

      1,通過(guò)class關(guān)鍵字定義一個(gè)類。將代碼都編寫到該類中。

      2,為了保證該的獨(dú)立運(yùn)行。在類中定義個(gè)主函數(shù)。格式public static void main(String[] args)3,保存成一個(gè)擴(kuò)展名為java的文件。

      4,在dos控制臺(tái)中通過(guò)javac工具對(duì)java文件進(jìn)行編譯。5,在通過(guò)java命令對(duì)生成的class文件進(jìn)行執(zhí)行。作者:ZC 版本:v1.0 日期:2016.01.06 copyright:ZC */ 2016年01月07日

      day02

      一、基礎(chǔ)知識(shí):Java語(yǔ)言基礎(chǔ)組成

      1、組成:關(guān)鍵字、標(biāo)識(shí)符、注釋、常量和變量、運(yùn)算符、語(yǔ)句、函數(shù)、數(shù)組

      二、基礎(chǔ)知識(shí):關(guān)鍵字

      2、關(guān)鍵字的定義和特點(diǎn):定義:被Java語(yǔ)言賦予了特殊含義的單詞。特點(diǎn):關(guān)鍵字中所有字母都為小寫。

      3、用于定義數(shù)據(jù)類型的關(guān)鍵字:class、interface、byte、short、int、long、float、double、char、boolean、void。

      4、用于定義數(shù)據(jù)類型值的關(guān)鍵字:true、false、null。

      5、用于定義流程控制的關(guān)鍵字:if、else、switch、case、default、while、do、for、break、continue、return。

      6、用于定義訪問權(quán)限修飾的關(guān)鍵字:private、protected、public。

      7、用于定義類,函數(shù),變量修飾的關(guān)鍵字:abstract、final、static、synchronized。

      8、用于定義類與類之間關(guān)系的關(guān)鍵字:extends、implements。

      9、用于定義建立實(shí)例以及引用實(shí)例,判斷實(shí)例的關(guān)鍵字:new、this、super、instanceof。

      10、用于異常處理的關(guān)鍵字:try、catch、finally、throw、throws。

      11、用于包的關(guān)鍵字:package、import。

      12、其他修飾符關(guān)鍵字:native、strictfp、transient、volatile、assert。

      三、基礎(chǔ)知識(shí):標(biāo)識(shí)符

      13、標(biāo)識(shí)符:在程序中自定義的一些名稱;由26個(gè)英文字母大小寫,數(shù)字:0-9,符號(hào)_$組成;定義合法標(biāo)識(shí)符規(guī)則:數(shù)字不可以開頭、不可以使用關(guān)鍵字;Java中嚴(yán)格區(qū)分大小寫;注意:在起名時(shí),為了提高閱讀性,要盡量有意義。

      14、Java中的名稱規(guī)范:包名:多單詞組成時(shí)所有都小寫,如:xxxyyyzzz;類名接口名:多單詞組成時(shí),所有單詞的首字母大寫,如:XxxYyyZzz;變量名和函數(shù)名:多單詞組成時(shí),第一個(gè)單詞首字母小寫,第二個(gè)單詞開始每個(gè)單詞首字母大寫,如:xxxYyyZzz;常量名:所有字母都大寫,多單詞時(shí)每個(gè)單詞用下劃線連接,如:XXX_YYY_ZZZ。

      四、基礎(chǔ)知識(shí):注釋

      15、注釋:對(duì)于單行和多行注釋,被注釋的文字,不會(huì)被JVM(Java虛擬機(jī))解釋執(zhí)行;對(duì)于文檔注釋,是Java特有的注釋,其中注釋內(nèi)容可以被JDK提供的工具javadoc所解析,生成一套以網(wǎng)頁(yè)文件形式體現(xiàn)的該程序的說(shuō)明文檔;注釋是一個(gè)程序員必須要具有的良好編程習(xí)慣;初學(xué)者編寫程序可以養(yǎng)成習(xí)慣;先寫注釋再寫代碼;將自己的思想通過(guò)注釋先整理出來(lái),再用代碼去體現(xiàn);因?yàn)榇a僅僅是思想的一種體現(xiàn)形式而已;用于注解說(shuō)明解釋程序的文字就是注釋;提高了代碼的閱讀性。

      16、Java中的注釋格式:?jiǎn)涡凶⑨專焊袷剑?/注釋文字;多行注釋:格式:/*注釋文字*/;文檔注釋:格式:/**注釋文字*/。

      五、基礎(chǔ)知識(shí):常量

      17、常量表示不能改變的數(shù)值。

      18、Java中常量的分類:整數(shù)常量:所有整數(shù);小數(shù)常量:所有小數(shù);布爾型常量:較為特有,只有兩個(gè)數(shù)值:true和false;字符常量:將一個(gè)數(shù)字字母或者符號(hào)用單引號(hào)(’’)標(biāo)識(shí);字符串常量:將一個(gè)或者多個(gè)字符用雙引號(hào)(””)標(biāo)識(shí);null常量:只有一個(gè)數(shù)值就是null。

      19、對(duì)于整數(shù):Java有三種表現(xiàn)形式:十進(jìn)制:0-9,滿10進(jìn)1;八進(jìn)制:0-7,滿8進(jìn)1,用0表示開頭;十六進(jìn)制:0-9,A-F,滿16進(jìn)1,用0x開頭表示。

      六、基礎(chǔ)知識(shí):進(jìn)制轉(zhuǎn)換

      20、進(jìn)制的轉(zhuǎn)換特點(diǎn):八位二進(jìn)制表示一個(gè)字節(jié)(基本的數(shù)據(jù)單元)。三個(gè)二進(jìn)制位表一個(gè)八進(jìn)制位。四個(gè)二進(jìn)制位表示一個(gè)十六進(jìn)制位。ASCII碼編碼表。

      21、二進(jìn)制和十進(jìn)制之間的轉(zhuǎn)換:十進(jìn)制轉(zhuǎn)二進(jìn)制:原理:對(duì)十進(jìn)制數(shù)進(jìn)行除2運(yùn)算(除二取余法);二進(jìn)制轉(zhuǎn)十進(jìn)制:原理:二進(jìn)制乘以2的N次的過(guò)程。

      22、快捷方法:8421法則。

      23、負(fù)數(shù)的二進(jìn)制表現(xiàn)形式:對(duì)應(yīng)的正數(shù)二進(jìn)制取反加1。負(fù)數(shù)的最高位都是1。

      七、基礎(chǔ)知識(shí):變量

      24、變量的概念:內(nèi)存中的一個(gè)存儲(chǔ)區(qū)域;該區(qū)域有自己的名稱(變量名)和類型(數(shù)據(jù)類型);該區(qū)域的數(shù)據(jù)可以在同一類型范圍內(nèi)不斷變化;理解:變量就如同數(shù)學(xué)中的未知數(shù);變量:就是將不確定的數(shù)據(jù)進(jìn)行存儲(chǔ),也就是需要在內(nèi)存中開辟一個(gè)空間。

      25、為什么要定義變量:用來(lái)不斷的存放同一類型的常量,并可以重復(fù)使用。

      26、使用變量注意:變量的作用范圍(一對(duì){}之間有效);初始化值。

      27、定義變量的格式:數(shù)據(jù)類型變量名=初始化值;注:格式是固定的、記住格式,以不變應(yīng)萬(wàn)變。

      28、Java語(yǔ)言是強(qiáng)類型語(yǔ)言,對(duì)于每一種數(shù)據(jù)都定義了明確的具體數(shù)據(jù)類型,在內(nèi)存總分配了不同打小的內(nèi)存空間。數(shù)據(jù)類型:基本數(shù)據(jù)類型(數(shù)值型(整數(shù)類型(byte,short,int,long);浮點(diǎn)類型(float,double));字符型(char);布爾型(boolean));引用數(shù)據(jù)類型(類(class);接口(interface);數(shù)據(jù)([]))。注意:整數(shù)默認(rèn):int,小數(shù)默認(rèn):double。

      29、數(shù)據(jù)類型空間:byte 8位二進(jìn)制(一個(gè)8位二進(jìn)制或1個(gè)字節(jié));short 16位二進(jìn)制(二個(gè)8位二進(jìn)制或2個(gè)字節(jié));int 32位二進(jìn)制(四個(gè)8位二進(jìn)制或4個(gè)字節(jié));long 64位二進(jìn)制(八個(gè)8位二進(jìn)制或8個(gè)字節(jié));float(單精度)32位二進(jìn)制(四個(gè)8位二進(jìn)制或4個(gè)字節(jié));double(雙精度)64位二進(jìn)制(八個(gè)8位二進(jìn)制或8個(gè)字節(jié));char 取值:0-65535;boolean取值:true,false。

      30、類型轉(zhuǎn)換。不同類型的數(shù)據(jù)不能進(jìn)行運(yùn)算。需要進(jìn)行數(shù)據(jù)類型提升,從小往大提升,自動(dòng)數(shù)據(jù)類型提升。強(qiáng)制類型轉(zhuǎn)換:格式:變量=(類型名)(需轉(zhuǎn)換的數(shù)據(jù));什么時(shí)候使用強(qiáng)制轉(zhuǎn)換:如:小數(shù)保留整數(shù)部分。

      31、表達(dá)式的數(shù)據(jù)類型自動(dòng)提升:所有的byte型、short型和char的值將被提升到int型;如果一個(gè)操作數(shù)是long型,計(jì)算結(jié)果就是long型;如果一個(gè)操作數(shù)是float型,計(jì)算結(jié)果就是float型;如果一個(gè)操作數(shù)是double型,計(jì)算結(jié)果就是double型。分析:system.out.println(‘a(chǎn)’)與system.out.println(‘a(chǎn)’+1)的區(qū)別。

      八、基礎(chǔ)知識(shí):運(yùn)算符

      32、算數(shù)運(yùn)算符:+正號(hào),-負(fù)號(hào),+加,-減,*乘,/除,%取模,++自增(前),++自增(后),--自減(前),--自減(后),+字符串相加(字符串?dāng)?shù)據(jù)和任何數(shù)據(jù)使用+都是相連接,最終都會(huì)變成字符串)。

      33、轉(zhuǎn)義字符:通過(guò) 來(lái)轉(zhuǎn)變后面字母或者符號(hào)的含義。在Linux系統(tǒng)中換行是一個(gè)字符來(lái)表示n,windows系統(tǒng)中,換行由nr實(shí)現(xiàn)。n:換行。b:退格。相當(dāng)于backspace鍵。r:按下回車鍵。t:制表符。相當(dāng)于tab鍵。

      34、賦值運(yùn)算符:符號(hào):=:賦值,+=:a+=5等價(jià)于a=a+5,-=,*=,/=,%=。

      35、比較運(yùn)算符:==:相等于;!=:不等于;<:小于;>:大于;<=:小于等于;>=:大于等于;instanceof:檢查是否是類的對(duì)象。注意:比較運(yùn)算符的結(jié)果都是boolean型,也就是要么是true,要么是false;比較運(yùn)算符“==”不能誤寫成“=”。

      36、邏輯運(yùn)算符:&:AND(與)兩邊的boolean表達(dá)式結(jié)果,有一個(gè)為false,那么結(jié)果就是false,只要兩邊都為true,結(jié)果為true;|:OR(或)兩邊的boolean表達(dá)式結(jié)果,只要有一個(gè)為true,結(jié)果為true,只有兩邊都有false,結(jié)果為false;^:XOR(異或)兩邊的boolean表達(dá)式結(jié)果相同結(jié)果為false,兩邊不同結(jié)果為true;?。篘OT(非);&&:AND(短路);||OR:(短路)。邏輯運(yùn)算符用于連接boolean類型的表達(dá)式。&和&&的特點(diǎn):&:無(wú)論左邊是真是假,右邊都運(yùn)算;&&:當(dāng)左邊為假時(shí),右邊不運(yùn)算。|和||的特點(diǎn):|:兩邊都做運(yùn)算;||:但左邊為真時(shí),右邊不運(yùn)算。

      37、位運(yùn)算符:<<:左移,如:3<<2=12等價(jià)于3*2^2=12;>>:右移,如:6>>2=1等價(jià)于6/2^2=1;>>>:無(wú)符號(hào)右移,如:3>>>1=1;&:與運(yùn)算,如:6&3=2;|:或運(yùn)算,如:6|3=7;^:異或運(yùn)算,如:6^3=5;~:反碼,如:~6=-7;位運(yùn)算是直接對(duì)二進(jìn)制進(jìn)行運(yùn)算。<<:其實(shí)就是乘以2的移動(dòng)的位數(shù)次冪;>>:就是除以2的移動(dòng)的位數(shù)次冪。>>:最高位補(bǔ)什么由原有數(shù)據(jù)的最高位值而定;如果最高位0,右移后,用0補(bǔ)空位;如果最高位1,右移后,用1補(bǔ)空位。>>>:無(wú)論最高位是什么,右移后,都用0補(bǔ)。一個(gè)數(shù)異或同一個(gè)數(shù)兩次,結(jié)果還是拿個(gè)數(shù)。

      38、三元運(yùn)算符:格式:(條件表達(dá)式)?表達(dá)式1:表達(dá)式2;如果條件為true,運(yùn)算后的結(jié)果是表達(dá)式1;如果條件為false,運(yùn)算后的結(jié)果是表達(dá)式2。如:獲取兩個(gè)數(shù)中大數(shù),int x=3,y=4,z;z=(x>y)?x:y//z變量存儲(chǔ)的就是兩個(gè)數(shù)的大數(shù)。

      九、基礎(chǔ)知識(shí):if語(yǔ)句

      39、程序流程控制:順序結(jié)構(gòu),判斷結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)。

      40、判斷結(jié)構(gòu):if語(yǔ)句三種格式:一層判斷:if(條件表達(dá)式){執(zhí)行語(yǔ)句;};兩層判斷:if(條件表達(dá)式){執(zhí)行語(yǔ)句;}else{執(zhí)行語(yǔ)句;};多層判斷:if(條件表達(dá)式){執(zhí)行語(yǔ)句;}else if(條件表達(dá)式){執(zhí)行語(yǔ)句;}else{執(zhí)行語(yǔ)句;}。

      41、if else結(jié)構(gòu)間歇格式:變量=(條件表達(dá)式)?表達(dá)式1:表達(dá)式2;三元運(yùn)算符:好處:可以簡(jiǎn)化if else代碼;弊端:因?yàn)槭且粋€(gè)運(yùn)算符,所以運(yùn)算完畢需要有一個(gè)結(jié)果。

      42、解決DOS命令下,編譯無(wú)法識(shí)別GDK碼方法:方法一:使用-encoding參數(shù)指明編碼方式:javac-encoding UTF-8 XX.java。方法二:保存java文件時(shí),選擇編碼格式為ANSI。

      十、基礎(chǔ)知識(shí):switch語(yǔ)句

      43、選擇結(jié)構(gòu):switch語(yǔ)句:格式:switch(表達(dá)式){case 取值1:執(zhí)行語(yǔ)句;break;case 取值2:執(zhí)行語(yǔ)句;break;??default:執(zhí)行語(yǔ)句;//break;}

      44、switch(表達(dá)式):表達(dá)式只接收四種類型:byte,short,int,char。

      45、if語(yǔ)句與switch語(yǔ)句的區(qū)別:if除了能判斷數(shù)值,還能判斷具體區(qū)間,switch判斷區(qū)間很累;對(duì)于數(shù)字是布爾型時(shí),只有if能判斷。

      46、if語(yǔ)句與switch語(yǔ)句的用法:如果要對(duì)具體數(shù)字進(jìn)行判斷,數(shù)值不多,而且符合byte、short、int、char這四種類型,雖然兩個(gè)語(yǔ)句都可以使用,建議用switch完成。因?yàn)樾噬愿摺F渌闆r一般用if。當(dāng)結(jié)果為布爾型或區(qū)間時(shí),用if完成。If的使用范圍更廣。2016年01月08日day03

      一、基礎(chǔ)知識(shí):while語(yǔ)句

      1、循環(huán)結(jié)構(gòu):代表語(yǔ)句:while、do while、for。

      2、while語(yǔ)句格式:while(條件表達(dá)式){執(zhí)行語(yǔ)句;}。

      3、do while語(yǔ)句格式:do{執(zhí)行語(yǔ)句;}while(條件表達(dá)式)。Do while特點(diǎn)是條件無(wú)論是否滿足,循環(huán)體至少被執(zhí)行一次。

      4、while和do while的區(qū)別:while:先判斷條件,只有條件滿足才執(zhí)行循環(huán)體。do while:先執(zhí)行循環(huán)體,再判斷條件,條件滿足,再繼續(xù)執(zhí)行循環(huán)體。簡(jiǎn)單一句話:do while:無(wú)論條件是否滿足,循環(huán)體至少執(zhí)行一次。

      二、基礎(chǔ)知識(shí):for語(yǔ)句

      5、for語(yǔ)句格式:for(初始化表達(dá)式;循環(huán)條件表達(dá)式;循環(huán)后的操作表達(dá)式){執(zhí)行語(yǔ)句;}。注意:a:for里面的連個(gè)表達(dá)式運(yùn)行的順序,初始化表達(dá)式只讀一次,判斷循環(huán)條件,為真就執(zhí)行循環(huán)體,然后再執(zhí)行循環(huán)后的操作表達(dá)式,接著繼續(xù)判斷循環(huán)條件,重復(fù)找個(gè)過(guò)程,直到條件不滿足為止。b:while與for可以互換,區(qū)別在于for為了循環(huán)而定義的變量在for循環(huán)結(jié)束就是在內(nèi)存中釋放。而while循環(huán)使用的變量在循環(huán)結(jié)束后還可以繼續(xù)使用。c:最簡(jiǎn)單無(wú)限循環(huán)格式:while(true),for(;;),無(wú)限循環(huán)存在的原因是并不知道循環(huán)多少次,而是根據(jù)某些條件,來(lái)控制循環(huán)。

      6、for和while的區(qū)別:a:變量有自己的作用域。對(duì)于一個(gè)變量來(lái)將,如果這個(gè)變量?jī)H僅用于控制循環(huán)的次數(shù),用作循環(huán)增量時(shí)用for語(yǔ)句。循環(huán)結(jié)束時(shí),該變量在內(nèi)存被釋放。用于優(yōu)化內(nèi)存。b:for和while可以進(jìn)行互換,如果定義循環(huán)增量,用for更為合適。

      7、什么時(shí)候使用循環(huán)結(jié)構(gòu)?當(dāng)要多某些語(yǔ)句執(zhí)行很多次時(shí),就是用循環(huán)結(jié)構(gòu)。

      8、循環(huán)注意:一定要明確哪些語(yǔ)句需要參與循環(huán),哪些不需要。

      9、兩種思想:累加思想:原理:通過(guò)變量記錄住每次變化的結(jié)果。通過(guò)循環(huán)的形式,進(jìn)行累加動(dòng)作。計(jì)數(shù)器思想:原理:通過(guò)一個(gè)變量記錄住數(shù)據(jù)的狀態(tài)變化。也通過(guò)循環(huán)完成。

      10、循環(huán)嵌套:語(yǔ)句嵌套形式,其實(shí)就是語(yǔ)句中含有語(yǔ)句。

      11、其他流程控制語(yǔ)句:break(跳出),continue(繼續(xù))。Break語(yǔ)句:應(yīng)用范圍:選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。Continue語(yǔ)句:應(yīng)用于循環(huán)結(jié)構(gòu)。注意:a:這兩個(gè)語(yǔ)句離開應(yīng)用范圍,存在是沒有意義的。b:這兩個(gè)語(yǔ)句單獨(dú)存在下面都不可以有語(yǔ)句,因?yàn)閳?zhí)行不到。c:continue語(yǔ)句是結(jié)束本次循環(huán)繼續(xù)下次循環(huán)。d:標(biāo)號(hào)的出現(xiàn),可以讓這兩個(gè)語(yǔ)句作用于指定的范圍。

      12、注意:標(biāo)號(hào)只能用于循環(huán)語(yǔ)句上,給循環(huán)起名字。

      13、continue:只能作用于循環(huán)結(jié)構(gòu)。繼續(xù)循環(huán)。特點(diǎn):結(jié)束本次循環(huán),繼續(xù)下一次循環(huán)。

      14、總結(jié):a:break和continue語(yǔ)句作用的范圍。b:break和continue單獨(dú)存在時(shí),下面可以有任何語(yǔ)句。因?yàn)槎紙?zhí)行不到。

      三、基礎(chǔ)知識(shí):函數(shù)

      15、函數(shù)的定義:什么是函數(shù)?函數(shù)就是定義在類中的具有特定功能的一段獨(dú)立小程序;函數(shù)也稱為方法。

      16、函數(shù)的格式:修飾符返回值類型函數(shù)名(參數(shù)類型形式參數(shù)1,參數(shù)類型形式參數(shù)2,?){執(zhí)行語(yǔ)句;return返回值;}。返回值類型:函數(shù)運(yùn)行后的結(jié)果的數(shù)據(jù)類型。參數(shù)形式:是形式參數(shù)的數(shù)據(jù)類型。形式參數(shù):是一個(gè)變量,用于存儲(chǔ)調(diào)用函數(shù)時(shí)傳遞給函數(shù)的實(shí)際參數(shù)。實(shí)際參數(shù):傳遞給形式參數(shù)的具體數(shù)值。Return:用于結(jié)束函數(shù)。返回值:該值會(huì)返回給調(diào)用者。

      17、函數(shù)的特點(diǎn):定義函數(shù)可以將功能代碼進(jìn)行封裝;便于對(duì)該功能進(jìn)行復(fù)用;函數(shù)只有被調(diào)用才會(huì)被執(zhí)行;函數(shù)的出現(xiàn)提高了代碼的復(fù)用性;對(duì)于函數(shù)沒有具體返回值的情況,返回值類型用關(guān)鍵字void表示,那么該函數(shù)中的return語(yǔ)句如果在最后一行可以省略不寫。注意:函數(shù)中只能調(diào)用函數(shù),不可以在函數(shù)內(nèi)部定義函數(shù);定義函數(shù)時(shí),函數(shù)的結(jié)果應(yīng)該返回給調(diào)用者,交由調(diào)用者處理。

      18、重點(diǎn):函數(shù)的應(yīng)用。如何定義一個(gè)函數(shù)呢?a:既然函數(shù)是一個(gè)獨(dú)立的功能,那么該功能的運(yùn)算結(jié)果是什么先明確。因?yàn)檫@是在明確函數(shù)的返回值類型。b:再明確在定義該功能的過(guò)程中是否需要未知的內(nèi)容參與運(yùn)算。因?yàn)槭窃诿鞔_函數(shù)的參數(shù)列表(參數(shù)的類型和參數(shù)的個(gè)數(shù))。

      19、函數(shù)的重載(overload):重載的概念:在同一個(gè)類中,允許存在一個(gè)以上的同名函數(shù),只要它們的參數(shù)個(gè)數(shù)或者參數(shù)類型不同即可。重載的特點(diǎn):與返回值無(wú)關(guān),只看參數(shù)列表。重載的好處:方便與閱讀,優(yōu)化了程序設(shè)計(jì)。重載示例://返回兩個(gè)整數(shù)的和int add(int x,int y){return x+y;};//返回三個(gè)整數(shù)的和int add(int x,int y,int z){return x+y+z;};//返回兩個(gè)小數(shù)的和double add(double x,double y){return x+y;}。

      20、什么時(shí)候用重載?當(dāng)定義的功能相同,但參與運(yùn)算的未知內(nèi)容不同。那么,這時(shí)就定義一個(gè)函數(shù)名稱以表示其功能,方便閱讀,而通過(guò)參數(shù)列表的不同來(lái)區(qū)分多個(gè)同名函數(shù)。

      四、基礎(chǔ)知識(shí):數(shù)組

      21、數(shù)組的定義:概念:同一種數(shù)據(jù)類型的集合。其實(shí)數(shù)組就是一個(gè)容器。數(shù)組的好處:可以自動(dòng)給數(shù)組中的元素從0開始編號(hào),方便操作這些元素。關(guān)鍵字:new:用來(lái)在內(nèi)存中產(chǎn)生一個(gè)容器實(shí)體。格式一:元素類型[]數(shù)組名=new元素類型[元素個(gè)數(shù)或數(shù)組長(zhǎng)度];示例:int [] arr=new int[5];格式二:元素類型[]數(shù)組名=new元素類型[]{元素,元素,?};示例:int[] arr=new int[]{3,5,1,7};int[] arr={3,5,1,7}。

      22、內(nèi)存結(jié)構(gòu):Java程序在運(yùn)行時(shí),需要在內(nèi)存中分配空間。為了提高運(yùn)行效率,又對(duì)空間進(jìn)行了不同區(qū)域的劃分,因?yàn)槊恳黄瑓^(qū)域都有特定的處理數(shù)據(jù)方式和內(nèi)存的管理方式。A:棧內(nèi)存(棧區(qū)):用于存儲(chǔ)局部變量,當(dāng)數(shù)據(jù)使用完,所占空間會(huì)自動(dòng)釋放。B:堆內(nèi)存(堆區(qū)):數(shù)組和對(duì)象,通過(guò)new建立的實(shí)例都存放在堆內(nèi)存中。每一個(gè)實(shí)體都有內(nèi)存地址。實(shí)體中的變量都有默認(rèn)初始化值。實(shí)體不在被使用,會(huì)在不確定的時(shí)間內(nèi)被垃圾回收器回收。C:方法區(qū),本地方法區(qū),寄存器。2016年01月09日

      day04

      一、基礎(chǔ)知識(shí):數(shù)組

      1、獲取數(shù)組中的元素。通常會(huì)用到遍歷。

      2、數(shù)組中有一個(gè)屬性可以直接獲得到數(shù)組元素個(gè)數(shù)。length。使用方式:數(shù)組名稱.length。

      3、數(shù)組排序:選擇排序:內(nèi)循環(huán)結(jié)束一次,最值出現(xiàn)頭角標(biāo)位置。冒泡排序:第一圈:最值出現(xiàn)在了最后位。

      4、java中排序工具:import.java.util.*;Array.sort(arr)。java中已經(jīng)定義好的一種排序方式。開發(fā)中,對(duì)數(shù)組排序,要使用該句代碼。

      5、二維數(shù)組:數(shù)組中的數(shù)組:格式一:int[][] arr=new int[3][2];定義了名稱為arr的二維數(shù)組;二維數(shù)組中有3個(gè)一維數(shù)組;每一個(gè)一維數(shù)組中有2個(gè)元素;一維數(shù)組的名稱分別為arr[0],arr[1],arr[2];給第一個(gè)一維數(shù)組1腳標(biāo)位賦值為78寫法是:arr[0][1]=78。格式二:int[][] arr=new int[3][];二維數(shù)組中有3個(gè)一維數(shù)組;每個(gè)一維數(shù)組都是默認(rèn)初始值null;可以對(duì)這個(gè)三個(gè)一維數(shù)組分別進(jìn)行初始化:arr[0]=new int[3];arr[1]=new int[1];arr[2]=new int[2]。

      2016年01月10日

      day05

      一、面向?qū)ο螅焊攀?/p>

      1、理解面向?qū)ο螅好嫦驅(qū)ο笫窍鄬?duì)面向過(guò)程而言;面向?qū)ο蠛兔嫦蜻^(guò)程都是一種思想;面向過(guò)程:強(qiáng)調(diào)的是功能行為;面向?qū)ο螅簩⒐δ芊庋b進(jìn)對(duì)象,強(qiáng)調(diào)了具備了功能的對(duì)象;面向?qū)ο笫腔诿嫦蜻^(guò)程的。讓我們的角色從執(zhí)行者變?yōu)橹笓]者。面向過(guò)程是面向?qū)ο蟮幕A(chǔ)。

      2、一切皆對(duì)象,境界:萬(wàn)物皆對(duì)象。

      3、寫程序時(shí):先考慮對(duì)象。有對(duì)象時(shí),直接用。沒對(duì)象時(shí),自己造一個(gè)對(duì)象。

      4、人開門:名稱提煉法。事物:人、門。示例:人{(lán)開門(門){門。開();}};門{開(){操作門軸等。}}。

      5、面向?qū)ο蟮娜齻€(gè)特征:封裝,繼承,多態(tài)。

      6、以后的開發(fā):其實(shí)就是找對(duì)象使用。沒有對(duì)象,就創(chuàng)建一個(gè)對(duì)象。

      7、找對(duì)象,建立對(duì)象,使用對(duì)象,維護(hù)對(duì)象的關(guān)系。

      8、類和對(duì)象的關(guān)系:類就是:對(duì)現(xiàn)實(shí)生活中事物的描述。對(duì)象:就是這類事物,實(shí)實(shí)在在的個(gè)體。映射到j(luò)ava中,描述就是class定義的類。具體對(duì)象就是對(duì)于java在堆內(nèi)存中用new建立實(shí)體。

      9、類與對(duì)象示例:圖紙:汽車,汽車,汽車??梢岳斫鉃椋侯惥褪菆D紙;汽車就是堆內(nèi)存中的對(duì)象。

      10、描述事物其實(shí)就在是描述事物的屬性和行為。

      11、屬性對(duì)應(yīng)是類中的變量,行為對(duì)應(yīng)的類中的函數(shù)(方法)。其實(shí)定義類,就是在描述事物,就是在定義屬性和行為。屬性和行為共同成為類中的成員(成員變量和成員函數(shù)(方法))。

      12、引用變量:類類型變量。記?。侯愵愋妥兞恐赶?qū)ο蟆?/p>

      13、就需要該對(duì)象做使用,在java指揮方式是:對(duì)象.對(duì)象成員。

      14、成員變量和局部變量:作用范圍:成員變量作用于整個(gè)類中。局部變量作用于函數(shù)中,或者語(yǔ)句中。在內(nèi)存中的位置:成員變量:在堆內(nèi)存中,因?yàn)閷?duì)象的存在,才在內(nèi)存中存在。局部變量:存在棧內(nèi)存中。

      15、匿名對(duì)象:匿名對(duì)象是對(duì)象的簡(jiǎn)化形式;匿名對(duì)象兩種使用情況:當(dāng)對(duì)對(duì)象方法僅進(jìn)行一次調(diào)用的時(shí);匿名對(duì)象可以作為實(shí)際參數(shù)進(jìn)行傳遞。

      二、面向?qū)ο螅悍庋b

      16、封裝的定義:是指隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外提供公共訪問方式。

      17、封裝的好處:將變化隔離;便于使用;提高重用性;提高安全性。

      18、封裝原則:將不需要對(duì)外提供的內(nèi)容隱藏起來(lái);把屬性都隱藏,提供公共方法對(duì)其訪問。

      19、函數(shù)是最小的封裝體;類是較小的封裝體;包是中級(jí)封裝體;框架是較大的封裝體。20、關(guān)鍵字private:私有,權(quán)限修飾符:用于修飾類中的成員(成員變量,成員函數(shù))。在類中隱藏。私有只在本類中有效。

      21、注意:私有僅僅是封裝的一種表現(xiàn)形式。

      22、之所以對(duì)外提供訪問方式,就是因?yàn)榭梢栽谠L問方式中加入邏輯判斷語(yǔ)句。對(duì)訪問的數(shù)據(jù)進(jìn)行操作。提高代碼健壯性。

      23、關(guān)鍵字private:將成員變量私有化。對(duì)外提供對(duì)應(yīng)的set,get方法對(duì)其進(jìn)行訪問。提高對(duì)數(shù)據(jù)訪問的安全性。

      三、面向?qū)ο螅簶?gòu)造函數(shù)

      24、構(gòu)造函數(shù)的特點(diǎn):函數(shù)名與類名相同;不用定義返回值類型;不可以寫return語(yǔ)句。

      25、構(gòu)造函數(shù)的作用:給對(duì)象進(jìn)行初始化。注意:默認(rèn)構(gòu)造函數(shù)的特點(diǎn);多個(gè)構(gòu)造函數(shù)是以重載的形式存在的。

      26、構(gòu)造函數(shù):對(duì)象一建立就會(huì)調(diào)用與之對(duì)應(yīng)的構(gòu)造函數(shù)。構(gòu)造函數(shù)的作用:可以用于給對(duì)象進(jìn)行初始化。

      27、構(gòu)造函數(shù)的小細(xì)節(jié):當(dāng)一個(gè)類中沒有定義構(gòu)造函數(shù)時(shí),那么系統(tǒng)會(huì)默認(rèn)給該類假如一個(gè)空參數(shù)的構(gòu)造函數(shù)。當(dāng)在類中自定義了構(gòu)造函數(shù)后,默認(rèn)的構(gòu)造函數(shù)就沒有了。

      28、構(gòu)造函數(shù)和一般方法(函數(shù))的區(qū)別:A:構(gòu)造函數(shù)和一般函數(shù)在寫法上有不同。B:在運(yùn)行上也有不同。構(gòu)造函數(shù)是在對(duì)象一建立就運(yùn)行。就對(duì)象初始化。而一般方法是對(duì)象調(diào)用才執(zhí)行,是給對(duì)象添加對(duì)象具備的功能。C:一個(gè)對(duì)象建立,構(gòu)造函數(shù)只運(yùn)行一次。而一般方法可以被該對(duì)象調(diào)用多次。

      29、什么時(shí)候定義構(gòu)造函數(shù)呢:當(dāng)分析事物時(shí),該事物存在具備一些特征或者行為,那么將這些內(nèi)容定義在構(gòu)造函數(shù)中。30、構(gòu)造代碼塊:作用:給對(duì)象進(jìn)行初始化。對(duì)象一建立就運(yùn)行,而且優(yōu)先于構(gòu)造函數(shù)執(zhí)行。

      31、構(gòu)造代碼塊和構(gòu)造函數(shù)區(qū)別:構(gòu)造代碼塊是給所有對(duì)象進(jìn)行統(tǒng)一初始化,而構(gòu)造函數(shù)是給對(duì)應(yīng)的對(duì)象進(jìn)行初始化。

      32、構(gòu)造代碼塊中定義的是不同對(duì)象共性的初始化內(nèi)容。

      四、面向?qū)ο螅簍his關(guān)鍵字

      33、關(guān)鍵字this:看上去,是用于區(qū)分局部變量和成員變量同名情況。

      34、關(guān)鍵字this的特點(diǎn):就代表本類的對(duì)象,到底代表哪一個(gè)呢?this代表它所在函數(shù)所屬對(duì)象的引用。簡(jiǎn)單說(shuō):哪個(gè)對(duì)象在調(diào)用this所在的函數(shù),this就代表哪個(gè)對(duì)象。

      35、this的應(yīng)用:當(dāng)定義類中功能時(shí),該函數(shù)內(nèi)部要用到該函數(shù)的對(duì)象時(shí),這時(shí)用this來(lái)表示這個(gè)對(duì)象。但凡本類功能內(nèi)部使用到了本類對(duì)象,都用this代替。

      36、this語(yǔ)句:用于構(gòu)造函數(shù)之間函數(shù)互相調(diào)用。this語(yǔ)句:只能定義在構(gòu)造函數(shù)的第一行。因?yàn)槌跏蓟葓?zhí)行。

      37、this語(yǔ)句只能用于構(gòu)造函數(shù)間,不能用于一般函數(shù)。

      2016年01月11日

      day06

      一、面向?qū)ο螅簊tatic關(guān)鍵字

      1、static(靜態(tài))關(guān)鍵字:用于修飾成員(成員變量和成員函數(shù))。被修飾后的成員具備以下特點(diǎn):隨著類的加載而加載;優(yōu)先于對(duì)象存在;被所有對(duì)象所共享;可以直接被類名調(diào)用。使用注意:靜態(tài)方法只能訪問靜態(tài)成員;靜態(tài)方法中不可以寫this,super關(guān)鍵字;主函數(shù)是靜態(tài)的。

      2、用法:是一個(gè)修飾符,用于修飾成員(成員變量,成員函數(shù))。當(dāng)成員被靜態(tài)修飾后,就多了一個(gè)調(diào)用方式,除了可以被對(duì)象調(diào)用外,還可以直接被類名用。類名.成員變量。

      3、實(shí)例變量和類變量的區(qū)別:A,存放位置:類變量隨著類的加載而存在于方法區(qū)中。實(shí)例變量隨著對(duì)象的建立存在于堆內(nèi)存中。B,生命周期:類變量生命周期最長(zhǎng),隨著類的消失而消失。實(shí)例變量隨著對(duì)象的消失而消失。

      4、靜態(tài)使用注意事項(xiàng):A,靜態(tài)方法只能訪問靜態(tài)成員。非靜態(tài)方法既可以訪問靜態(tài)也可以訪問非靜態(tài)。B,靜態(tài)方法中不可以定義thsi,super關(guān)鍵字。因?yàn)殪o態(tài)優(yōu)先于對(duì)象存在,所有靜態(tài)方法中不可以出現(xiàn)this。C,主函數(shù)是靜態(tài)的。

      5、靜態(tài)優(yōu)缺點(diǎn):優(yōu):對(duì)對(duì)象的共享數(shù)據(jù)進(jìn)行單獨(dú)空間的存儲(chǔ),節(jié)省空間。沒有必要每個(gè)對(duì)象中都存儲(chǔ)一份??梢灾苯颖活惷{(diào)用。缺:生命周期過(guò)長(zhǎng)。訪問出現(xiàn)局限性。(靜態(tài)雖好,只能訪問靜態(tài)。)

      6、public static void main(String[] args)主函數(shù):是一個(gè)特殊的函數(shù),作用程序的入口,可以被jvm調(diào)用。

      7、主函數(shù)的定義:public:代表著該函數(shù)訪問權(quán)限是最大的。static:代表主函數(shù)隨著類的加載就已經(jīng)存在了。void:代表主函數(shù)沒有具體的返回值。main:不是關(guān)鍵字,但是是一個(gè)特殊的單詞,可以被jvm識(shí)別。(String[] args):函數(shù)的參數(shù),參數(shù)類型是一個(gè)數(shù)組,該數(shù)組中的元素是字符串。字符串類型的數(shù)組。

      8、主函數(shù)是固定格式的:jvm識(shí)別。jvm在調(diào)用主函數(shù)時(shí),傳人的是new String[0]。

      9、什么時(shí)候使用靜態(tài)?要從兩方面下手:因?yàn)殪o態(tài)修飾的內(nèi)容有成員變量和函數(shù)。什么時(shí)候定義靜態(tài)變量(類變量)呢?當(dāng)對(duì)象中出現(xiàn)共享數(shù)據(jù)時(shí),該數(shù)據(jù)靜態(tài)所修飾。對(duì)象中的特有數(shù)據(jù)要定義成非靜態(tài)存在于堆內(nèi)存中。

      10、什么時(shí)候定義靜態(tài)函數(shù)呢?當(dāng)功能內(nèi)部沒有訪問到非靜態(tài)數(shù)據(jù)(對(duì)象的特有數(shù)據(jù)),那么該功能可以定義成靜態(tài)的。

      11、靜態(tài)的應(yīng)用:A每一個(gè)應(yīng)用程序中都有共性的功能,可以將這些功能進(jìn)行抽取,獨(dú)立封裝。以便復(fù)用。B雖然可以通過(guò)建立ArrayTool的對(duì)象使用這些工具方法,對(duì)數(shù)組進(jìn)行操作。但是:1,對(duì)象是用于封裝數(shù)據(jù)的,可以ArrayTool對(duì)象并未封裝特特有數(shù)據(jù)。2,操作數(shù)組的每一個(gè)方法都沒有用到ArrayTool對(duì)象中的特有數(shù)據(jù)。C這時(shí)就考慮,讓程序更嚴(yán)謹(jǐn),是不需要對(duì)象的??梢詫rrayTool中的方法都定義成static的,直接通過(guò)類名調(diào)用即可。D將方法都靜態(tài)后,可以方便于使用,但是該類還是可以被其他程序建立對(duì)象的。為了更為嚴(yán)謹(jǐn),強(qiáng)制讓該類不能建立對(duì)象??梢酝ㄟ^(guò)將構(gòu)成函數(shù)私有化完成。

      12、接下來(lái),將ArrayTool.class文件發(fā)送給其他人,其他人只要將該文件設(shè)置到classpath路徑下,就可以使用該工具類。但是,很遺憾,該類中到底定義了多少個(gè)方法,對(duì)方不清楚。因?yàn)樵擃惒]有使用說(shuō)明書。開始制作程序的說(shuō)明書。java的說(shuō)明書通過(guò)文檔注釋來(lái)完成。

      13、注釋符號(hào):/***/;@author作者;@version版本;@param參數(shù);@return返回值。

      14、靜態(tài)代碼塊。格式:static{靜態(tài)代碼塊中的執(zhí)行語(yǔ)句。}。

      15、靜態(tài)代碼塊的特點(diǎn):隨著類的加載而執(zhí)行,只執(zhí)行一次,并優(yōu)先于主函數(shù)。用于給類進(jìn)行初始化的。

      16、重點(diǎn):對(duì)象的初始化過(guò)程:Person p=new Person(“zhangsan”,20);該句話都做了什么事情?A因?yàn)閚ew用到了Person。Class。所有會(huì)先找到Person。Class文件并加載到內(nèi)存中。B執(zhí)行該類中的static代碼塊,如果有的話,給Person.class類進(jìn)行初始化。C在堆內(nèi)存中開辟空間,分配內(nèi)存地址。D在堆內(nèi)存中建立對(duì)象的特有屬性,并進(jìn)行默認(rèn)初始化。E對(duì)屬性進(jìn)行顯示初始化。F對(duì)對(duì)象進(jìn)行構(gòu)造代碼塊初始化。G對(duì)對(duì)象進(jìn)行對(duì)應(yīng)的構(gòu)造函數(shù)初始化。H將內(nèi)存地址付給棧內(nèi)存中的p變量。

      二、面向?qū)ο螅簡(jiǎn)卫O(shè)計(jì)模式

      17、設(shè)計(jì)模式:解決某一類問題最行之有效的方法。java中23中設(shè)計(jì)模式:?jiǎn)卫O(shè)計(jì)模式:解決一個(gè)類在內(nèi)存只存在一個(gè)對(duì)象。

      18、想要保證對(duì)象唯一。1,為了避免其他程序過(guò)多建立該類對(duì)象。先禁止其他程序建立該類對(duì)象。2,還為了讓其他程序可以訪問到該類對(duì)象,只好在本類中,自定義一個(gè)對(duì)象。3,為了方便其他程序?qū)ψ远x對(duì)象的訪問,可以對(duì)外提供一些訪問方式。

      19、這三步怎么用代碼體現(xiàn)呢?1,將構(gòu)造函數(shù)私有化。2,在類中創(chuàng)建一個(gè)本類對(duì)象。3,提供一個(gè)方法可以獲取到該對(duì)象。

      20、對(duì)于事物該怎么描述,還怎么描述。當(dāng)需要將該事物的對(duì)象保證在內(nèi)存中唯一時(shí),就將以上的三部加上即可。

      21、單例設(shè)計(jì)方法一:這個(gè)是先初始化對(duì)象。稱為:餓漢式。Single類一進(jìn)內(nèi)存,就已經(jīng)創(chuàng)建好了對(duì)象。開發(fā)一般用餓漢式:安全、簡(jiǎn)單。

      22、單例設(shè)計(jì)方法二:對(duì)象被調(diào)用時(shí),才初始化,也叫做對(duì)象的延時(shí)加載。稱為:懶漢式。Single類進(jìn)內(nèi)存,對(duì)象還沒有存在,只有調(diào)用了getInstance方法時(shí),才建立對(duì)象。

      23、記住原則:定義單例,建議使用餓漢式。但面試時(shí):考懶漢式的多。特別是如何解決懶漢式的缺點(diǎn)。2016年01月12日

      day07

      一、面向?qū)ο螅豪^承

      1、繼承:1,提高代碼的復(fù)用性。2,讓類與類之間產(chǎn)生了關(guān)系。有了這個(gè)關(guān)系,才有了多態(tài)的特性。關(guān)鍵字:extends。

      2、注意:千萬(wàn)不要為了獲取其他類的功能,簡(jiǎn)化代碼而繼承。必須是類與類之間有所屬關(guān)系才可以繼續(xù)。所屬關(guān)系is a。

      3、java語(yǔ)言中:java只支持單繼承,不支持多繼承。原因:因?yàn)槎嗬^承容易帶來(lái)安全隱患:當(dāng)多個(gè)父類中定義了相同功能,當(dāng)功能內(nèi)容不同時(shí),子類對(duì)象不確定要運(yùn)行哪一個(gè)。但是java保留這種機(jī)制,并用另一種體現(xiàn)形式來(lái)完成表示,多實(shí)現(xiàn)。

      4、java支持多層繼承。也就是一個(gè)繼承體系。如何使用一個(gè)繼承體系中的功能呢?想要使用體系,先查閱父類的描述,因?yàn)楦割愔卸x的是該體系中共性功能。通過(guò)了解共性功能,就可以知道該體系的基本功能。那么這個(gè)體系已經(jīng)可以基本使用了。

      5、那么在具體調(diào)用時(shí),要?jiǎng)?chuàng)建最子類的對(duì)象,為什么呢?一是因?yàn)橛锌赡芨割惒荒軇?chuàng)建對(duì)象,二是創(chuàng)建子類對(duì)象可以使用更多的功能,包括基本的也包括特有的。

      6、簡(jiǎn)單一句話:查閱父類功能,創(chuàng)建子類對(duì)象使用功能。

      7、this代表本類對(duì)象的引用,super代編父類對(duì)象的引用。

      8、子父類出現(xiàn)后,類成員的特點(diǎn):類中成員:A,變量。B,函數(shù)。C,構(gòu)造函數(shù)。

      9、子父類中的變量:如果子類中出現(xiàn)非私有的同名變量時(shí),之類要訪問本類中的同名變量,用this子類要訪問父類中的同名變量,用super。super的使用和this的使用幾乎一致。this代表的是本類對(duì)象的引用。super代表的是父類對(duì)象的引用。

      10、子父類中的函數(shù):當(dāng)子類出現(xiàn)和父類一模一樣的函數(shù)時(shí),當(dāng)子類對(duì)象調(diào)用該函數(shù),會(huì)運(yùn)行子類函數(shù)的內(nèi)容。如同父類的函數(shù)被覆蓋一樣。這種情況是函數(shù)的另一個(gè)特性:重寫(覆蓋)。

      11、修改以往的源碼絕對(duì)是災(zāi)難。

      12、單子類繼承父類,沿襲了父類的功能,到子類中,但是子類雖具備該功能,但是功能的內(nèi)容卻和父類不一致,這時(shí),沒有必要定義新功能,而是使用覆蓋特殊,保留父類的功能定義,并重寫功能內(nèi)容。

      13、注意:覆蓋:子類覆蓋父類,必須保證子類權(quán)限大于等于父類權(quán)限,才可以覆蓋,否則編譯失敗。靜態(tài)只能覆蓋靜態(tài)。

      14、記住大家:重載:只看同名函數(shù)的參數(shù)列表。重寫:子父類方法要一模一樣。

      15、子父類中的構(gòu)造函數(shù):發(fā)現(xiàn)在對(duì)子類對(duì)象進(jìn)行初始化時(shí),父類的構(gòu)造函數(shù)也會(huì)運(yùn)行。那是因?yàn)樽宇惖臉?gòu)造函數(shù)默認(rèn)第一行有一條隱式的語(yǔ)句super();super();會(huì)訪問父類中空參數(shù)的構(gòu)造函數(shù)。而且子類中所有的構(gòu)造函數(shù)默認(rèn)第一行都是super()。

      16、為什么子類一定要訪問父類中的構(gòu)造函數(shù):因?yàn)楦割愔械臄?shù)據(jù)子類可以直接獲取,所有之類對(duì)象在建立時(shí),需要先查看父類是如何對(duì)這些數(shù)據(jù)進(jìn)行初始化的。所有之類在對(duì)象初始化時(shí),要先訪問一下父類中的構(gòu)造函數(shù)。如果要訪問父類中指定的構(gòu)造函數(shù),可以通過(guò)手動(dòng)定義super語(yǔ)句的方式來(lái)指定。注意:super語(yǔ)句一定一定在子類構(gòu)造函數(shù)第一行。

      17、子類的實(shí)例化過(guò)程。結(jié)論:子類的所有的構(gòu)造函數(shù)默認(rèn)都會(huì)訪問父類中空參數(shù)的構(gòu)造函數(shù)。因?yàn)樽宇惷恳粋€(gè)構(gòu)造函數(shù)內(nèi)的每一行都有一句隱式的super();當(dāng)父類中沒有空參數(shù)的構(gòu)造函數(shù)時(shí),子類必須手動(dòng)通過(guò)super語(yǔ)句或者this語(yǔ)句形式來(lái)指定要訪問父類中的構(gòu)造函數(shù)。當(dāng)然:子類的構(gòu)造函數(shù)第一行也可以收到指定this語(yǔ)句來(lái)訪問本類中的構(gòu)造函數(shù)。子類中至少會(huì)有一個(gè)構(gòu)造函數(shù)會(huì)訪問父類中的構(gòu)造函數(shù)。

      18、關(guān)鍵字:final:final可以修飾類,方法(函數(shù)),變量;final修飾的類不可以被繼承;final修飾的方法(函數(shù))不可以被覆蓋;final修飾的變量是一個(gè)常量,只能被賦值一次;內(nèi)部類只能訪問被final修飾的局部變量。

      二、面向?qū)ο螅撼橄箢?/p>

      19、當(dāng)多個(gè)類中出現(xiàn)相同功能,但是功能主體不同,這時(shí)也可以進(jìn)行向上抽取。這時(shí),只抽取功能定義,而不抽取功能主體。20、抽象:看不懂。

      21、抽象類的特點(diǎn):A,抽象方法一定定義在抽象類中。B,抽象方法和抽象類都必須被abstract關(guān)鍵字修飾。C,抽象類不可以被new創(chuàng)建對(duì)象。因?yàn)檎{(diào)用抽象方法沒意義。D,抽象類中的抽象方法要被使用,必須由子類復(fù)寫其所有的抽象方法后,建立子類對(duì)象調(diào)用。

      22、如果子類只覆蓋了部分抽象方法,那么該子類還是一個(gè)抽象類。

      23、抽象類和一般類沒有太大的不同。該如何描述事物,就如何描述事物,只不過(guò),該事物中出現(xiàn)了一些看不懂的東西。這些不確定的部分,也是該事物的功能,需要明確出現(xiàn),但是無(wú)法定義主體。通過(guò)抽象方法來(lái)表示。

      24、抽象類比一般類多了抽象方法(函數(shù))。就是在類中可以定義抽象方法。抽象類不可以實(shí)例化(即不可以new)。特殊:抽象類中可以不定義抽象方法,這樣做僅僅是不讓該類建立對(duì)象。

      25、什么是模板方法呢?在定義功能時(shí),功能的一部分是確定的,但是有一部分是不確定,而確定的部分在使用不確定的部分。那么這時(shí)就將不確定的部分暴露出去。由該類的子類去實(shí)現(xiàn)。

      三、面向?qū)ο螅航涌?/p>

      26、接口:格式:interface{}。接口中的成員修飾符是固定的。成員常量:public static final;成員函數(shù):public abstract。接口的出現(xiàn)將“多繼承”通過(guò)另一種形式體現(xiàn)出來(lái),即“多實(shí)現(xiàn)”。

      26、接口:初期理解:可以認(rèn)為是一個(gè)特殊的抽象類。當(dāng)抽象類中的方法都是抽象的,那么該類可以通過(guò)接口的形式來(lái)表示。class用于定義類。interface用于定義接口。

      27、接口:是不可以創(chuàng)建對(duì)象的,因?yàn)橛谐橄蠓椒?。需要被子類?shí)現(xiàn),子類對(duì)接口中的抽象方法全部覆蓋后,子類才可以實(shí)例化。否則子類是一個(gè)抽象類。接口可以被類多實(shí)現(xiàn),也是對(duì)多繼承不支持的轉(zhuǎn)換形式。java支持多實(shí)現(xiàn)。用關(guān)鍵字:implements。

      28、接口與接口之間支持多繼承,類與類之間只支持單繼承。

      29、接口的特點(diǎn):接口是對(duì)外暴露的規(guī)則;接口是程序的功能擴(kuò)展;接口可以用來(lái)多實(shí)現(xiàn);類與接口之間是實(shí)現(xiàn)關(guān)系,而且類可以繼承一個(gè)類的同時(shí)實(shí)現(xiàn)多個(gè)接口;接口與接口之間可以有繼承關(guān)系。2016年01月13日

      day08

      一、面向?qū)ο螅憾鄳B(tài)

      1、多態(tài)的定義:某一類事物的多種存在形態(tài),例:動(dòng)物中貓,狗。貓這個(gè)對(duì)象對(duì)應(yīng)的類型是貓類型:貓x=new 貓();同時(shí)貓也是動(dòng)物中的一種,也可以把貓稱為動(dòng)物。動(dòng)物y=new 貓();動(dòng)物是貓和狗具體事物中抽取出來(lái)的父類型;父類型引用指向了子類對(duì)象。

      2、多態(tài)的體現(xiàn):父類的引用指向了自己的子類對(duì)象。父類的引用也可以接收自己的子類對(duì)象。

      3、多態(tài)的前提:必須是類與類之間有關(guān)系。要么繼承,要么實(shí)現(xiàn)。通常還有一個(gè)前提:存在覆蓋。

      4、多態(tài)的弊端:提高了擴(kuò)展性,但是只能使用父類的引用訪問父類中的成員。

      5、多態(tài)的好處:多態(tài)的出現(xiàn)大大的提高了程序的擴(kuò)展性。

      6、引用數(shù)據(jù)類型轉(zhuǎn)換:類型提升。向上轉(zhuǎn)型。如果想要調(diào)用貓的特有方法時(shí),如何操作?強(qiáng)制將父類的引用,轉(zhuǎn)成子類類型。向下轉(zhuǎn)型。注意:千萬(wàn)不要出現(xiàn)這樣的操作,就是將父類對(duì)象轉(zhuǎn)成子類類型。我們能轉(zhuǎn)換的是父類引用指向了自己的子類對(duì)象時(shí),該引用可以被提升,也可以被強(qiáng)制轉(zhuǎn)換。多態(tài)自始至終都是子類對(duì)象在做著變量。

      7、關(guān)鍵字:instanceof。判斷引用數(shù)據(jù)類型是否一致。

      8、在多態(tài)中成員函數(shù)的特點(diǎn):在編譯時(shí)期:參閱引用型變量所屬的類中是否有調(diào)用的方法。如果有,編譯通過(guò),如果沒有編譯失敗。在運(yùn)行時(shí)期:參閱對(duì)象所屬的類中是否有調(diào)用的方法。簡(jiǎn)單總結(jié)就是:成員函數(shù)在多態(tài)調(diào)用時(shí),編譯看左邊,運(yùn)行看右邊。

      9、在多態(tài)中,成員變量的特點(diǎn):無(wú)論編譯和運(yùn)行,都參考左邊(引用型變量所屬的類)。

      10、object類:是所有對(duì)象的直接或者間接父類,傳說(shuō)中的上帝。該類中定義的肯定是所有對(duì)象都具備的功能。

      11、Object類中已經(jīng)提供了對(duì)對(duì)象是否相同的比較方法。如果自定義類中也有比較相同的功能,沒有必要重新定義。只要沿襲父類中的功能,建立自己特有的比較內(nèi)容即可。這就是覆蓋。

      2016年01月15日

      day09

      一、面向?qū)ο螅簝?nèi)部類

      1、內(nèi)部類的定義:將一個(gè)類定義在另一個(gè)類的里面,對(duì)里面那個(gè)類就稱為內(nèi)部類(內(nèi)置類,嵌套類)。

      2、內(nèi)部類訪問特點(diǎn):內(nèi)部類可以直接訪問外部類中的成員,包括私有成員。之所以可以直接訪問外部類中的成員,是因?yàn)閮?nèi)部類中持有了一個(gè)外部類的引用,格式:外部類名.this。而外部類要訪問內(nèi)部類中的成員必須要建立內(nèi)部類的對(duì)象。

      3、訪問格式:當(dāng)內(nèi)部類定義在外部類的成員位置上,而且非私有,可以在外部其他類中??梢灾苯咏?nèi)部類對(duì)象。格式:外部類名.內(nèi)部類名變量名=外部類對(duì)象.內(nèi)部類對(duì)象;Outer.Inner in=new Outer().new Inner()。

      4、當(dāng)內(nèi)部類在成員位置上,就可以被成員修飾符所修飾。比如,private:將內(nèi)部類在外部類中進(jìn)行封裝。static:內(nèi)部類就具備了static的特性。當(dāng)內(nèi)部類被static修飾后,只能直接訪問外部類中的static成員。出現(xiàn)了訪問局限。

      5、在外部其他類中,如何直接訪問static內(nèi)部類的非靜態(tài)成員呢?new Outer.Inner().function()。在外部其他類中,如何直接訪問static內(nèi)部類的靜態(tài)成員呢?Outer.Inner().function()。

      6、注意:當(dāng)內(nèi)部類中定義了靜態(tài)成員,該內(nèi)部類必須是static的。當(dāng)外部類中的靜態(tài)方法訪問內(nèi)部類時(shí),內(nèi)部類也必須是static的。

      7、當(dāng)描述事物時(shí),事物的內(nèi)部還有事物,該事物用內(nèi)部類來(lái)描述。因?yàn)閮?nèi)部事物在使用外部事物的內(nèi)容。

      8、內(nèi)部類定義在局部時(shí),1,不可以被成員修飾符修飾;2,可以直接訪問外部類中的成員,因?yàn)檫€持有外部類中的引用;但是不可以訪問它所在的局部中的變量。只能訪問被final修飾的局部變量。

      9、匿名內(nèi)部類:1,匿名內(nèi)部類其實(shí)就是內(nèi)部類的簡(jiǎn)寫格式。2,定義匿名內(nèi)部類的前提:內(nèi)部類必須繼承一個(gè)類或者實(shí)現(xiàn)接口。3,匿名內(nèi)部類的格式:new 父類或者接口(){定義子類的內(nèi)容}。4,其實(shí)匿名內(nèi)部類就是一個(gè)匿名子類對(duì)象。而且這個(gè)對(duì)象有點(diǎn)胖。可以理解為帶內(nèi)容的對(duì)象。5,匿名內(nèi)部類中定義的方法最好不要超過(guò)3個(gè)。

      二、面向?qū)ο螅寒惓?/p>

      10、異常:異常的體系:Throwable:(Error:通常出現(xiàn)重大問題如:運(yùn)行的類不存在或者內(nèi)存溢出等;不編寫針對(duì)代碼對(duì)其處理。Exception:在運(yùn)行時(shí)運(yùn)行出現(xiàn)的一起情況,可以通過(guò)try catch finally)。Exception和Error的子類名稱都是以父類名作為后綴。

      11、異常:就是程序在運(yùn)行時(shí)出現(xiàn)不正常情況。

      12、異常由來(lái):?jiǎn)栴}也是現(xiàn)實(shí)生活中一個(gè)具體的事物,也可以通過(guò)java的類的形式進(jìn)行描述,并進(jìn)行封裝。其實(shí)就是java對(duì)不正常情況進(jìn)行描述后的對(duì)象體現(xiàn)。

      13、對(duì)于問題的劃分:兩種:一種是嚴(yán)重的問題。一種是非嚴(yán)重的問題。對(duì)于Error一般不編寫針對(duì)性的代碼對(duì)其進(jìn)行處理。對(duì)于嚴(yán)重的,java通過(guò)Error類進(jìn)行描述。對(duì)于非嚴(yán)重的,java通過(guò)Exception類進(jìn)行描述。對(duì)于Exception可以使用針對(duì)性的處理方式進(jìn)行處理。

      14、無(wú)論Error或者Exception都具體有一些共性內(nèi)容。比如:不正常情況的信息,引發(fā)原因等。

      15、異常的處理:java提供了特有的語(yǔ)句進(jìn)行處理。Try{需要被檢測(cè)的代碼;}catch{異常類變量}{處理異常的代碼:(處理方式)}finally{一定會(huì)執(zhí)行的語(yǔ)句;}。

      15、throws Exception//在功能上通過(guò)throws的關(guān)鍵字聲明了該功能有可能會(huì)出現(xiàn)問題。在函數(shù)上聲明異常。便于提高安全性,讓調(diào)用者進(jìn)行處理。不處理編譯失敗。

      16、對(duì)多異常的處理。1,聲明異常時(shí),建議聲明更為具體的異常。這樣處理得可以更具體。2,對(duì)聲明幾個(gè)異常,就對(duì)應(yīng)有幾個(gè)catch塊。不要定義多余的catch塊。如果多個(gè)catch塊中的異常出現(xiàn)繼承關(guān)系,父類異常catch塊放在最下面。

      17、建議在進(jìn)行catch處理時(shí),catch中一定要定義具體處理方式。不要簡(jiǎn)單定義一句 e.printStackTrace(),也不要簡(jiǎn)單的就書寫一條輸出語(yǔ)句。

      18、自定義異常:因?yàn)轫?xiàng)目中會(huì)出現(xiàn)特有的問題,而這些問題并未被java所描述并封裝對(duì)象。所有對(duì)于這些特有的問題可以按照java的對(duì)問題封裝的思想。將特有的問題,進(jìn)行自定義的異常封裝。

      19、當(dāng)在函數(shù)內(nèi)部出現(xiàn)了throw拋出了異常對(duì)象,那么就必須要給對(duì)應(yīng)的處理動(dòng)作。要么在內(nèi)部try catch處理。要么在函數(shù)上聲明讓調(diào)用者處理。20、如何定義異常信息呢?因?yàn)楦割愔幸呀?jīng)把異常信息的操作都完成了。所有子類只要在構(gòu)造時(shí),將異常信息傳遞給父類通過(guò)super語(yǔ)句。那么就可以直接通過(guò)getMessage方法獲取自定義的異常信息。

      21、自定義異常:必須是自定義類繼承Exception。繼承Exception原因:異常體系有一個(gè)特點(diǎn):因?yàn)楫惓n惡彤惓?duì)象都被拋出。他們都具備可拋性。這個(gè)可拋性是Throwable這個(gè)體系中獨(dú)有特點(diǎn)。

      22、只有這個(gè)體系中的類和對(duì)象才可以被throws和throw操作。

      23、throws和throw的區(qū)別:throws使用在函數(shù)上。throw使用在函數(shù)內(nèi)。throws后面跟的異常類??梢愿鄠€(gè)。用逗號(hào)隔開。throw后跟的是異常對(duì)象。

      24、Exception中有一個(gè)特殊的子類異常RuntimeException運(yùn)行時(shí)異常。如果在函數(shù)內(nèi)容拋出該異常,函數(shù)上可以不用聲明,編譯一樣通過(guò)。如果在函數(shù)上聲明了該異常。調(diào)用者可以不用進(jìn)行處理,編譯一樣通過(guò)。

      25、之所以不用在函數(shù)聲明,是因?yàn)椴恍枰屨{(diào)用者處理。當(dāng)該異常發(fā)生,希望程序停止。因?yàn)樵谶\(yùn)行時(shí),出現(xiàn)了無(wú)法繼續(xù)運(yùn)算的情況,希望停止程序。對(duì)代碼進(jìn)行修正。

      26、自定義異常時(shí):如果該異常的發(fā)生,無(wú)法在繼續(xù)進(jìn)行運(yùn)算,就讓自定義異常繼承RuntimeException。

      27、對(duì)于異常分兩種:1,編譯時(shí)被檢測(cè)的異常。2,編譯時(shí)不被檢測(cè)的異常(運(yùn)行時(shí)異常,RuntimeException以及其子類)。

      2016年01月16日

      day10

      一、面向?qū)ο螅寒惓?/p>

      1、finally中存放的是一定會(huì)被執(zhí)行的代碼。

      2、finally代碼塊:定義一定執(zhí)行的代碼。通常用于關(guān)閉資料。

      3、記住一點(diǎn):catch是用于處理異常。如果沒有catch就代表沒有被處理過(guò),如果該異常時(shí)檢測(cè)時(shí)的異常,就必須聲明出去。

      4、異常在子父類覆蓋中的體現(xiàn):A,子類在覆蓋父類時(shí),如果父類的方法拋出異常,那么子類的覆蓋方法,只能拋出父類的異常或者該異常的子類。B,如果父類方法拋出多個(gè)異常,那么子類在覆蓋該方法時(shí),只能拋出父類異常的子集。C,如果父類或者接口的方法中沒有異常拋出,那么子類在覆蓋方法時(shí),也不可以拋出異常。如果子類方法發(fā)生了異常。就必須要進(jìn)行try處理。絕對(duì)不能拋。

      5、異常:是什么?是對(duì)問題的描述,將問題進(jìn)行對(duì)象的封裝。

      6、異常體系:Throwable:|--Error;|--Exception(|--RuntimeException)。

      7、異常體系的特點(diǎn):異常體系中的所有類以及建立的對(duì)象都具備可拋性。也就是說(shuō)可以被throw和throws關(guān)鍵字所操作。只有異常體系具備這個(gè)特點(diǎn)。

      8、throw和throws的用法:throw定義在函數(shù)內(nèi),用于拋出異常對(duì)象。throws定義在函數(shù)上,用于拋出異常類,可以拋出多個(gè)用逗號(hào)隔開。

      9、當(dāng)函數(shù)內(nèi)容有throw拋出異常對(duì)象,并未進(jìn)行try處理。必須要在函數(shù)上聲明,都在編譯失敗。注意:RuntimeException除外。也就是說(shuō),函數(shù)內(nèi)如果拋出的RuntimeException異常,函數(shù)上可以不用聲明。

      10、如果函數(shù)聲明了異常,調(diào)用者需要進(jìn)行處理。處理方法可以throws和try。

      11、異常有兩種:編譯時(shí)被檢測(cè)異常:該異常在編譯時(shí),如果沒有處理(沒有拋也沒有try),編譯失敗。該異常被標(biāo)識(shí),代表著可以被處理。運(yùn)行時(shí)異常(編譯時(shí)不檢測(cè)):在編譯時(shí),不需要處理,編譯器不檢查。該異常的發(fā)生,建立不處理,讓程序停止。需要對(duì)代碼進(jìn)行修正。

      12、異常處理語(yǔ)句:try(需要被檢測(cè)的代碼;)catch(處理異常的代碼;)finally(一定會(huì)執(zhí)行的代碼;)。有三種結(jié)合格式:try catch;try finally;try catch finally。注意:A,finally中定義的通常是關(guān)閉資源代碼。因?yàn)橘Y源必須釋放。B,finally只有一種情況不會(huì)執(zhí)行。當(dāng)執(zhí)行到System.exit(0);finally不會(huì)執(zhí)行。

      13、自定義異常:定義類繼續(xù)Exception或者RuntimeException。A,為了讓該自定義類具備可拋性。B,讓該類具備操作異常的共性方法。當(dāng)要定義自定義異常的信息時(shí),可以使用父類已經(jīng)定義好的功能。異常異常信息傳遞給父類的構(gòu)成函數(shù)。class MyException extends Exception{MyException(String message){super(message);}}。

      14、自定義異常:按照java的面向?qū)ο笏枷?,將程序中出現(xiàn)的特有問題進(jìn)行封裝。

      15、異常的好處:A,將問題進(jìn)行封裝。B,將正常流程代碼和問題處理代碼相分離,方便于閱讀。

      16、異常的處理原則:A,處理方式有兩種:try或者throws。B,調(diào)用到拋出異常的功能時(shí),拋出幾個(gè),就處理幾個(gè)。一個(gè)try對(duì)應(yīng)多個(gè)catch。C,多個(gè)catch,父類的catch放到最下面。D,catch內(nèi)需要定義針對(duì)性的處理方式。不要簡(jiǎn)單的定義printStackTrace,輸出語(yǔ)句。也不要不寫。當(dāng)捕獲到的異常,本功能處理不了時(shí),可以繼續(xù)在catch中拋出。

      17、異常的注意事項(xiàng):在子父類覆蓋時(shí):A,子類拋出的異常必須是父類異常的子類或者子集。B,如果父類或者接口沒有異常拋出時(shí),子類覆蓋出現(xiàn)異常,只能try不能拋。

      二、面向?qū)ο螅喊?/p>

      18、包(package):對(duì)類文件進(jìn)行分類管理。給類提供多層命名空間。寫在程序文件的第一行。類名的全稱的格式是:包名.類名。包也是一種封裝形式。

      19、關(guān)鍵字protected:/*保護(hù)*/權(quán)限。權(quán)限修飾符??捎糜谛揎棸锏母割悺?/p>

      20、總結(jié):包與包之間進(jìn)行訪問,被訪問的包中的類以及類中的成員,需要public修飾。不同包中的子類還可以訪問直接父類中被protected權(quán)限修飾的成員。

      21、包與包之間可以使用的權(quán)限只有兩種,public protected。

      22、public

      protected

      default

      private 同一個(gè)類中可以可以可以可以 同一個(gè)包中可以

      可以可以 不可以 子類可以

      可以不可以不可以 不同包中 可以不可以不可以不可以。

      23、為了簡(jiǎn)化類名的書寫,使用一個(gè)關(guān)鍵字import。import導(dǎo)入的是包中的類。建議,不要寫通配符*,需要用到包中的哪個(gè)類,就導(dǎo)入哪個(gè)類。

      24、建議定義包名不要重復(fù),可以使用url來(lái)完成定義,url是唯一的。

      25、jar包:java的壓縮包:方便項(xiàng)目的攜帶。方便于使用,只要在classpath設(shè)置jar路徑即可。數(shù)據(jù)庫(kù)驅(qū)動(dòng),SSH框架等都以jar包體現(xiàn)的。2016年01月17日

      day11

      一、多線程:概述

      1、進(jìn)程:是一個(gè)正在執(zhí)行中的程序。每一個(gè)進(jìn)程執(zhí)行都有一個(gè)執(zhí)行順序。該順序是一個(gè)執(zhí)行路徑,或者叫一個(gè)控制單元。

      2、線程:就是進(jìn)程中的一個(gè)獨(dú)立的控制單元。線程在控制著進(jìn)程的執(zhí)行。一個(gè)進(jìn)程中至少有一個(gè)線程。

      3、Java VM 啟動(dòng)的時(shí)候會(huì)有一個(gè)進(jìn)程java.exe。該進(jìn)程中至少有一個(gè)線程負(fù)責(zé)java程序的執(zhí)行。而且這個(gè)線程運(yùn)行的代碼存在于main方法中。該線程稱之為主線程。擴(kuò)展:其實(shí)更細(xì)節(jié)說(shuō)明jvm,jvm啟動(dòng)不止一個(gè)線程,還有負(fù)責(zé)垃圾回收機(jī)制的線程。

      4、如何在自定義的代碼中,自定義一個(gè)線程呢?通過(guò)對(duì)API的查找,java已經(jīng)提供了對(duì)線程這類事物的描述。就是Thread類。

      5、創(chuàng)建線程的第一種方式:繼承Thread類。步驟:1,定義類繼承Thread。2,復(fù)寫Thread類中的run方法。目的:將自定義代碼存儲(chǔ)在run方法中,讓線程運(yùn)行。3,調(diào)用線程的start方法,該方法有兩個(gè)作用:?jiǎn)?dòng)線程;調(diào)用run方法。

      6、發(fā)現(xiàn)運(yùn)行結(jié)果每一次都不同:因?yàn)槎鄠€(gè)線程都獲取cpu的執(zhí)行權(quán)。cpu執(zhí)行到誰(shuí),誰(shuí)就運(yùn)行。明確一點(diǎn),在某一時(shí)刻,只能有一個(gè)程序在運(yùn)行。(多核除外)cpu在做著快速的切換,以達(dá)到看上去是同時(shí)運(yùn)行的效果。我們可以形象把多線程的運(yùn)行形容為在互相搶奪cpu的執(zhí)行權(quán)。這就是多線程的一個(gè)特性:隨機(jī)性。誰(shuí)搶到誰(shuí)執(zhí)行,至于執(zhí)行多長(zhǎng),cpu說(shuō)了算。

      7、為什么要覆蓋run方法呢?Thread類用于描述線程。該類就定義了一個(gè)功能,用于存儲(chǔ)線程要運(yùn)行的代碼,該存儲(chǔ)功能就是run方法。也就是說(shuō)Thread類中的run方法,用于存儲(chǔ)線程要運(yùn)行的代碼。

      8、原來(lái)線程都有自己默認(rèn)的名稱。Thread-編號(hào)。該編號(hào)從0開始。static Thread currentThread():獲取當(dāng)前線程對(duì)象。getName():獲取線程名稱。設(shè)置線程名稱:setName或者構(gòu)造函數(shù)。

      9、創(chuàng)建線程的第二種方式:實(shí)現(xiàn)Runnable接口。

      步驟:1,定義類實(shí)現(xiàn)Runnable接口。2,覆蓋Runnable接口中的run方法。目的:將線程要運(yùn)行的代碼存放在run方法中。3,通過(guò)Thread類建立線程對(duì)象。4,將Runnable接口的子類對(duì)象作為實(shí)際參數(shù)傳遞給Thread類的構(gòu)造函數(shù)。為什么要將Runnable接口的子類對(duì)象傳遞給Thread的構(gòu)造函數(shù)?因?yàn)椋远x的run方法所屬的對(duì)象時(shí)Runnable接口的子類對(duì)象。所有要讓線程去指定指定對(duì)象的run方法。就必須明確該run方法所屬對(duì)象。5,調(diào)用Thread類的start方法開啟線程并調(diào)用Runnable接口子類的run方法。

      10、實(shí)現(xiàn)方式和基礎(chǔ)方法有什么區(qū)別呢?實(shí)現(xiàn)方式好處:避免了單繼承的局限性。在定義線程時(shí),建議使用實(shí)現(xiàn)方式。兩種方式區(qū)別:繼承Thread:線程代碼存放在Thread子類run方法中。實(shí)現(xiàn)Runnable:線程代碼存放在接口的子類的run方法中。

      二、多線程:同步

      11、多線程的運(yùn)行出現(xiàn)了安全問題:?jiǎn)栴}的原因:當(dāng)多條語(yǔ)句在操作同一個(gè)線程共享數(shù)據(jù)時(shí),一個(gè)線程對(duì)多條語(yǔ)句只執(zhí)行了一部分,汗沒有執(zhí)行完,另一個(gè)線程參與進(jìn)來(lái)執(zhí)行。導(dǎo)致共享數(shù)據(jù)的錯(cuò)誤。解決辦法:對(duì)多條操作共享數(shù)據(jù)的語(yǔ)句,只能讓一個(gè)線程都執(zhí)行完。在執(zhí)行過(guò)程過(guò),其他線程不可以參與執(zhí)行。java對(duì)于多線程的安全問題提供了專業(yè)的解決方式。就是同步代碼塊。synchronized(對(duì)象){需要被同步的代碼;}。

      12、對(duì)象如同鎖。持有鎖的線程可以在同步中執(zhí)行。沒有鎖的線程即使獲取了cpu的執(zhí)行權(quán),也進(jìn)不去,因?yàn)闆]有獲取鎖。

      13、同步的前提:1,必須要有兩個(gè)或者兩個(gè)以上的線程。2,必須是多個(gè)線程使用同一個(gè)鎖。必須保證同步中只能有一個(gè)線程在運(yùn)行。

      14、好處:解決了多線程的安全問題。弊端:多個(gè)線程需要判斷鎖,較為消耗資源。

      15、多線程安全問題:如何找到問題:1,明確哪些代碼是多線程運(yùn)行代碼。2,明確共享數(shù)據(jù)。3,明確多線程運(yùn)行代碼中哪些語(yǔ)句是操作共享數(shù)據(jù)的。

      16、同步函數(shù):將關(guān)鍵字synchronized放到函數(shù)名稱前。即把synchronized當(dāng)作修飾符使用。

      17、同步函數(shù)用的是哪一個(gè)鎖呢?函數(shù)需要被對(duì)象調(diào)用。那么函數(shù)都有一個(gè)所屬對(duì)象引用。就是this。所有同步函數(shù)使用的鎖是this。

      18、如果同步函數(shù)被靜態(tài)修飾后,使用的鎖是什么呢?通過(guò)驗(yàn)證,發(fā)現(xiàn)不再是this。因?yàn)殪o態(tài)方法中也不可以定義this。靜態(tài)進(jìn)內(nèi)存時(shí),內(nèi)存中沒有本類對(duì)象,但是一定有該類對(duì)應(yīng)的字節(jié)碼文件對(duì)象。類名.class 該對(duì)象的類型是Class。靜態(tài)的同步方法,使用的鎖是該方法所在類的字節(jié)碼文件對(duì)象。類名.class。

      19、死鎖:同步中嵌套同步。而鎖卻不同。

      2016年01月18日

      day12

      一、多線程:線程間通信

      1、wait(),notify(),notifyALL(),用來(lái)操作線程為什么定義在了Object類中?這些方法存在于同步中。使用這些方法時(shí)必須要標(biāo)識(shí)所屬的同步的鎖。鎖可以是任意對(duì)象,所以任意對(duì)象調(diào)用的方法一定定義Object類中。

      2、wait()和sleep()有什么區(qū)別?wait():釋放資源,釋放鎖。sleep():釋放資源,不釋放鎖。

      3、wait:notify:notifyALL:都被使用在同步中,因?yàn)橐獙?duì)持有監(jiān)視器(鎖)的線程操作。所有要使用在同步中,因?yàn)橹挥型讲啪哂墟i。

      4、為什么這些操作線程的方法要定義在Object類中呢?因?yàn)檫@些方法在操作同步中線程時(shí),都必須要標(biāo)識(shí)他們所操作線程只有的鎖。只有同一個(gè)鎖上的被等待線程,可以被同一個(gè)鎖上notify喚醒。不可以對(duì)不同鎖中的線程進(jìn)行喚醒。也就是說(shuō),等待和喚醒必須是同一個(gè)鎖。而鎖可以是任意對(duì)象,所有可以被任意對(duì)象調(diào)用的方法定義在Object類中。

      5、JDK1.5 中提供個(gè)多線程升級(jí)解決方案。將同步synchronized替換成現(xiàn)實(shí)Lock操作。將Object中的wait,notify,notifyAll,替換了condition對(duì)象。該對(duì)象可以Lock鎖,進(jìn)行獲取。

      二、多線程:其他操作

      6、停止線程:A:定義循環(huán)結(jié)束標(biāo)記:因?yàn)榫€程運(yùn)行代碼一般都是循環(huán),只要控制了循環(huán)即可。B:使用interrupt(中斷)方法:該方法時(shí)結(jié)束線程的凍結(jié)狀態(tài),使線程回到運(yùn)行狀態(tài)中來(lái)。注意:stop方法已經(jīng)過(guò)時(shí)不再使用。

      7、如何停止線程?只有一種,run方法結(jié)束。開啟多線程運(yùn)行,運(yùn)行代碼通常是循環(huán)結(jié)構(gòu)。只要控制住循環(huán),就可以讓run方法結(jié)束,也就是線程結(jié)束。特殊情況:當(dāng)線程處于了凍結(jié)狀態(tài)。就不會(huì)讀取到標(biāo)記。那么線程就不會(huì)結(jié)束。

      8、當(dāng)沒有指定的方式讓凍結(jié)的線程恢復(fù)到運(yùn)行狀態(tài)時(shí),這時(shí)需要對(duì)凍結(jié)進(jìn)行清除。強(qiáng)制讓線程恢復(fù)到運(yùn)行狀態(tài)中來(lái)。這樣就可以操作標(biāo)記讓線程結(jié)束。Thread類中提供該方法:interrupt方法。

      9、join方法:當(dāng)A線程執(zhí)行到了B線程的.join()方法時(shí),A就會(huì)等待。等B線程都執(zhí)行完,A才會(huì)執(zhí)行。join可以用來(lái)臨時(shí)加入線程執(zhí)行。

      2016年01月19日

      day13

      一、String類:概述

      1、String類:字符串是一個(gè)特殊的對(duì)象。字符串一旦初始化就不可以被改變。String str=”abc”;String str1=new String(“abc”)。Str和str1的區(qū)別:str在內(nèi)存中有一個(gè)對(duì)象。Str1在內(nèi)存中有兩個(gè)對(duì)象。

      二、***重點(diǎn):String類:常見操作

      常見的操作有哪些? “abcd” 1,獲取。

      1.1 字符串中包含的字符數(shù),也就是字符串的長(zhǎng)度。

      int length():獲取長(zhǎng)度。

      1.2 根據(jù)位置獲取位置上某個(gè)字符。

      char charAt(int index):獲取位置上某個(gè)字符。

      1.3 根據(jù)字符獲取該字符在字符串中位置。

      int indexOf(int ch):獲取該字符在字符串中位置。返回的是ch在字符串中第一次出現(xiàn)的位置。

      int indexOf(int ch,int fromIndex):從fromIndex指定位置開始,獲取ch在字符串中出現(xiàn)的位置。

      int indexOf(String str):返回的是str在字符串中第一次出現(xiàn)的位置。

      int indexOf(String str,int fromIndex):從fromIndex指定位置開始,獲取str在字符串中出現(xiàn)的位置。

      int lastIndexOf(int ch):反向索引。2,判斷。

      2.1 字符串中是否包含某一個(gè)子串。

      boolean contains(str);

      特殊之處:indexOf(str):可以索引str第一次出現(xiàn)位置,如果返回-1,表示該str不在字符串中存在。

      2.2 2.3 2.4 2.5 2.6 所以,也可以用于對(duì)指定判斷是否包含。

      if(str.indexOf(“aa”)!=-1)而且該方法既可以判斷又可以獲取出現(xiàn)的位置。字符串是否有內(nèi)容。

      boolean isEmpty(str):原理就是判斷長(zhǎng)度是否為0。字符串是否是以指定內(nèi)容開頭。boolean startsWith(str);字符串是否是以指定內(nèi)容結(jié)尾。boolean endsWith(str);判斷字符串的內(nèi)容是否相同。復(fù)寫了Object類中的equals方法。boolean equals(str);判斷內(nèi)容是否相同,并忽略大小寫。boolean equalsIgnoreCass();3,轉(zhuǎn)換。

      3.1 將字符數(shù)組轉(zhuǎn)成字符串。

      構(gòu)造函數(shù):String(char[])

      String(char[],offset,count):將字符數(shù)組中的一部分轉(zhuǎn)成字符串。

      靜態(tài)方法:static String copyValueOf(char[]);

      static String copyValueOf(char[] data,int offset,int count);

      static String valueOf(char[]);

      3.2 將字符串轉(zhuǎn)成字符數(shù)組。//重點(diǎn)**。

      char[] toCharArray();3.3 將字節(jié)數(shù)組轉(zhuǎn)成字符串。

      String(byte[])String(byte[],offset,count):將字節(jié)數(shù)組中的一部分轉(zhuǎn)成字符串。3.4 將字符串轉(zhuǎn)成字節(jié)數(shù)組。

      byte[] getBytes();3.5 將基本數(shù)據(jù)類型轉(zhuǎn)成字符串。

      static String valueOf(int)

      static String valueOf(double)

      //3+“";//String.valueOf(3);

      特殊:字符串和字節(jié)數(shù)組在轉(zhuǎn)換過(guò)程中,是可以指定編碼表的。4,替換。

      String replace(oldchar,newchar);5,切割。

      String[] split(regex);6,子串。獲取字符串中的一部分。

      String substring(begin);String substring(begin,end);7,轉(zhuǎn)換,去除空格,比較。

      7.1 將字符串轉(zhuǎn)成大寫或者小寫。

      String toUpperCase();

      String toLowerCase();7.2 將字符串兩端的多個(gè)空格去除。

      String trim();7.3 對(duì)兩個(gè)字符串進(jìn)行自然順序的比較。

      int compareTo(string);

      三、String類:StringBuffer

      8、StringBuffer類:字符串的注組成原理就是通過(guò)該類實(shí)現(xiàn)的。StringBuffer可以對(duì)字符串內(nèi)容進(jìn)行增刪。StringBuffer是一個(gè)容器。很多方法與String相同。StringBuffer是可變長(zhǎng)度的。

      9、StringBuffer是字符串緩沖區(qū)。是一個(gè)容器。

      10、緩沖區(qū)的特點(diǎn):1,而且長(zhǎng)度是可變化的。2,可以直接操作多個(gè)數(shù)據(jù)類型。3,最終會(huì)通過(guò)toString方法變成字符串。

      11、StringBuffer常見操作: C create U update R read D delete 1,存儲(chǔ)。

      StringBuffer append():將指定數(shù)據(jù)作為參數(shù)添加到已有數(shù)據(jù)的結(jié)尾處。

      StringBuffer insert(index,數(shù)據(jù)):可以將數(shù)據(jù)插入到指定index位置。2,刪除。

      StringBuffer delete(start,end):刪除緩沖區(qū)中的數(shù)據(jù),包含start,不包含end。

      StringBuffer deleteCharAt(index):刪除指定index位置的字符。3,獲取。

      char charAt(int index);int indexOf(String str);int lastIndexOf(String str);int length();String substring(int start,int end);4,修改。

      StringBuffer replace(start,end,string);void setCharAt(int index,char ch);5,反轉(zhuǎn)。

      StringBuffer reverse();6,將緩沖區(qū)中指定數(shù)據(jù)存儲(chǔ)到指定字符數(shù)組中。

      void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)。

      12、JDK1.5版本之后出現(xiàn)了StringBuilder。

      StringBuffer是線程同步。單線程使用StringBuffer效率較低。多線程使用StringBuffer保證了安全性。

      StringBuilder是線程不同步。單線程使用StringBuilder提高了效率。多線程使用StringBuilder可能存在安全問題,但可以通過(guò)自定義鎖來(lái)解決安全問題。以后開發(fā),建議使用StringBuilder。

      13、升級(jí)三個(gè)因素:1,提高效率。2,簡(jiǎn)化書寫。3,提高安全性。

      四、基本數(shù)據(jù)類型對(duì)象包裝類

      14、基本數(shù)據(jù)類型對(duì)象包裝類的最常見作用:就是用于基本數(shù)據(jù)類型和字符串類型之間做轉(zhuǎn)換。

      15、數(shù)據(jù)類型轉(zhuǎn)換:

      A:基本數(shù)據(jù)類型轉(zhuǎn)成字符串。

      基本數(shù)據(jù)類型+”“ 基本數(shù)據(jù)類型.toString(基本數(shù)據(jù)類型值);如:Integer.toString(34);//將34整數(shù)變成”34“。B:字符串轉(zhuǎn)成基本數(shù)據(jù)類型。

      靜態(tài):基本數(shù)據(jù)類型包裝類.parseInt(字符串);如:xxx a=Xxx.parseXxx(String);

      int a=Integer.parseInt(”123“);

      double d=Double.parseDouble(”12.23“);

      boolean b=Boolean.parseBoolean(”true“);非靜態(tài):

      Integer i=new Integer(”123");

      int num=i.intValue();C:十進(jìn)制轉(zhuǎn)成其他進(jìn)制。

      toBinaryString();toHexString();toOctalString();D:其他進(jìn)制轉(zhuǎn)成十進(jìn)制。

      parseInt(string,radix)。

      2016年01月22日

      day14

      一、集合框架:概述

      1、集合類:為什么會(huì)出現(xiàn)集合類?面向?qū)ο笳Z(yǔ)言對(duì)事物的體現(xiàn)都是以對(duì)象的形式,所有為了方便對(duì)多個(gè)對(duì)象的操作,就對(duì)對(duì)象進(jìn)行存儲(chǔ),集合就是存儲(chǔ)對(duì)象最常用的一種方式。

      2、數(shù)組和集合類同是容器,有何不同?數(shù)組雖然也可以存儲(chǔ)對(duì)象,但長(zhǎng)度是固定的;集合長(zhǎng)度是可變的,數(shù)組中可以存儲(chǔ)基本數(shù)據(jù)類型,集合只能存儲(chǔ)對(duì)象。

      3、集合類的特點(diǎn):集合只用于存儲(chǔ)對(duì)象,集合長(zhǎng)度是可變的,集合可以存儲(chǔ)不同類型的對(duì)象。

      4、為什么會(huì)出現(xiàn)這么多的容器呢?因?yàn)槊恳粋€(gè)容器對(duì)數(shù)據(jù)的存儲(chǔ)方式有所不同。這個(gè)存儲(chǔ)方式稱之為:數(shù)據(jù)結(jié)構(gòu)。

      5、add方法的參數(shù)類型是Object。以便于接收任意類型對(duì)象。集合中存儲(chǔ)的都是對(duì)象的引用(地址)。

      6、什么是迭代器呢?其實(shí)就是集合的取出元素的方式。

      二、集合框架:List類

      7、List: 特有方法。凡是可以操作角標(biāo)的方法都是該體系特有的方法。增

      add(index,element);addAll(index,Collection);刪

      remove(index);改

      set(index,element);查

      get(index);subList(from,to);listIterator();

      8、List集合特有的迭代器。ListIterator是Iterator的子接口。在迭代時(shí),不可以通過(guò)集合對(duì)象的方法操作集合中的元素。因?yàn)闀?huì)發(fā)生ConcurrentModificationException異常。所有,在迭代器時(shí),只能用迭代器的方法操作元素,可以Iterator方法時(shí)優(yōu)先的,只能對(duì)元素進(jìn)行判斷,取出,刪除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。該接口只能通過(guò)List集合的ListIterator方法獲取。

      9、Collection |--List:元素是有序的,元素可以重復(fù)。因?yàn)樵摷象w系有索引。

      |--ArrayList:底層的數(shù)據(jù)結(jié)構(gòu)使用的是數(shù)組結(jié)構(gòu)。特點(diǎn):查詢速度很快。但是增刪稍慢。線程不同步。

      |--LinkedList:底層使用的是鏈表數(shù)據(jù)結(jié)構(gòu)。特點(diǎn):增刪速度很快,查詢速度稍慢。

      |--Vector:底層是數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)。線程同步。被ArrayList替代了。

      |--Set:元素是無(wú)序的,元素不可以重復(fù)。

      10、枚舉就是Vector特有的取出方式。發(fā)現(xiàn)枚舉和迭代器很像。其實(shí)枚舉和迭代是一樣的。因?yàn)槊杜e的名稱以及方法的名稱都過(guò)長(zhǎng)。所有被迭代器取代了。枚舉郁郁而終了。

      11、LinkedList:特有方法: addFirst();addLast();

      getFirst();getLast();獲取元素,但是不刪除元素。如果集合中沒有元素,會(huì)出現(xiàn)NoSuchElementException。

      removeFirst();removeLast();獲取元素,但是元素被刪除。如果集合中沒有元素,會(huì)出現(xiàn)NoSuchElementException。

      在JDK1.6出現(xiàn)了替代方法。offerFirst();offerLast();

      peekFirst();peekLast();獲取元素,但是不刪除元素。如果集合中沒有元素,會(huì)返回null。

      pollFirst();pollLast();獲取元素,但是元素被刪除。如果集合中沒有元素,會(huì)返回null。

      三、集合框架:Set類

      12、HaseSet是如何保證元素唯一性的呢?是通過(guò)元素的兩個(gè)方法,hashCode和equals來(lái)完成。如果元素的hashCode值相同,才會(huì)判斷equals是否為true。如果元素的hashCode值不同,不會(huì)調(diào)用equals。

      13、注意:對(duì)于判斷元素是否存在,以及刪除操作,依賴的方法時(shí)元素的hashcode和equals方法。

      2016年1月23日

      day15

      一、集合框架:Set類

      1、Set:無(wú)序,不可以重復(fù)元素。

      |--HashSet:數(shù)據(jù)結(jié)構(gòu)是哈希表。線程是非同步的。

      保證元素唯一性的原理:判斷元素的hashCode值是否相同。

      如果相同,還會(huì)繼續(xù)判斷元素的equals方法,是否為true。

      |--TreeSet:可以對(duì)Set集合中的元素進(jìn)行排序。

      底層數(shù)據(jù)結(jié)構(gòu)是二叉樹。

      保證元素唯一性的依據(jù):

      compareTo方法和return 0。

      2、TreeSet排序的第一種方式:讓元素自身具備比較性。元素需要實(shí)現(xiàn)comparable接口,覆蓋comparaeTo方法。這種方式也稱為元素的自然順序,或者默認(rèn)順序。

      3、TreeSet排序的第二種方式:當(dāng)元素自身不具備比較性時(shí),或者具備的比較性不是所需要的。這時(shí)就需要讓集合自身具備比較性。在集合初始化時(shí),就有了比較方式。

      4、當(dāng)元素自身不具備比較性,或者具備的比較性不是所需要的。這時(shí)需要讓容器自身具備比較性。定義了比較器,將比較器對(duì)象作為參數(shù)傳遞給TreeSet集合的構(gòu)造函數(shù)。

      5、當(dāng)兩種排序都存在時(shí),以比較器為主。定義一個(gè)類,實(shí)現(xiàn)Comparator接口,覆蓋compare方法。

      二、集合框架:泛型

      6、泛型:JDK1.5版本以后出現(xiàn)的新特性。用于解決安全問題,是一個(gè)類型安全機(jī)制。

      7、泛型的好處:好處:1,將運(yùn)行時(shí)期出現(xiàn)問題ClassCastException,轉(zhuǎn)移到了編譯時(shí)期。方便于程序員解決問題。讓運(yùn)行時(shí)期問題減少。更加安全。2,避免了強(qiáng)制轉(zhuǎn)換麻煩。

      8、泛型格式:通過(guò)<>來(lái)定義要操作的引用數(shù)據(jù)類型。在使用java提供的對(duì)象時(shí),什么時(shí)候?qū)懛盒湍??通常在集合框架中很常見。只要見?>就要定義泛型。其實(shí)<>就是用來(lái)接收類型的。當(dāng)使用集合時(shí),將集合中要存儲(chǔ)的數(shù)據(jù)類型作為參數(shù)傳遞到<>即可。

      9、什么時(shí)候定義泛型類?當(dāng)類中要操作的引用數(shù)據(jù)類型不確定的時(shí)候,早期定義Object來(lái)完成擴(kuò)展。現(xiàn)在定義泛型來(lái)完成擴(kuò)展。

      10、泛型類定義的泛型,在整個(gè)類中有效。如果被方法使用,那么泛型類的對(duì)象明確要操作的具體類型后,所有要操作的類型就已經(jīng)固定了。為了讓不同方法可以操作不同類型,而且類型還不確定,那么可以將泛型定義在方法上。

      11、特殊之處:靜態(tài)方法不可以訪問類上定義的泛型。如果靜態(tài)方法操作的引用數(shù)據(jù)類型不確定,可以將泛型定義在方法上。

      12、? 通配符。也理解為占位符。泛型的限定:

      ? extends E:可以接收E類型或者E的子類型。上限。? super E:可以接收E類型或者E的父類型。下限。

      2016年01月24日

      day16

      一、集合:Map概述

      1、Map集合:該集合存儲(chǔ)鍵值對(duì)。一對(duì)一對(duì)往里存,而且要保證鍵的唯一性。

      2、Map框架:

      1,添加。

      put(K key,V value)

      putAll(Map m)2,刪除。

      clear()

      remove(Object key)3,判斷。

      containsValue(Object value)

      containsKey(Object key)

      isEmpty()4,獲取。

      get(Object key)

      size()

      values()

      entrySet()

      keySet()

      3、Map |--HashTable:底層是哈希表數(shù)據(jù)結(jié)構(gòu),不可以存入null鍵null值,該集合是線程同步的。JDK1.0。效率低。

      |--HashMap:底層是哈希表數(shù)據(jù)結(jié)構(gòu),允許使用null鍵和null值,該集合是不同步的。JDK1.2。效率高。|--TreeMap:底層是二叉樹數(shù)據(jù)結(jié)構(gòu),線程不同步,可以用于給map集合中的鍵進(jìn)行排序。

      4、和Set很像。其實(shí)大家,Set底層就是使用了Map集合。

      5、map集合的兩種取出方式:1,keySet:將map中所有的鍵存入到Set集合。因?yàn)镾et具備迭代器。所以可以迭代方式取出所有的鍵,在根據(jù)get方法,獲取每一個(gè)鍵對(duì)應(yīng)的值。Map集合的取出原理:將map集合轉(zhuǎn)成set集合。在通過(guò)迭代器取出。2,Set> entrySet:將map集合中的映射關(guān)系存入到了set集合中,而這個(gè)關(guān)系的數(shù)據(jù)類型就是:Map.Entry。

      6、Map.Entey 其實(shí)Entry也是一個(gè)接口,它是Map接口中的一個(gè)內(nèi)部接口。

      7、什么時(shí)候使用map集合呢?當(dāng)數(shù)據(jù)之間存在映射關(guān)系時(shí),就要先想到map集合。

      8、map擴(kuò)展知識(shí):map集合被使用是因?yàn)榫邆溆成潢P(guān)系。

      2016年01月26日

      day17

      一、集合:Collections

      1、fill方法可以將list集合中所有元素替換成指定元素。

      二、集合:Arrays

      2、Arrays:用于操作數(shù)組的工具類。里面都是靜態(tài)方法。

      3、asList:將數(shù)組變成list集合。

      4、把數(shù)組變成list集合有什么好處?可以使用集合的思想和方法來(lái)操作數(shù)組中的元素。注意:將數(shù)組變成集合,不可以使用集合的增刪方法。因?yàn)閿?shù)據(jù)的長(zhǎng)度是固定的。如果你增刪,那么會(huì)發(fā)生UnsupportedOperationException。

      5、數(shù)組變集合:如果數(shù)組中的元素都是對(duì)象。那么變成集合時(shí),數(shù)組中的元素就直接轉(zhuǎn)成集合中的元素。如果數(shù)組中的元素都是基本數(shù)據(jù)類型,那么會(huì)將該數(shù)組作為集合中的元素存在。

      6、集合變數(shù)組:指定類型的數(shù)組到底要定義多長(zhǎng)呢?當(dāng)指定類型的數(shù)組長(zhǎng)度小于了集合的size,那么該方法內(nèi)部會(huì)創(chuàng)建一個(gè)新的數(shù)組,長(zhǎng)度為集合的size。當(dāng)指定類型的數(shù)組長(zhǎng)度大于了集合的size,就不會(huì)新創(chuàng)建數(shù)組,而是使用傳遞進(jìn)來(lái)的數(shù)組。所以創(chuàng)建一個(gè)剛剛好的數(shù)組最優(yōu)。

      7、為什么要講集合變數(shù)組?為了限定對(duì)元素的操作。不需要進(jìn)行增刪了。

      8、高級(jí)for循環(huán):格式:for(數(shù)據(jù)類型變量名:被遍歷的集合(Collection)或者數(shù)組){}。

      9、高級(jí)for循環(huán)、迭代器、ListIterator的區(qū)別:

      高級(jí)for循環(huán)對(duì)集合進(jìn)行遍歷。只能獲取集合元素,但是不能對(duì)集合進(jìn)行操作。迭代器除了遍歷,還可以進(jìn)行remove集合中元素的動(dòng)作。

      如果使用ListIterator,還可以在遍歷過(guò)程中對(duì)集合進(jìn)行增刪改查的操作。

      10、傳統(tǒng)for和高級(jí)for有什么區(qū)別呢?高級(jí)for有一個(gè)局限性:必須有被遍歷的目標(biāo)。建議在遍歷數(shù)組的時(shí)候,還是希望使用傳統(tǒng)for。因?yàn)閭鹘y(tǒng)for可以定義角標(biāo)。

      11、JDK1.5版本出現(xiàn)的新特性:可變參數(shù):其實(shí)就是上一種數(shù)組參數(shù)的簡(jiǎn)寫形式。不用每一次都手動(dòng)的建立數(shù)組對(duì)象。只要將要操作的元素作為參數(shù)傳遞即可。隱式將這些參數(shù)封裝成了數(shù)組。

      12、方法的可變參數(shù)。在使用時(shí)注意:可變參數(shù)一定要定義在參數(shù)列表最后面。

      13、import static:靜態(tài)導(dǎo)入:例如:import static java.lang.System.*;//導(dǎo)入了System類中所有靜態(tài)成員。注意:當(dāng)類名重名時(shí),需要制定具體的包名。當(dāng)方法重名時(shí),指定具備所屬的對(duì)象或者類。

      2016年01月28日

      day18

      一、其他對(duì)象:System

      1、System:類中的方法和屬性都是靜態(tài)的。out:標(biāo)準(zhǔn)輸出,默認(rèn)是控制臺(tái)。int:標(biāo)準(zhǔn)輸入,默認(rèn)是鍵盤。描述系統(tǒng)一些信息。

      2、獲取系統(tǒng)屬性信息:Properties getProperties()。因?yàn)镻roperties是Hashtable的子類,也就是Map集合的一個(gè)子類對(duì)象。那么可以通過(guò)map的方法取出該集合中的元素。該集合中存儲(chǔ)都是字符串。沒有泛型定義。

      3、Runtime對(duì)象:該類并沒有提供構(gòu)造函數(shù)。說(shuō)明不可以new對(duì)象。那么會(huì)直接想到該類中的方法都是靜態(tài)的。發(fā)現(xiàn)該類中還有非靜態(tài)方法。說(shuō)明該類肯定會(huì)提供方法獲取本類對(duì)象。而且該方法是靜態(tài)的,并返回值類型是本類類型。由這個(gè)特點(diǎn)可以看出該類使用了單例設(shè)計(jì)模式完成。該方式的static Runtime getRuntime()。

      4、Math類:ceil方法:返回大于指定數(shù)據(jù)的最小整數(shù)。floor方法:返回小于指定數(shù)據(jù)的最大整數(shù)。round方法:四舍五入。pow方法:冪運(yùn)算。random:返回0-1之間的隨機(jī)數(shù)。

      二、IO流:概述

      5、IO(Input Outpu)流:IO流用來(lái)處理設(shè)備之間的數(shù)據(jù)傳輸。Java對(duì)數(shù)據(jù)的操作是通過(guò)流的方式。Java用于操作流的對(duì)象都在IO包中。流按操作數(shù)據(jù)分為兩種:字節(jié)流與字符流。流按流向分為:輸入流,輸出流。

      6、IO流常用基類:字節(jié)流的抽象基類:InputStream,OutputStream。字節(jié)流的抽象基類:Reader,Writer。注:由這四個(gè)類派生出來(lái)的子類名稱都是以其父類名作為子類名的后綴(如:InputStream的子類FilelnputStream,如:Reader的子類FileReader。)。

      7、字符流和字節(jié)流:字節(jié)流兩個(gè)基類:InputStream

      OutputStream。字符流兩個(gè)基類:Reader Writer。先學(xué)習(xí)字符流的特點(diǎn):既然IO流是用于操作數(shù)據(jù)的,那么數(shù)據(jù)的最常見體現(xiàn)形式是:文件。2016年01月30日

      day19

      一、IO流:Buffered緩沖區(qū)

      1、字符流的緩沖區(qū):緩沖區(qū)的出現(xiàn)提高了對(duì)數(shù)據(jù)的讀寫效率。對(duì)應(yīng)類:BufferedWriter;BufferedReader。緩沖區(qū)要結(jié)合流才可以使用。在流的基礎(chǔ)上對(duì)流的功能進(jìn)行了增強(qiáng)。

      2、緩沖區(qū)的出現(xiàn)是為了提高流的操作效率而出現(xiàn)的。所以在創(chuàng)建緩沖區(qū)之前,必須要先有流對(duì)象。該緩沖區(qū)中提供了一個(gè)跨平臺(tái)的換行符。newLine()。

      3、字符讀取流緩沖區(qū):該緩沖區(qū)提供了一次讀一行的方法readLine(),方便于對(duì)文本數(shù)據(jù)的獲取。當(dāng)返回null時(shí),表示讀到文件末尾。

      4、readLine方法返回的時(shí)候只返回回車符之前的數(shù)據(jù)內(nèi)容。并不返回回車符。

      5、裝飾設(shè)計(jì)模式:當(dāng)想要對(duì)已有的對(duì)象進(jìn)行功能增強(qiáng)時(shí),可以定義類,將已有對(duì)象傳入,基于已有的功能,并提供加強(qiáng)功能。那么自定義的該類稱為裝飾類。

      6、裝飾類通常會(huì)通過(guò)構(gòu)造方法接收被裝飾的對(duì)象。并基于被裝飾的對(duì)象的功能,提供更強(qiáng)的功能。

      7、裝飾模式比繼承要靈活,避免了繼承體系臃腫。而且降低了類與類之間的關(guān)系。裝飾類因?yàn)槭窃鰪?qiáng)已有對(duì)象,具備的功能和已有的是相同的,只不過(guò)提供了更強(qiáng)功能。所以裝飾類和被裝飾類通常是都屬于一個(gè)體系中的。

      二、IO流:字節(jié)流

      8、字符流: FileReader FileWriter BufferedReader BufferedWriter 字節(jié)流:

      InputStream

      OutputStream BufferedInputStream

      BufferedOutputStream

      9、流操作的基本規(guī)律:

      最痛苦的就是流對(duì)象有很多,不知道該用哪一個(gè)。通過(guò)兩個(gè)明確來(lái)完成。1,明確源和目的。

      源:輸入流。InputStream Reader。

      目的:輸出流。OutputStream Writer。2,明確操作的數(shù)據(jù)是否是純文本。

      是:字符流。

      不是:字節(jié)流。

      3,當(dāng)體系明確后,再明確要使用哪個(gè)具體的對(duì)象。

      通過(guò)設(shè)備來(lái)進(jìn)行區(qū)分:

      源設(shè)備:內(nèi)存,硬盤,鍵盤。目的設(shè)備:內(nèi)存,硬盤,控制臺(tái)。

      2016年01月31日

      day20

      一、IO流:File類

      1、File類:用來(lái)將文件或者文件夾封裝成對(duì)象。方便對(duì)文件與文件夾進(jìn)行操作。File對(duì)象可以作為參數(shù)傳遞給流的構(gòu)造函數(shù)。了解File類中的常用方法。

      2、File類常見方法: 1,創(chuàng)建。

      boolean createNewFile();在指定位置創(chuàng)建文件,如果該文件已經(jīng)存在,則不創(chuàng)建,返回false。

      和輸出流不一樣,輸出流對(duì)象一建立創(chuàng)建對(duì)象。而且文件已經(jīng)存在,會(huì)覆蓋。

      boolean mkdir();創(chuàng)建一級(jí)文件夾。

      boolean mkdirs();創(chuàng)建多級(jí)文件夾。2,刪除。

      boolean delete();刪除失敗返回false。

      void deleteOnExit();在程序退出時(shí)刪除指定文件。3,判斷。

      boolean exists();文件是否存在。

      boolean isFile();判斷是否是文件。

      boolean isDirectory();判斷是否是文件夾。

      boolean isHidden();判斷是否是隱藏文件。

      boolean isAbsolute();判斷是否是絕對(duì)路徑。4,獲取信息。

      String getName();獲取文件名稱。

      String getPath();獲取文件相對(duì)路徑。

      String getParent();該方法返回的是絕對(duì)路徑中的父目錄。如果獲取的是相對(duì)路徑,返回null。

      如果相對(duì)路徑中有上一層目錄那么該目錄就是返回結(jié)果。

      getAbsolute();獲取文件絕對(duì)路徑。

      lastModified();返回文件最后一次被修改的時(shí)間。

      length()。

      3、因?yàn)槟夸浿羞€有目錄,只要使用同一個(gè)列出目錄功能的函數(shù)完成即可。在列出過(guò)程中出現(xiàn)的還是目錄的話,還可以再次調(diào)用本功能。也就是函數(shù)自身調(diào)用自身。這種表現(xiàn)形式,或者編程手法,稱為遞歸。

      遞歸要注意:1,限定條件。2,要注意遞歸的次數(shù)。盡量避免內(nèi)存溢出。

      4、練習(xí):將一個(gè)指定目錄下的java文件的絕對(duì)路徑,存儲(chǔ)到一個(gè)文本文件中。建立一個(gè)java文件列表文件。思路:1,對(duì)指定的目錄進(jìn)行遞歸。2,獲取遞歸過(guò)程所有的java文件的路徑。3,將這些路徑存儲(chǔ)到集合中。4,將集合中的數(shù)據(jù)寫入到一個(gè)文件中。

      二、IO流:Properties類

      5、Properties是hashtable的子類。也就是說(shuō)它具備map集合的特點(diǎn)。而且它里面存儲(chǔ)的鍵值對(duì)都是字符串。是集合中和IO技術(shù)相結(jié)合的集合容器,該對(duì)象的特點(diǎn):可以用于鍵值對(duì)形式的配置文件。

      6、那么在加載數(shù)據(jù)時(shí),需要數(shù)據(jù)有固定格式:鍵=值。

      三、IO流:其他類

      7、打印流:PrintWriter與PrintStream:可以直接操作輸入流和文件。打印流:

      該流提供了打印方法,可以將各種數(shù)據(jù)類型的數(shù)據(jù)都原樣打印。字節(jié)打印流:PrintStream 構(gòu)造函數(shù)可以接收的參數(shù)類型: 1,file對(duì)象。File。

      2,字符串路徑。String。

      3,字節(jié)輸出流。OutputStream。字符打印流:PrintWriter 構(gòu)造函數(shù)可以接收的參數(shù)類型: 1,file對(duì)象。File。

      2,字符串路徑。String。

      3,字節(jié)輸出流。OutputStream。4,字符數(shù)出來(lái):Writer。

      8、序列流:SequenceInputStream:對(duì)多個(gè)流進(jìn)行合并。

      9、操作對(duì)象:ObjectInputStream與ObjectOutputStream:被操作的對(duì)象需要實(shí)現(xiàn)Serializable(標(biāo)記接口)。

      2016年02月01日

      day21

      一、IO流:其他類

      1、RandomAccessFile:隨機(jī)訪問文件,自身具備讀寫的方法。通過(guò)skipBytes(int x),seek(int x)來(lái)達(dá)到隨機(jī)訪問。

      2、管道流:PipedInputStream和PipedOutputStream:輸入輸出可以直接進(jìn)行連接,通過(guò)結(jié)合線程使用。

      3、RandomAccessFile:該類不算是IO體系中子類。而是直接繼承自O(shè)bject。但是它是IO包中成員。因?yàn)樗邆渥x和寫功能。內(nèi)部封裝了一個(gè)數(shù)組,而且通過(guò)指針對(duì)數(shù)據(jù)的元素進(jìn)行操作。可以通過(guò)getFilePointer獲取指針位置。同時(shí)可以通過(guò)seek改變指針的位置。其實(shí)完成讀寫的原理就是內(nèi)部封裝了字節(jié)輸入流和輸出流。通過(guò)構(gòu)造函數(shù)可以看出,該類只能操作文件。而且操作文件還有模式:只讀r,讀寫rw等。

      4、如果模式為只讀r。不會(huì)創(chuàng)建文件。會(huì)去讀取一個(gè)已存在文件,如果該文件不存在,則會(huì)出現(xiàn)異常。如果模式為讀寫rw。操作的文件不存在,會(huì)自動(dòng)創(chuàng)建。如果存在則不會(huì)覆蓋。

      5、IO包中的其他類:

      操作基本數(shù)據(jù)類型:DataInputStream與DataOutputStream。

      操作字節(jié)數(shù)組:ByteArrayInputStream與ByteArrayOutputStream。操作字符數(shù)組:CharArrayReader與CharArrayWrite。操作字符串:StringReader與StringWriter。

      6、用于操作字節(jié)數(shù)組的流對(duì)象。

      ByteArrayInputStream :在構(gòu)造的時(shí)候,需要接收數(shù)據(jù)源,而且數(shù)據(jù)源是一個(gè)字節(jié)數(shù)組。ByteArrayOutputStream :在構(gòu)造的時(shí)候,不用定義數(shù)據(jù)目的,因?yàn)樵搶?duì)象中已經(jīng)內(nèi)部封裝了可變長(zhǎng)度的字節(jié)數(shù)組。這就是數(shù)據(jù)目的地。因?yàn)檫@兩個(gè)流對(duì)象都操作的數(shù)組,并沒有使用系統(tǒng)資源。所以,不用進(jìn)行close關(guān)閉。在流操作規(guī)律講解時(shí): 源設(shè)備:

      鍵盤 System.in,硬盤 FileStream,內(nèi)存 ArrayStream。目的設(shè)備:

      控制臺(tái) System.out,硬盤 FileStream,內(nèi)存 ArrayStream。用流的讀寫思想來(lái)操作數(shù)組。

      二、IO流:字符編碼

      7、字符編碼:字符流的出現(xiàn)為了方便操作字符。更重要是的加入了編碼轉(zhuǎn)換。通過(guò)子類轉(zhuǎn)換流來(lái)完成:InputStreamReader;OutputStreamWriter。在兩個(gè)對(duì)象進(jìn)行構(gòu)造的時(shí)候可以加入字符集。

      8、編碼表的由來(lái):計(jì)算機(jī)只能識(shí)別二進(jìn)制數(shù)據(jù),早期由來(lái)是電信號(hào)。為了方便應(yīng)用計(jì)算機(jī),讓它可以識(shí)別各個(gè)國(guó)家的文字。就將各個(gè)國(guó)家的文字用數(shù)字來(lái)表示,并一一對(duì)應(yīng),形成一張表。這就是編碼表。

      9、常見的編碼表:

      ASCII:美國(guó)標(biāo)準(zhǔn)信息交換碼。用一個(gè)字節(jié)的7位可以表示。ISO8859-1:拉丁碼表。歐洲碼表。用一個(gè)字節(jié)的8位表示。GBK2312:中國(guó)的中文編碼表。用兩個(gè)字節(jié)的16位來(lái)表示。GBK:中國(guó)的中文編碼表升級(jí),融合了更多的中文文字符號(hào)。

      Unicode:國(guó)際標(biāo)準(zhǔn)碼,融合了多種文字。所有文字都用兩個(gè)字節(jié)來(lái)表示,Java語(yǔ)言使用的就是Unicode。

      UTF-8:最多用三個(gè)字節(jié)來(lái)表示一個(gè)字符。??

      10、編碼:字符串變成字節(jié)數(shù)組。解碼:字節(jié)數(shù)組變成字符串。String-->byte[];str.getBytes(charsetName);byte[]-->String;new String(byte[],charsetName)。2016年02月02日

      day22

      一、GUI:概述

      1、GUI:圖形用戶界面。

      GUI:Graphical User Interface(圖形用戶接口)。用圖形的方式,來(lái)顯示計(jì)算機(jī)操作的界面,這樣更方便跟直觀。

      CLI:Command line User Inteface(命令行用戶接口)。就是常見的Dos命令行操作。需要記憶一些常用的命令,操作不直觀。

      舉例:比如:創(chuàng)建文件夾,或者刪除文件夾等。

      Java為GUI提供的對(duì)象都存在java.Awt和javax.Swing兩個(gè)包中。

      2、Awt與Swing:

      java.Awt:Abstract Window ToolKit(抽象窗口工具包),需調(diào)用本地系統(tǒng)方法實(shí)現(xiàn)功能。屬重量級(jí)控件。

      javax.Swing:在Awt的基礎(chǔ)上,建立的一套圖形界面系統(tǒng),其中提供了更多的組件,而且完全由Java實(shí)現(xiàn)。增強(qiáng)了移植性,屬輕量級(jí)控件。

      3、繼承關(guān)系圖:

      4、布局管理器:

      容器中的組件的排放方式,就是布局。常見的布局管理器:

      FlowLayout(流式布局管理器)

      從左到右的順序排列。

      Panel默認(rèn)的布局管理器。BorderLayout(邊界布局管理器)

      東,南,西,北,中。

      Frame默認(rèn)的布局管理器。GridLayout(網(wǎng)格布局管理器)

      規(guī)則的矩陣。

      CardLayout(卡片布局管理器)

      選項(xiàng)卡。

      GridBagLayout(網(wǎng)格包布局管理器)

      非規(guī)則的矩陣。

      5、創(chuàng)建圖形化界面: 1,創(chuàng)建frame窗體。

      2,對(duì)窗體進(jìn)行基本設(shè)置。

      比如:大小、位置、布局。3,定義組件。

      4,將組件通過(guò)窗體的add方法添加到窗體中。5,讓窗體顯示,通過(guò)setVisible(true)來(lái)完成。

      6、建立一個(gè)簡(jiǎn)單的窗體:

      Container常用子類:Window Panel(面板,不能單獨(dú)存在。)Window常用子類:Frame Dialog。簡(jiǎn)單的窗體創(chuàng)建過(guò)程:

      Frame f = new Frame(“my window”);f.setLayout(new FlowLayout());f.setSize(500,400);//設(shè)置窗體大小。

      f.setLocation(300,200);//設(shè)置窗體出現(xiàn)在屏幕的位置。f.setVisible(true)。

      二、GUI:事件監(jiān)聽機(jī)制

      7、事件監(jiān)聽機(jī)制組成:事件源(組件);事件(Event);監(jiān)聽器(Listener);事件處理(引發(fā)事件后處理方式)。

      8、事件監(jiān)聽機(jī)制流程圖:

      9、事件監(jiān)聽機(jī)制的特點(diǎn): 1,事件源。2,事件。3,監(jiān)聽器。4,事件處理。

      事件源:就是awt或者swing包中的那些圖形界面組件。事件:每一個(gè)事件源都有自己特有的對(duì)應(yīng)事件和共性事件。

      監(jiān)聽器:將可以觸發(fā)某一個(gè)事件的動(dòng)作(不止一個(gè)動(dòng)作)都已經(jīng)封裝到了監(jiān)聽器中。以上三者,在java中都已經(jīng)定義好了。直接獲取其對(duì)象來(lái)用就可以了。我們要做的事情是,就是對(duì)產(chǎn)生的動(dòng)作進(jìn)行處理。

      2016年02月03日

      day23

      一、網(wǎng)絡(luò)編程:概述

      1、網(wǎng)絡(luò)編程:

      網(wǎng)絡(luò)模型:OSI參考模型。TCP/IP參考模型。網(wǎng)絡(luò)通訊要素:IP地址。端口號(hào)。傳輸協(xié)議。

      2、網(wǎng)絡(luò)參考模型:

      3、網(wǎng)絡(luò)通訊要素: IP地址:網(wǎng)絡(luò)中設(shè)備的標(biāo)識(shí)。不易記憶,可用主機(jī)名。本地回環(huán)地址:127.0.0.1主機(jī)名:localhost。端口號(hào):用于標(biāo)識(shí)進(jìn)程的邏輯地址,不同進(jìn)程的標(biāo)識(shí)。有效端口:0~65535,其中0~1024系統(tǒng)使用或保留端口。

      傳輸協(xié)議:通訊的規(guī)則。常見協(xié)議:TCP,UDP。

      4、UDP和TCP: UDP:

      將數(shù)據(jù)及源和目的封裝成數(shù)據(jù)包中,不需要建立連接。每個(gè)數(shù)據(jù)報(bào)的大小在限制在64k內(nèi)。因無(wú)連接,是不可靠協(xié)議。不需要建立連接,速度快。

      特點(diǎn):面向無(wú)連接。數(shù)據(jù)會(huì)被封包。不可靠。速度快。比如:聊天,視頻會(huì)議,桌面共享。TCP:

      建立連接,形成傳輸數(shù)據(jù)的通道。

      在連接中進(jìn)行大數(shù)據(jù)量傳輸。

      通過(guò)三次握手完成連接,是可靠協(xié)議。

      必須建立連接,效率會(huì)稍低。

      特點(diǎn):面向連接??纱髷?shù)據(jù)量傳輸。比較可靠。稍微有點(diǎn)慢。比如:下載。

      5、Socket:

      Socket就是為網(wǎng)絡(luò)服務(wù)提供的一種機(jī)制。通信的兩端都有Socket。

      網(wǎng)絡(luò)通信其實(shí)就是Socket間的通信。數(shù)據(jù)在兩個(gè)Socket間通過(guò)IO傳輸。

      二、網(wǎng)絡(luò)編程:UDP

      6、UDP傳輸:

      DatagramSocket與DatagramPacket。建立發(fā)送端,接收端。建立數(shù)據(jù)包。

      調(diào)用Socket的發(fā)送接收方法。關(guān)閉Socket。

      發(fā)送端與接收端是兩個(gè)獨(dú)立的運(yùn)行程序。

      三、網(wǎng)絡(luò)編程:TCP

      7、TCP傳輸:

      Socket和ServerSocket。建立客戶端和服務(wù)器端。

      建立連接后,通過(guò)Socket中的IO流進(jìn)行數(shù)據(jù)的傳輸。關(guān)閉socket。

      同樣,客戶端與服務(wù)器端是兩個(gè)獨(dú)立的應(yīng)用程序。2016年02月04日

      day24

      一、網(wǎng)絡(luò)編程:瀏覽器客戶端

      1、視頻演示講解。

      2016年02月6日

      day25

      一、正則表達(dá)式

      1、正則表達(dá)式:符合一定規(guī)則的表達(dá)式。作用:用于專門操作字符串。

      2、正則表達(dá)式:符合一定規(guī)則的表達(dá)式。

      作用:用于專門操作字符串。

      特點(diǎn):用一些特定的符號(hào)來(lái)表示一些代碼操作。這樣就簡(jiǎn)化了書寫。

      所以學(xué)習(xí)正則表達(dá)式,就是在學(xué)習(xí)一些特殊符號(hào)的使用。

      好處:可以簡(jiǎn)化對(duì)字符串的復(fù)雜操作。

      弊端:符號(hào)定義越多,正則越長(zhǎng),閱讀性越差。

      3、具體操作功能:

      1,匹配:String matchess();方法。用規(guī)則匹配整個(gè)字符串,只要有一處不符合規(guī)則,就匹配結(jié)束,返回false。2,切割:String split();3,替換:String replaceAll();4,獲?。簩⒆址蟹弦?guī)則的子串取出。

      4、獲?。翰僮鞑襟E:

      1,將正則表達(dá)式封裝成對(duì)象。

      2,讓正則對(duì)象和要操作的字符串相關(guān)聯(lián)。3,關(guān)聯(lián)后,獲取正則匹配引擎。

      4,通過(guò)引擎對(duì)符合規(guī)則的子串進(jìn)行操作,比如取出。

      下載給Java新手的一些建議——Java知識(shí)點(diǎn)歸納(Java基礎(chǔ)部分)word格式文檔
      下載給Java新手的一些建議——Java知識(shí)點(diǎn)歸納(Java基礎(chǔ)部分).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        java知識(shí)點(diǎn)小結(jié)

        java重要知識(shí)點(diǎn)總結(jié)如下: 1,抽象,封裝,繼承,多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)中得四個(gè)特點(diǎn). 2,面向?qū)ο蟮密浖_發(fā)大體分為:面向?qū)ο蟮姆治?,面向?qū)ο蟮脑O(shè)計(jì),面向?qū)ο蟮膶?shí)現(xiàn). 可概括為如下過(guò)程......

        java知識(shí)點(diǎn)總結(jié)(定稿)

        目錄 目錄 ................................................................................................................................................ 1 基礎(chǔ)......

        新手java學(xué)習(xí)路線圖(本站推薦)

        階段 內(nèi)容 目標(biāo) 第一階段(以Tetris項(xiàng)目貫穿) 掌握常見的數(shù)據(jù)結(jié)構(gòu)和實(shí)用算法;培養(yǎng)良好的企業(yè)級(jí)編程習(xí)慣。 掌握面向?qū)ο蟮幕驹瓌t以及在編程實(shí)踐中的意義;掌握J(rèn)ava面向?qū)ο缶幊?.....

        JAVA基礎(chǔ)總結(jié)

        JAVA基礎(chǔ)總結(jié) 轉(zhuǎn)眼間,已經(jīng)來(lái)到這里學(xué)習(xí)半年了,而現(xiàn)在我們對(duì)于JAVA學(xué)習(xí)才算是真正的開始。一開始接觸的時(shí)候我發(fā)現(xiàn)這個(gè)和C語(yǔ)言的基本語(yǔ)法幾乎一模一樣的,老師說(shuō):JAVA語(yǔ)言本來(lái)就是......

        Java基礎(chǔ)總結(jié)

        ? 基本數(shù)據(jù)類型 ? 變量單元直接存放數(shù)據(jù) ? 賦值和傳參的方式:傳值,即傳遞副本 ? 比較相等使用關(guān)系運(yùn)算符“==”? 引用數(shù)據(jù)類型 ? 變量單元存放引用即對(duì)象地址,而數(shù)據(jù)(對(duì)象)在另一內(nèi)存區(qū)......

        java基礎(chǔ)習(xí)題

        九、習(xí)題與實(shí)踐(1) 1、編寫程序創(chuàng)建并顯示一個(gè)標(biāo)題為“My Frame”、背景為紅色的Frame。2、編寫一個(gè)程序,其功能為:在窗口上擺放兩個(gè)標(biāo)簽。構(gòu)造第一個(gè)標(biāo)簽時(shí),令其上面的文本信息......

        java的建議

        假設(shè)你是正在開發(fā)和維護(hù)一個(gè)包含2000個(gè)類并使用了很多框架的Java開發(fā)人員。你要如何理解這些代碼?在一個(gè)典型的Java企業(yè)項(xiàng)目小組中,大 部分能夠幫你的高級(jí)工程師看起來(lái)都很忙......

        java基礎(chǔ)知識(shí)部分(合集5篇)

        問題一:List和Set集合有什么區(qū)別? 解析:List和Set是Collection接口的兩個(gè)子接口,也是使用最多的兩種集合類型。程序員應(yīng)該熟悉這兩個(gè)接口的基本特征,能夠更準(zhǔn)確地選擇正確的集合......