




已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
L 課程知識點調(diào)查表(填表說明:在各知識點后的掌握程度欄內(nèi)畫“”即可,掌握程度分為A、B、C三類,其中A為:能夠依據(jù)相關(guān)知識點完成筆試中的填空、判斷、代碼補全及概念簡答等;B為:能夠根據(jù)程序需求運用相關(guān)知識點編寫完整的程序代碼;C為:能夠用語言準確、完整的表述相關(guān)知識點及該知識點的典型應用實例。每個知識點的A、B、C三項均可選。)編號知識點名稱01classpath的設(shè)置及作用類文件搜索路徑。可以設(shè)置為目錄,也可以設(shè)置為.(即當前目錄)作用:告訴java虛擬機到哪去尋找用戶定義的類和第三方提供的類。當設(shè)置了classpath變量之后,JVM會沿著classpath變量中指定的目錄去查找要執(zhí)行的類文件。classpath變量的值可以有多個,值與值之間必須用“;”隔開如何理解GC:垃圾回收機制(garbage collection)回收失去引用的內(nèi)存,程序員不能強制的執(zhí)行垃圾清理,但是可以建議其回收機制,一般情況下都會按照建議進行。因為程序語句不負責建立和釋放內(nèi)存,jvm自動完成。涉及到一個方法Finallize();來進行垃圾整理,在清理垃圾是整理內(nèi)存,不需要我們手動完成。GC之前執(zhí)行內(nèi)存整理的工作的。(一般如果cpu已經(jīng)占用很多,那么不會去啟動釋放程序;如果跟建議的垃圾很一致,但是占用內(nèi)存卻很少,垃圾回收機制)02path的設(shè)置及作用內(nèi)部文件搜索路徑設(shè)置為javac.exe應用程序所在目錄,即.javajdkbin目錄作用:當在命令行窗口中之機運行javac.exe應用程序時,系統(tǒng)首先會在當前目錄(即c:Documents and Settingadmin)下查找這個程序,然后會沿著path變量中設(shè)置的路徑繼續(xù)查找。如果path沒有設(shè)置,會出現(xiàn)“javac不是內(nèi)部或外部命令,也不是可運行的程序或批處理文件”錯誤03JAVA數(shù)據(jù)類型( 包括基本類型和引用類型)8種基本數(shù)據(jù)類型:byte,short,int,long,float,double,char,boolean(分別對應8種基本數(shù)據(jù)類型包裝類,finally,不可被繼承。此外String和StringBuffer類也是finally的。)3種引用數(shù)據(jù)類型:類,接口,數(shù)組04JAVA基本運算符號1、算術(shù)運算符:+,-,*,/,%,+,-2、關(guān)系運算符:,=,&,|,!5、賦值運算符:=,+=,-=,*=,/=,%=6、字符串連接:=7、條件運算符:? ab?x:y(也可按照單目、雙目、三目分類)05JAVA程序基本控制語句(ifelse、switchcase、while、for)Java程序設(shè)計語言的程序流程控制與C/C+基本相同,總共有三種執(zhí)行方式:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。選擇語句即條件語句有兩種:ifelse,switchcase循環(huán)語句:while,dowhile,for(注意while和dowhile區(qū)別,for的三個條件)swtich里支持的數(shù)據(jù)類型有那四種? byte short char int 以及JDK5.0中的枚舉類型06數(shù)組的概念及使用數(shù)組類型屬于復合數(shù)據(jù)類型,它是由類型相同的元素組成的有序數(shù)據(jù)集合。因此數(shù)組的最主要的特點:元素類型相同;元素有序;所有元素公用一個名稱。根據(jù)組織數(shù)據(jù)的結(jié)構(gòu)不同,數(shù)組可以分為一維數(shù)組、二維數(shù)組、。一維數(shù)組聲明:arraytype arrayName;或arraytype arrayName;初始化分為:1、靜態(tài)初始化。如:String str = “aaa”,”bbb”,”ccc”; String str1 = “111”,”222”,”333”; 2、動態(tài)初始化。如:char charName = new char5; 注意:動態(tài)初始化必須給出長度,否則報錯:缺少數(shù)組維數(shù)。二維數(shù)組聲明:arraytype arrayName;或arraytype arrayName;初始化:1、靜態(tài)初始化。2、動態(tài)初始化:可以只指定第一位的長度而不指定第二維的。另外,數(shù)組具有l(wèi)ength屬性。當數(shù)組是引用數(shù)據(jù)類型是,必須為每個元素實例化,否則會出現(xiàn)空指針異常。07方法的聲明及使用聲明:修飾符 返回值類型 方法名 (參數(shù)列表)方法體;在非靜態(tài)方法中可以直接調(diào)用非靜態(tài)方法在非靜態(tài)方法中可以直接調(diào)用靜態(tài)方法在靜態(tài)方法中可以直接調(diào)用靜態(tài)方法在靜態(tài)方法中調(diào)用非靜態(tài)方法,則需要通過對象調(diào)用。08方法的重載方法的重載是多態(tài)的實現(xiàn)手段之一,解決了命名空間問題(在類中實現(xiàn)相同功能的方法)滿足條件:1、方法名相同 2、方法的參數(shù)類型不同或參數(shù)個數(shù)不同或參數(shù)類型順序不同 3、返回值類型可以相同也可以不同09類的定義定義:修飾符 class 類名 成員變量;方法10對象的產(chǎn)生與使用Java語言中使用關(guān)鍵字new調(diào)用構(gòu)造方法來創(chuàng)建新對象。類名 對象名 = new 類名();通過對象調(diào)用方法或修改屬性值。11匿名對象不定義對象的引用名稱,而直接調(diào)用方法。只能一次性使用。好處:節(jié)省空間(GC)如果對一個對象需要進行一次調(diào)用,可以使用匿名對象。常用匿名對象作為一個實參傳給方法調(diào)用,用完之后拋棄。12實現(xiàn)類的封裝性面向?qū)ο蟮奶卣髦唬ǚ庋b、繼承、多態(tài)、抽象是面向?qū)ο蟮乃拇筇卣鳎┓庋b是一種信息隱蔽技術(shù):1、采用接口隱藏類的實現(xiàn)細節(jié)2、在類中對屬性封裝。因為Java中對屬性的操作很弱(例如年齡的問題,可以在set方法中控制),實現(xiàn)程序健壯性。成員變量使用private關(guān)鍵字修飾,提供setter和getter方法進行設(shè)置和返回屬性值。13構(gòu)造方法的定義與使用1、 構(gòu)造方法定義:方法名與類名相同;無返回值類型;方法中不能使用return返回一個值。2、 構(gòu)造方法在實例化對象時自動調(diào)用,主要用來為類中屬性賦值。3、 如果一個類的構(gòu)造方法用private修飾,那么它不能有子類4、 當使用new關(guān)鍵字創(chuàng)建對象時,會調(diào)用構(gòu)造方法。14對象的比較(“=”、“equals()”)“=”是運算符。比較的是值(基本數(shù)據(jù)類型)和引用的地址(引用數(shù)據(jù)類型)Equals()是 Object中的方法、沒有復寫情況下和= 一樣(用來比較兩個對象的hashCode碼(散列碼)即地址)、String類復寫了object類的equals方法,比較的是兩個對象的內(nèi)容String類覆寫equals,首先比較內(nèi)存地址(引用),如果相同,返回真;如果不同,繼續(xù)比較,比較字符串的每個字符,相等返回真,不相等返回假15在類內(nèi)部調(diào)用本類方法靜態(tài)方法中可以直接調(diào)用靜態(tài)方法,但不能直接調(diào)用非靜態(tài)方法,需要通過對象調(diào)用。非靜態(tài)方法中可以直接調(diào)用,或使用this關(guān)鍵字調(diào)用。16this關(guān)鍵字的使用用于區(qū)別成員變量和局部變量;1、 調(diào)用本類中的方法:a、一般方法 this.方法名(實參列表)b、構(gòu)造方法 this(實參列表),位于構(gòu)造方法首行2、 調(diào)用本類重的屬性(this.屬性名)3、 可以用來表示當前對象4、 不能與super關(guān)鍵字同時出現(xiàn)在構(gòu)造方法中5、 不能用在static修飾的方法或代碼塊中17構(gòu)造方法的重載規(guī)則與一般方法重載一致。(參見08題)當采用new關(guān)鍵字創(chuàng)建對象時,會自動調(diào)用構(gòu)造方法,主要用來為類中的屬性初始化。每個類中都有一個默認的無參構(gòu)造器,當在類中添加一個有參數(shù)的構(gòu)造方法,則默認的構(gòu)造方法遺失。18對象的引用傳遞在Java中,參數(shù)傳遞分為基本類型參數(shù)傳遞與對象類型(即引用類型)參數(shù)傳遞。基本類型參數(shù)傳遞意味著當將一個實參值傳遞給一個方法時,如果方法修改了該參數(shù),改變的形參,而原始的實參的值保持不變。引用類型變量傳遞將一個參數(shù)傳遞給一個方法后,方法接收的是一個引用變量的值,這個值為某個對象的內(nèi)存地址值。引用變量的參數(shù)傳遞仍然是值傳遞。19static的使用(方法、屬性)可聲明成靜態(tài)變量(全局變量,相對于這個類中的所有實例化對象,只要一個對象改變了它的值,其他對象的所值都改變)靜態(tài)方法(不能直接調(diào)用非靜態(tài)方法,要用對象.方法來調(diào)用;在非靜態(tài)方法中能直接調(diào)用靜態(tài)方法,用類名.方法調(diào)用)靜態(tài)代碼塊(對靜態(tài)成員進行初始化),同一個類中優(yōu)先于主函數(shù)和構(gòu)造方法執(zhí)行。(三者的關(guān)系是:靜態(tài)成員聲明靜態(tài)代碼塊構(gòu)造方法 )靜態(tài)方法的好處:便于調(diào)用,對于Java虛擬機性能更好哪些類中全是靜態(tài)方法:Math,Collections, ArraysCollection和Collections區(qū)別:Collection是一個接口,不通過鍵值對來存放對象,是一一存入的,其下有很對子接口來繼承,常用的有set,list. set不能存放重復對象,list可以;set決定存放位置,list可以手動。存放的方法是用ADD();取值用iterator?。ㄍ粚ο蟮膆ashcode相同。不同對象的hashcode也會相同,反例就是:String s=”abc” String s1=new String(“abc”); s與s1的hashcode一樣)collections是一個類,內(nèi)部全是靜態(tài)方法。用來處理集合對象,可以將處理好的對象存放到另一個類中20對象數(shù)組的使用(靜態(tài)初始化、動態(tài)初始化)1、 聲明及靜態(tài)初始化:Person ps = Person p1,p2,p3 ; /p1,p2,p3分別為Person的對象2、聲明及動態(tài)初始化Person p;/對象數(shù)組聲明p=new 類名3;/動態(tài)初始化ps0=new Person();/分別對每個元素初始化=”zhangsan”;ps0.age=13;21類的繼承通過繼承可以簡化類的定義,擴展類的功能。extends java只支持單繼承。繼承是“is a”的關(guān)系。子類繼承父類中非private屬性和方法。子類對象實例化時默認調(diào)用父類無參構(gòu)造方法(子類構(gòu)造方法首行)。22子類對象的實例化過程當采用new關(guān)鍵字實例化子類對象時,首先會默認調(diào)用父類無參構(gòu)造方法,接著調(diào)用子類構(gòu)造方法。23方法的覆寫作用:擴展父類方法的功能。1、 只有發(fā)生在子類和父類之間2、 子類方法和父類的方法名、參數(shù)、返回值類型都必須一致。3、 要求子類方法的訪問權(quán)限不能小于父類的訪問權(quán)限。4、 子類實例化父類對象,子類調(diào)用父類的方法時,會默認調(diào)用子類中覆寫父類的那個方法5、 子類繼承父類的方法,訪問權(quán)限只能擴大不能縮小,可用public,protected,或default,其中protected和default的區(qū)別就是后者必須在同一個包里。private的使用的好處,代碼隱藏,安全;對賦值的限制。如果只是在本類中使用,不想外界得到,只要寫SET方法就可以,不寫GET方法(對賦值限制的體現(xiàn))。public,protected,default,private的區(qū)別(1)public:是公用的,不同包也可訪問(2)protected;doGet()和doPost()就是protected的,是在不同包內(nèi)的,但繼承了不是同一個包的方法,子類是能訪問的(3)default(默認的);只是在同一個包內(nèi)才可以被訪問。(4 private;只有在本內(nèi)中才可訪問24super的使用super調(diào)用父類的屬性:super.屬性名;super調(diào)用父類的方法:super.方法名(實參列表);調(diào)用父類中特定構(gòu)造方法:super(實參列表);調(diào)用父類中構(gòu)造方法時,super()必須放在子類構(gòu)造方法的首行。this和super不能同時調(diào)用構(gòu)造方法。用super調(diào)用父類中的方法時,會調(diào)用子類中被覆寫了的方法。如果子類中沒有覆寫父類中的方法,仍能用super調(diào)用父類中的方法Ps:一個類的構(gòu)造方法如果用private修飾,那么它不能有子類。25this與super的區(qū)別this用于調(diào)用本類的屬性和方法,或代表當前對象。super用于調(diào)用父類的屬性和方法。兩者不能同時調(diào)用構(gòu)造方法。26final關(guān)鍵字修飾符??梢孕揎椬兞?、方法、類。final修飾的變量為常量,只能被賦值一次final修飾的方法不能被復寫final修飾的類不能被繼承(構(gòu)造方法不能被復寫)String,Maths都是用final修飾的類。27抽象類的使用抽象類用abstract關(guān)鍵字修飾。抽象類僅提夠一個類的部分實現(xiàn)。抽象類可以有實例變量,可以同時有抽象方法和具體方法,它提供一個繼承的出發(fā)點,不能呢個被實例化。因此,抽象類只能用來繼承。不能被直接實例化抽象類的子類,要么是抽象類,要么實現(xiàn)抽象父類的所有抽象方法(復寫)抽象類可以有構(gòu)造方法。28接口的使用接口是常量和抽象方法的集合。接口中不能有普通方法和變量。常量必須被賦值。接口可以實現(xiàn)多繼承(即接口可以繼承一個到多個接口,但不能繼承類)一個類可以實現(xiàn)多個接口接口不能有構(gòu)造方法extends和implements同時出現(xiàn),extends寫在implements前面抽象類可以實現(xiàn)接口,并且不必實現(xiàn)接口中的所有抽象方法。Ps:抽象類和接口的區(qū)別抽象類和接口是Java面向?qū)ο篌w系當中非常重要的兩個元素,在語法和使用方面都有很多的區(qū)別,下面我就從這兩個方面來回答這個問題:第一, 接口和抽象類在語法上的區(qū)別主要體現(xiàn)在以下的幾個方面:a) 一個類可以實現(xiàn)多個接口,而除了Object之外,一個類只能繼承一個父類;b) 接口當中所有的方法都是抽象方法,并且默認為public權(quán)限,而抽象類當中可以有抽象方法,也可以沒有抽象方法c) 接口當中的變量全部為全局常量,而抽象類當中可以定義任何類型的變量;d) 抽象類當中有構(gòu)造函數(shù),而接口沒有;第二, 在使用方面,接口使用的會更多一些,因為接口可以更好的隱藏實現(xiàn)的細節(jié),降低系統(tǒng)的耦合度,從而提高可擴展性,下面就談一下我在開發(fā)中所理解的抽象類和接口的區(qū)別:a) 在我經(jīng)常使用的設(shè)計模式當中,如工廠模式,依賴諸如模式,DAO模式等,主要使用的是接口,而抽象類只在模板模式當中有一些比較局限的應用;b) 在我經(jīng)常使用的Spring和Hibernate當中,接口的使用也占了很大的比例,特別是在Spring當中,模板模式也被改造成使用接口實現(xiàn);所以說在日常的開發(fā)當中,接口的使用更加的頻繁,因為它能夠更好的解除耦合,現(xiàn)在的面向?qū)ο笠蔡岢儆美^承,使用面向接口的編程方法會更好。29對象的多態(tài)性,向上轉(zhuǎn)型及向下轉(zhuǎn)型的概念對象的多態(tài)性表現(xiàn)為轉(zhuǎn)型(即向上轉(zhuǎn)型和向下轉(zhuǎn)型)及方法的重載和復寫。1、轉(zhuǎn)型:要求兩個轉(zhuǎn)型的對象有繼承或?qū)崿F(xiàn)關(guān)系。向上轉(zhuǎn)型:子類對象轉(zhuǎn)換成父類對象,自動轉(zhuǎn)換。 父類對象用子類實例化。 轉(zhuǎn)型后的對象不能調(diào)用子類對象特有的方法。但調(diào)用的方法為子類自身的方法。向下轉(zhuǎn)型:父類對象轉(zhuǎn)換成子類對象,需要強制轉(zhuǎn)換。 只有發(fā)生過向上轉(zhuǎn)型,才能發(fā)生向下轉(zhuǎn)型。使用什么方法時,需要使用向下轉(zhuǎn)型:getAttribute();arraylist 和 hashmap等任何connection對象里的get()方法;過濾器里的方法2、方法的重載是多態(tài)的實現(xiàn)手段之一,解決了命名空間問題(在類中實現(xiàn)相同功能的方法)滿足條件:A、方法名相同 B、方法的參數(shù)類型不同或參數(shù)個數(shù)不同或參數(shù)類型順序不同 C、返回值類型可以相同也可以不同3、方法的覆寫,作用:擴展父類方法的功能A、只有發(fā)生在子類和父類之間B、子類方法和父類的名稱、參數(shù)、返回值類型都必須一致。C、要求子類方法的訪問權(quán)限不能小于父類的訪問權(quán)限。轉(zhuǎn)型時,會容易發(fā)生classCastException錯誤。為什么要設(shè)計向上轉(zhuǎn)型:ArrayList是一個類,可以方其他的很多類型的對象,如稱arr,但在開發(fā)時只放一個單一的類型,相當于重新分配空間。否則取的時候很麻煩。存放時的用add()方法,放的是Object類型的對象,即只要屬于引用對象就能放入。如放入一個字符串,在放入arr.add()那一刻,發(fā)生了向上轉(zhuǎn)型,好處是實現(xiàn)更多類型的兼容,對象的具體特征丟失,即精度丟失。要從多種類型中取出具體的對象類型,即找回精度,就要發(fā)生向下轉(zhuǎn)型。30對象多態(tài)性在抽象類及接口上的應用面向接口編程的優(yōu)點:1、調(diào)用者不用知道其使用對象的具體所屬類 2、一個對象可以很容易被另一個對象(同樣實現(xiàn)了接口)所替換 3、對象間的連接不必硬綁定到一個類的對象上,因此增加了靈活性 4、松耦合性 5、提高可擴展性缺點:設(shè)計復雜性有所增加工廠模式是面向接口編程的一個典型應用。工廠模式是OCP(開放封閉法則)的一種解決方案工廠模式原理: 1、采用面向接口編程的設(shè)計思想2、降低系統(tǒng)的耦合度3、提高程序的可擴展性組成部分: 1、產(chǎn)品(抽象產(chǎn)品),用接口或抽象類實現(xiàn) 2、具體產(chǎn)品,是抽象類(產(chǎn)品)的子類或?qū)崿F(xiàn)了接口(產(chǎn)品)的類 3、生產(chǎn)者(工廠),負責生成產(chǎn)品對象應用產(chǎn)品:需求改變時只需要改變工廠,得到不同的產(chǎn)品實例。31異常的概念及使用異常是程序中斷錯誤中斷了正常指令流的一種事件。通過異常處理機制,可以用一種結(jié)構(gòu)化的可控方式來處理運行時的錯誤。在Java中所有的異常都用類來表示,并且所有的異常類都是繼承自java.lang包中的Throwable類。Throwable類有兩個直接子類:Error(用來表示編譯和運行錯誤,如程序進入死循環(huán),內(nèi)存溢出等,Error處理一般由系統(tǒng)承擔,java本身不提供相應的Error處理機制)和Exception(用來表示由程序活動所導致的錯誤,如運算時除數(shù)為零等。當程序運行出現(xiàn)Exception時,在程序中加入異常處理代碼,仍可使程序繼續(xù)運行直至程序結(jié)束。由于Exception是可以檢測和處理的,因此產(chǎn)生了相應的異常處理機制)。java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。異常(即exception和error,兩者是平級的,且都是繼承自throwable)(代碼有錯不能輕易捕捉異常,否則容易存在一直存著NULL值的問題,例如:表單中有一控件名為name1(用戶名,應該是name,寫錯成name1),但servlet取的name值,則name的值為null,會報空指針異常的錯誤,若此時用異常捕捉,雖然不報錯,但數(shù)據(jù)庫里卻插入的數(shù)據(jù),且用戶名的值都是null)常見運行時異常:算數(shù)運算異常,空指針,數(shù)組下標越界,數(shù)字格式化異常,類轉(zhuǎn)換異常常見異常:IO異常(必須捕捉和拋出),SQLException , ServletException, ClassNotFoundExceptiom異常的使用:1、捕獲異常:trycatch()2、拋出異常:在捕獲一個異常對象之前,try代碼塊中必須生成一個異常對象并把它拋出。異常既可以由java虛擬機自動拋出,也可以通過throw語句手動拋出異常。(throw語句必須為異常創(chuàng)建一個對象,不能僅拋出一個類型。)3、異常聲明:在某些情況下,如果一個方法產(chǎn)生自己不處理的異常,它就必須在throws字句中聲明該異常,它屬于方法聲明的一部分,緊跟在形參列表之后。4、自定義異常:繼承自Exception類。不推薦使用。32Java類的編寫規(guī)范1、 名字必須為一個標識符2、 類名或接口名首字母大寫,其余每個單詞的首字母大寫3、 方法名的首字母小寫,其余單詞的首字母大寫,方法名盡量用動詞。如:getName4、 變量名與方法名一致,變量名盡量用名詞, 5、 臨時變量簡單即可6、 盡可能采用有意義的單詞7、 包名小寫33trycatch語句的使用try代碼塊中是一段可能產(chǎn)生異常的代碼,又稱“監(jiān)控區(qū)域”;catch語句的參數(shù)包括一個異常類型和一個異常對象。該異常類型指明了catch語句所處理的異常類型,異常對象則在try中產(chǎn)生。中為對異常的處理。與一個try相關(guān)的catch語句可以有一個或多個,異常的類型決定了要執(zhí)行那個catch語句。執(zhí)行順序:1、首先執(zhí)行try代碼塊中的所有語句2、 如果try中無異常產(chǎn)生,不執(zhí)行catch(),直接執(zhí)行catch之后的語句3、 如果try中有異常產(chǎn)生,則發(fā)生異常之后的語句不會被執(zhí)行,直接跳到catch()中執(zhí)行。之后順序執(zhí)行。4、 如果catch()中的異常類型與產(chǎn)生的不同,則執(zhí)行順序與未捕獲異常一樣。34throws與throw 的使用方法throws用在方法的聲明處,表示此方法不處理該類異常,而是交給方法的調(diào)用處處理。throw用在方法的內(nèi)部,用來手動的拋出異常對象。要么與trycatch一起使用,要么與throws一起使用。35finally關(guān)鍵字對于一些代碼,可能會希望無論try中的異常是否被拋出,它們都能得到執(zhí)行??梢栽诋惓L幚沓绦蚝蠹由蟜inally子句。那么退出trycatch后,無論發(fā)生異常或者不發(fā)生異常,都會執(zhí)行該段代碼。finally必須用在異常中,不能孤立的使用,至少必須有TRY語句(但只有try,沒有catch和finally會報錯,即try,catch和finally都不能單獨使用;一個try可以有多個catch;try沒有catch也行,但必須要有finally;不管之前是否拋出異常,都會執(zhí)行finally;現(xiàn)在try中加一個return語句 ,但finally仍然會執(zhí)行,且先執(zhí)行finally再執(zhí)行return;finally的作用是關(guān)閉資源),finalize()是在GC清理垃圾前做的整理工作,是一個方法final是修飾符39List、ArrayList的使用List接口繼承自Collection接口,以定義一個允許重復項的有序集合。此接口不但能夠?qū)α斜淼囊徊糠诌M行處理,還添加了面向位置的操作。List有兩個重要的實現(xiàn)類,分別為:ArrayList和LinkedList。使用哪種取決于特定的需求,如果要支持隨機訪問,而不必在除尾部的任何位置插入或刪除元素,那么可以選用ArrayList;如貴哦要頻繁的從列表的中間位置添加和刪除元素,并且只要求順序的訪問列表元素,那么LinkedList是更好的選擇。LinkedList類添加了一些處理列表兩端元素的方法,可以輕松的把LinkedList當作一個堆棧、隊列或其他面向端點的數(shù)據(jù)結(jié)構(gòu),來實現(xiàn)堆棧或隊列的操作。ArrayList類封裝了一個動態(tài)再分配的Object數(shù)組。每個ArrayList對象有一個數(shù)值,這個數(shù)值用來表示存儲列表中元素的數(shù)組的容量。當元素添加到ArrayList時,這個數(shù)值會在常量時間內(nèi)自動增加。ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行前向或后向遍歷,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可,所以插入速度較快。Arraylist的使用將A,B,C存入arraylist,并取出Arraylist str = new Arraylist();str.add(A); str.add(B); str.add(C); 遍歷取出:for(int i = 0;istr.size();i+) str.get(i);或者str.get(0);str.get(1);str.get(2);Arraylist作用是便于傳對象,且該對象可以存放別的類型的對象,什么時候涉及到,什么時候傳遞多個對象的時候使用,此時才能發(fā)揮他的價值40Map、HashMap的使用Map接口不是Collection接口的繼承。Map接口用于維護鍵-值對。該接口描述了從不重復的鍵到值的映射。(注意:鍵和值都可以為null,但是不能把Map作為一個鍵或值添加給自身,因為映射中鍵的集合必須是唯一的,用Set來支持)。集合框架中提狗狗兩種常規(guī)的Map實現(xiàn):HashMap和TreeMap(TreeMap實現(xiàn)SortedMap接口)。在Map中插入、刪除和定位元素,HashMap是最佳選擇。而如果要按自然順序或自定義順序遍歷鍵,那么TressMap更好。HashMap與HashTable區(qū)別:HashMap是HashTable的輕量級實現(xiàn)(非線程安全的實現(xiàn)),他們都完成了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于Hashtable。HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。HashMap把HashTable的contains方法去掉了,改成containsValue和containsKey。因為contains方法容易讓人引起誤解。 Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現(xiàn)。最大的不同是,HashTable的方法是Synchronize的,而HashMap不是,在多個線程訪問HashTable時,不需要自己為它的方法實現(xiàn)同步,而HashMap 就必須為之提供外同步。 HashTable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。41Set、TreeSet、HashSetSet接口繼承自Collection接口,而且它不允許集合中存在重復項,每個具體的Set實現(xiàn)類依賴添加對象的equals()方法來檢查唯一性。Set沒有引入新方法,所以Set就是一個Collection,只不過其行為不同。TreeSet和HashSet是集合框架支持Set接口兩種普通的實現(xiàn)。多數(shù)情況下,使用HashSet存儲重復自由的容器。HashSet是為快速查找而設(shè)計的Set,存入HashSet的對象必須定義hashCode()。TreeSet是保持次序的Set,底層為樹結(jié)構(gòu),使用它可以從Set中提取有序的序列。42Iterator的使用Iterator可以遍歷各種不同集合中的元素。該接口描述的是以統(tǒng)一方式對各種集合元素進行遍歷/迭代的工具,又稱迭代器。該接口中值定義了幾個簡單的方法:hasNext()用于判斷集合中是否仍有元素可以迭代,next()用于返回迭代的下一個元素,remove()將當前迭代到的元素從迭代器指向的集合中移除。我們一般不直接創(chuàng)建Iterator對象,而是通過調(diào)用集合對象的iterator()方法來獲取,實際返回的是Iterator接口不同實現(xiàn)類的對象。43String與StringBuffer的區(qū)別及使用String類和StringBuffer類都可以實現(xiàn)儲存和操作字符串,即包含多個字符的字符數(shù)據(jù)。(1) String是由final修飾的,不能被繼承. String 是不可改變的類,如String a=”b”; String a=”c”;這兩個a是不同的 ,是2個對象,a=”c”時,是又重新定義了一個對象。String a=new String(”b”);有2個對象,都是在堆內(nèi)存里的;而棧內(nèi)存里存的是a(2) StringBuffer(為了解決創(chuàng)建對象耗時的問題),它是可變的,其有一個方法,append的方法。append的方法,使用的時候?qū)tringBuffer a=new StringBuffer();a.append(“abc”);a.append(“efg”);最后用a.toString();就可得到一個字符串,將StringBuffer變成String來使用。有另一個方法StringBuilder(),是一個不安全的方法,實現(xiàn)起來,不安全的執(zhí)行速度快。-StringBuffer類表示的是內(nèi)容可以修改的Unicode編碼字符序列,其對象創(chuàng)建后,所保存的字符串內(nèi)容和長度都可以修改。實際上每個StringBuffer對象都擁有一個可變?nèi)萘康淖址彌_區(qū),該緩沖區(qū)的容量可以隨著內(nèi)容的增加自動擴充,也可以直接設(shè)定。-StringBuilder是JDK5.0后增加的一個字符串處理類,該類能夠提夠與StringBuffer相同的功能。區(qū)別在于StringBuffer是線程安全的,而StringBuilder不是,即不保證其對象的同步性。因此,StringBuilder擁有更高的效率。常見的類:1. Sting;2. ArrayList; 3. HashMap;4. HttpServlet(抽象類);5 .Math;6. Date;7. StringBuffer; 8.ExceptionString里的常用方法:1.Equals();2、charAt();3.length();(List里的length是屬性,而String里的是方法,又括號的)4.substring();5.indexOf(int ch);6.trim();7.replace();(在javaScript里只替換一個);8.replaceAll();(在javaScript里就是替換多個);9.valueOf();(把各種基本數(shù)據(jù)類型轉(zhuǎn)化為String型)Srtring a=;和String b;的區(qū)別:String a=是空字符串,可以調(diào)用String類的任何方法,而Stirng b;是null,值,并沒有給他開辟任何空間。Clone:把一個對象復制給一個對象,如:在百度收信息,需要記錄用戶每次查詢的關(guān)鍵字,先是存內(nèi)存(把關(guān)鍵字放入Static ArrayList內(nèi),他是,具有共享性,用Static來修飾,可以每次用戶來輸入關(guān)鍵字時,就不用每次都要new新的ArrayList而是直接共享),再入庫()44Date、Calendar的使用45多線程 兩種實現(xiàn)方式 場景 涉及的術(shù)語1、實現(xiàn)方法:繼承Thread類或?qū)崿F(xiàn)Runnable接口。區(qū)別:a、Runnable是Thread的接口,多數(shù)情況下推薦使用繼承接口的方式生成線程。因為接口可以實現(xiàn)多線程,而且Runnable只有一個run()方法,適合繼承。b、在繼承Thread時只需new一個實例,調(diào)用start()方法即可以啟動一個線程;而在使用Runnble的時候需要先new一個實現(xiàn)Runnable的實例,之后用子類Thread調(diào)用。2、線程狀態(tài)轉(zhuǎn)換:新建態(tài)(new();),就緒態(tài)(start();),運行態(tài),阻塞態(tài),終止態(tài)。3、線程調(diào)度:Java線程的調(diào)度不一定是分時的,必須確保代碼中的線程會不是地給其它線程運行的機會。以下方法可以做到:A、讓處于運行狀態(tài)的線程調(diào)sleep()方法 線程睡眠; B、讓處于運行狀態(tài)的線程調(diào)用yeild()方法 線程讓步; C、讓處于運行狀態(tài)的線程調(diào)用另一個線程的join()方法(非靜態(tài)) 當一個正在運行的線程調(diào)用了另一個線程的join()方法,那么這個正在運行的線程轉(zhuǎn)到阻塞狀態(tài),直至另一個線程運行結(jié)束才會恢復運行。sleep()和yield()的區(qū)別:A、 sleep()方法會其他線程的運行機會,而不考慮其它線程的優(yōu)先級,而yield()方法智慧給相同優(yōu)先級或更高優(yōu)先級的線程運行機會。B、 當線程執(zhí)行sleep()方法會轉(zhuǎn)到阻塞狀態(tài),而執(zhí)行yield()方法會轉(zhuǎn)到可運行狀態(tài)(就緒狀態(tài))C、 Sleep()聲明會拋出異常,而yield()方法不會D、 Sleep()比yield()方法具有更好的移植性,因為yield()方法的實現(xiàn)依賴于底層操作系統(tǒng)對線程的調(diào)度策略。5、 線程同步(Thread Synchronization)通過synchronized關(guān)鍵字實現(xiàn)。線程同步的特點:a、一把鎖可以鎖住多個同步代碼塊; b、鎖對非同步代碼塊無效; c、當一個線程進入同步代碼塊,并不意味著指定代碼必須不以中斷的方式運行; d、當一個線程占有了某個對象的鎖,其它需要獲得這個鎖的線程就進入到鎖池中,等待獲得鎖的機會。6、線程的通信:wait()和notify()/notifyAll()7、死鎖:當一個線程等待由另一個線程持有的鎖,而后者正在等待已被第一個線程持有的鎖時,就會發(fā)生死鎖(必須手動結(jié)束)。46I/O 基本讀寫文本文件操作FileInputStream和FileoutStreampublic void read()FileInputStream in;try in = new FileInputStream(E:ss.txt);int data;while(data = in.read() != -1)System.out.println(data + abc); catch (FileNotFoundException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();public void write()try FileOutputStream fo = new FileOutputStream(e:asd.txt);fo.write(你好.getBytes();fo.close(); catch (FileNotFoundException)e.printStackTrace(); catch (IOException e) e.printStackTrace();字節(jié)流:InputStream、OutputStream字符流:Reader、Writer通過InputStreamReader和OutputStreamWriter可以將字節(jié)流轉(zhuǎn)換成字符流。01簡述HTML文件的基本結(jié)構(gòu)。標題部分BODY之間則為主要語法所在,也是網(wǎng)頁的主要呈現(xiàn)部分。02簡述標簽的使用方法。一份表單的基本架構(gòu)是:在 標記 的包圍下加上一種或以上的表單輸入方式及一個或以上的按鍵。 INPUT 的種類: Text, Radio,Checkbox, Password, Submit/Reset, Image, File, Hidden, Button。 的參數(shù)設(shè)定(常用): 例如: 03簡述標簽的使用方法。 的參數(shù)設(shè)定(常用): 例如: 04簡述以及標簽的使用方法。注意:使用了就不能再有 稱框架標記,用以宣告HTML文件為框架模式,并設(shè)定視窗如何分割。則只是設(shè)定某一個框窗內(nèi)的參數(shù)屬性。 參數(shù)設(shè)定: 例子: 參數(shù)設(shè)定: 例子:jsp支持哪些技術(shù)?(JSP可以嵌入的技術(shù))JSP程序是服務器端的程序,可以支持以下的5種技術(shù)。JSP執(zhí)行的時候首先被容器裝載,根將其根據(jù)規(guī)范解析成servlet的類文件,編譯運行輸出。優(yōu)點:便于開發(fā),便于設(shè)計,便于顯示(1)html(2)JavaScript(3)CSS(4)Java代碼(根據(jù)規(guī)范,必須寫在內(nèi),最后根據(jù)規(guī)范,解析翻譯出來,推向支持)(5)標簽和指令(根據(jù)規(guī)范,必須寫在,如,內(nèi),最后根據(jù)規(guī)范,解析翻譯出來,推向支持)05簡述你對web應用程序的理解?;贐/S(Brower/Servlet)不需要安裝客戶端,瘦客戶端/胖服務器端WEB應用程序是基于B/S結(jié)構(gòu)的,是基于瀏覽器/服務器的模式B/S結(jié)構(gòu)和C/S結(jié)構(gòu)的區(qū)別:Client server是建立在局域網(wǎng)的基礎(chǔ)上的.Browser server是建立在廣域網(wǎng)的基礎(chǔ)上的. 1硬件環(huán)境不同: C/S 一般建立在專用的網(wǎng)絡(luò)上, 小范圍里的網(wǎng)絡(luò)環(huán)境, 局域網(wǎng)之間再通過專門服務器提供連接和數(shù)據(jù)交換服務. B/S 建立在廣域網(wǎng)之上的, 不必是專門的網(wǎng)絡(luò)硬件環(huán)境,例與電話上網(wǎng), 租用設(shè)備. 信息自己管理. 有比C/S更強的適應范圍, 一般只要有操作系統(tǒng)和瀏覽器就行 2對安全要求不同 C/S 一般面向相對固定的用戶群, 對信息安全的控制能力很強. 一般高度機密的信息系統(tǒng)采用C/S 結(jié)構(gòu)適宜. 可以通過B/S發(fā)布部分可公開信息. B/S 建立在廣域網(wǎng)之上, 對安全的控制能力相對弱, 面向是不可知的用戶群. 3對程序架構(gòu)不同 C/S 程序可以更加注重流程, 可以對權(quán)限多層次校驗, 對系統(tǒng)運行速度可以較少考慮. B/S 對安全以及訪問速度的多重的考慮, 建立在需要更加優(yōu)化的基礎(chǔ)之上. 比C/S有更高的要求 B/S結(jié)構(gòu)的程序架構(gòu)是發(fā)展的趨勢, 從MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持網(wǎng)絡(luò)的構(gòu)件搭建的系統(tǒng). SUN 和IBM推的JavaBean 構(gòu)件技術(shù)等,使 B/S更加成熟. 4軟件重用不同 C/S 程序可以不可避免的整體性考慮, 構(gòu)件的重用性不如在B/S要求下的構(gòu)件的重用性好. B/S 對的多重結(jié)構(gòu),要求構(gòu)件相對獨立的功能. 能夠相對較好的重用.5系統(tǒng)維護不同 系統(tǒng)維護是軟件生存周期中,開銷大, -重要 C/S 程序由于整體性, 必須整體考察, 處理出現(xiàn)的問題以及系統(tǒng)升級. 升級難. 可能是再做一個全新的系統(tǒng) B/S 構(gòu)件組成,方面構(gòu)件個別的更換,實現(xiàn)系統(tǒng)的無縫升級. 系統(tǒng)維護開銷減到最小.用戶從網(wǎng)上自己下載安裝就可以實現(xiàn)升級. 6處理問題不同 C/S 程序可以處理用戶面固定, 并且在相同區(qū)域, 安全要求高需求, 與操作系統(tǒng)相關(guān). 應該都是相同的系統(tǒng) B/S 建立在廣域網(wǎng)上, 面向不同的用戶群, 分散地域, 這是C/S無法作到的. 與操作系統(tǒng)平臺關(guān)系最小. 7用戶接口不同 C/S 多是建立的Window平臺上,表現(xiàn)方法有限,對程序員普遍要求較高 B/S 建立在瀏覽器上, 有更加豐富和生動的表現(xiàn)方式與用戶交流. 并且大部分難度減低,減低開發(fā)成本. 8信息流不同 C/S 程序一般是典型的中央集權(quán)的機械式處理, 交互性相對低 B/S 信息流向可變化, B-B B-C B-G等信息、流向的變化, 更象交易中心06簡述在tomcat服務器中發(fā)布一個web應用程序的方法(1)在webapps下創(chuàng)建(2)使用工具,eclipse(3)在conf/catalina/localhost下有一個xml文件,加入 存放的項目必須符合(4)tomcat-conf-server.xml的標簽里加入 項目結(jié)構(gòu)要求tomcat的端口是8080,修改端口的文件是:在tomcat-conf-service.xml-修改,如改成80,80是默認的里面的是和apache打
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB23-T2968-2021-大棚中果型西瓜栽培技術(shù)規(guī)程-黑龍江省
- DB23-T2946-2021-櫻花育苗技術(shù)規(guī)程-黑龍江省
- 宿州小區(qū)門崗管理制度
- 培訓機構(gòu)用工管理制度
- 農(nóng)場水管清理方案(3篇)
- 乙炔氣柜檢修方案(3篇)
- 貿(mào)易企業(yè)審計方案(3篇)
- 密閉容器管道管理制度
- 初中教育機構(gòu)管理制度
- 裝修工人團建方案(3篇)
- 婦女保健AI輔助診斷系統(tǒng)行業(yè)跨境出海戰(zhàn)略研究報告
- 浙江首考2025年1月普通高等學校招生全國統(tǒng)考化學試題及答案
- 軟件項目應急措施及方案
- 2025年上海申能集團有限公司招聘筆試參考題庫含答案解析
- 2024年股權(quán)轉(zhuǎn)讓合作備忘錄
- 《教育研究方法》課件
- 大學《大學生安全教育·》各章節(jié)測試題與答案
- TSZUAVIA 001-2021 低慢小無人機探測反制系統(tǒng)要求
- 糖尿病管理制度
- 2025年中國五礦招聘筆試參考題庫含答案解析
- 公路養(yǎng)護汛期巡查計劃表
評論
0/150
提交評論