版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java2013一.Java基礎(chǔ)部 2、Java有沒有 5、switch語句能否作用在byte上,能否作用在long上,能否作用在String上 6、shorts1=1;s1=s1+1;有什么錯?shorts1=1;s1+=1;有什么錯 828等於幾 10、使用final關(guān)鍵字修飾一個變量時,是不能變,還是的對象不能變 14、Integer與int的區(qū) 18、Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?219、構(gòu)造器Constructor是否可被override? 20、接口是否可繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類是否可繼承具體類(concreteclass)?抽象類中是否可以有靜態(tài)的main方法? 24 class和interface有什么區(qū)別 25 26、什么是內(nèi)部類?StaticNestedClass和InnerClass的不同 28、AnonymousInnerClass(內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實現(xiàn))interface(接 31、Strings="o";s=s+"world!";這兩行代碼執(zhí)行后,原始的String對象中的內(nèi)容到底變了沒有 33、Strings=newString("xyz");創(chuàng)建了幾個StringObject?二者之間有什么區(qū)別?234、String和StringBuffer的區(qū) return前還是后 40、final,finally,finalize的區(qū)別 42、error和exception有什么區(qū)別 44、請寫出你最常見到的5個runtimeexception 47、sleep()和wait()有什么區(qū)別 49.下面兩個方法同步嗎?(自己發(fā)明 54、簡述synchronized和java.util.concurrent.locks.Lock的異同 循環(huán)50次,請寫出程序。 60、HashMap和Hashtable的區(qū) 61、List和Map區(qū)別 62、List,Set,Map是否繼承自Collection接口 64、說出ArrayList,Vector,LinkedList的性能和特 66、Collection和Collections的區(qū)別 67、Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢?是用==還是equals()?它們有何區(qū)別 是使用的子類的compareTo方法,還是拋異常! 74、什么是java序列化,如何實現(xiàn)java序列化?或者請解釋Serializable接口的作用。275、描述一下JVM加載class文件的原理機制? 76、heap和stack有什么區(qū)別 77、GC是什么?為什么要有 83.Java代碼查 二.算法與編 1、編寫一個程序,將a.txt文件中的單詞與b.txt文件中的單詞交替合并到c.txt文件中,a.txt文件中的單詞用回車符分隔,b.txt文件中用回車或空格進行分隔。 下的所有.java文件到 ABC,4,AB,DEF,6,ABC, 4、有一個字符串,其中包含中文字符、英文字符和數(shù)字字符,請統(tǒng)計和打印出各個字符的個數(shù)。 6、從類似如下的文本文件中出所有的,并打印出重復(fù)的和重復(fù)的次數(shù),并按重復(fù)次數(shù)排序:7、寫一個Singleton出來 (¥101)->( 三.html&JavaScript&ajax部 用table顯示n條記錄,每3行換一次顏色,即1,2,3用紅色字體,4,5,6用綠色字體,7,8,9用紅顏色 3、HTML的form提交之前如何驗證數(shù)值文本框的內(nèi)容全部為數(shù)字?否則的話提示用戶并終止提交 4、請寫出用于校驗HTML文本框中輸入的內(nèi)容全部為數(shù)字的javascript代 5、說說你用過那些ajax技術(shù)和框架,說說它們的區(qū) 四.Javaweb部 2、HTTP請求的GET與POST方式的區(qū) 5、Servlet的基本架 6、SERVLETAPI中forward()與redirect()的區(qū)別 9、forward和redirect的區(qū) 10、request.getAttribute()和request.getParameter()有何區(qū)別 jsp有哪些內(nèi)置對象?作用分別是什么?分別有什么方法 13、JSP的常用指 14.JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別 19、我們在web應(yīng)用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個某種編碼的字符 20.現(xiàn)在輸入n個數(shù)字,以逗號,分開;然后可選擇升或者降序排序;按提交鍵就在另一頁面顯示按什么排序,結(jié)果為,提供reset 五.數(shù)據(jù)庫部 6、union和unionall有什么不同 分頁語 用一條SQL語句查詢出每門課都大于80分的學生 20.xxx公司的sql面 21、Jdbc驅(qū)動程序的三種方 22、用JDBC如何調(diào)用過 23、JDBC中的PreparedStatement相比Statement的好 24.寫一個用jdbc連接并oracle數(shù)據(jù)的程序代 27、用JDBC查詢學生成績單,把主要代碼寫出來(考試概率極大 30、為什么要用ORM?和JDBC有何不一樣 六.XML部 3、用jdom解析xml文件時如何解決中文問題?如何解析 4、編程用JAVA解析XML的方 5、XML文檔定義有幾種形式?它們之間有何本質(zhì)區(qū)別?解析XML文檔有哪幾種方式 七.流行的框架與新技 1、談?wù)勀銓truts的理解 2、談?wù)勀銓ibernate的理解 3、AOP的作用 4、你對Spring的理解 5、談?wù)凷truts中的Actionservlet 6、Struts優(yōu)缺點優(yōu)點:1.MVC模式,結(jié)構(gòu)清晰,使開發(fā)者只關(guān)注業(yè)務(wù)邏輯的實現(xiàn).7、STRUTS的應(yīng)用(如STRUTS架構(gòu) 8、說說struts1與struts2的區(qū)別 10、簡述Hibernate和JDBC的優(yōu)缺點?如何書寫一個onetomany配置文 9、hibernate的inverse屬性的作用 13、在DAO中如何體現(xiàn)DAO設(shè)計模式 決 介紹一下Hibernate的二級緩 18Spring的依賴注入是什么意思?給一個Bean的message屬性,字符串類型,注入值為"o"的XML配 19、Jdo是什么 20、什么是spring的 21、STRUTS的工作流程 22、spring與EJB的區(qū)別 八.軟件工程與設(shè)計模 1、UML方 九.j2ee部 1、BS與CS的聯(lián)系與區(qū)別 2、應(yīng)用服務(wù)器與WEBSERVER的區(qū)別 4、J2EE是什么 5、J2EE是技術(shù)還是是框架?什么是 7、如何給weblogic指定大小的內(nèi)存 , )進行jms及ejb或連接池等相關(guān)信息進行, 11、說說weblogic中一個的缺省結(jié)構(gòu)?比如要將一個簡單的oWorld.jsp放入何下,然的在瀏覽器上就可打入http://主機:端//oword.jsp就可以看到運行結(jié)果了?又比如這其中用到了一個自己寫的javaBean該如何辦? 12、在weblogic中發(fā)布ejb需涉及到哪些配置文 13、如何在weblogicsslj2ee(標準)ssl的配置? 十.EBJ部 2、簡要講一下EJB的7個Transaction 5、EJB容器提供的服 6、EJB的激活機 7、EJB的幾種類 十一.webservice部 4、LINUX下線程,GDI類的解釋 5.問得稀里糊涂的 十二.其 2、請把首頁的這一段話用中文翻譯一下 1Java法,io的語法,虛擬機方面的語法??梢杂卸鄠€類,但只能有一個public的類,并且public2、Javajavajava(andtruefalsefalse。false表達式,當str為null時,后面的表達式不會執(zhí)行,所以不會出現(xiàn)NullPointerException如果將&&改為&,則會拋出NullPointerException異常。If(x==33&++y>0)y會增長,If(x==33&&++y>0)不會增長&還可以用作位運算符,當&boolean類型時,&0x0f來與一個整數(shù)進行&4bit位,例如,0x31&0x0f0x01。經(jīng)驗豐富。fbreakfor(int for(intj=0;j<10;j++) System.out.println(“i=”+i+“,j=”+j);if(j==5)breakok;}}intarr[][]=booleanfound=for(inti=0;i<arr.length&&!found;i++){for(intj=0;j<arr[i].length;j++){System.out.println(“i=”+i+“,j=”+j); ==5){found=true;}}}5、switchbytelongString上和String類型都不符合switch的語定,并且不能被隱式轉(zhuǎn)換成int類型,所以,它們不能作用于swtich語句中。6、shorts11;s1s11;有什么錯shorts11;s11;有什么錯shorts1=1;s1=s1+1;s1+1intshortshorts11;s11;+=java語言規(guī)定的運算符,java7、char型變量中能不能存貯一個中文漢字?為什么char型變量是用來Unicode編碼的字符的,unicode編碼字符集中包含了漢字,所以,char型變量中當然可以漢字啦。不過,如果某個特殊的漢字沒有被包含在unicode編碼字符集中,那么,這個char型變量中就不能這個特殊漢字。補充說明:unicode編碼占用兩個字節(jié),所以,char類型的變量也是占用兩個字節(jié)。828等於幾2<<n2n83cpu直接支持的,效率最高,所以,282<<3。9解和理解,我們先以byte類型的整數(shù)為例,它用1個字節(jié)進行,表示的最大數(shù)值范圍為-128到+127。-1在內(nèi)存中對 如果兩個-1相加不考慮Java運算時的類型提升運算后會產(chǎn)生進位二進制結(jié)果為1, 由于進位后超過了byte類型的空間,所以進位部分被舍棄,即最終的結(jié)果為 方式實現(xiàn)了負數(shù)的運算。-128在內(nèi)存中對應(yīng)的二進制數(shù)據(jù)為 ,如果兩個-128相加,不考慮Java運算時的類型提升,運算后會產(chǎn)生進位,二進制結(jié)果為1, ,由于進位后超過了byte類型的空間,所以進位部分被舍棄,即最 ,也就是0,這樣的結(jié)果顯然不是我們期望的,這說明計算機中的算術(shù)運算是會發(fā)生越界情況的,兩個數(shù)值的運算結(jié)果過計算機中的該類型的數(shù)值范圍。由于Java中涉及表達式運算時的類型自動提升,我們無法用byte類型來做演示這種問題和現(xiàn)象的實驗,大家可以用下面一個使用整數(shù)做實驗的例子程序體驗一下:inta=Integer.MAX_VALUE;intb=Integer.MAX_VALUE;intsum=a+b;先不考慮long類型,由于int的正數(shù)范圍為231次方,表示的最大數(shù)值約等于2*1000*1000*1000,也就是20億的publicclassBigInteger{intsign;byte[]publicBiginteger(Stringval){sign=;val=}publicBigIntegeradd(BigInteger}publicBigIntegersubtract(BigIntegerother)}publicBigIntegermultiply(BigInteger}publicBigIntegerdivide(BigInteger}}備注要想寫這個的完整碼是非常雜的如果有的話可參看dk自帶的ava.ah.gIneer類的這也是能力經(jīng)驗專業(yè)性英語水多個面的體現(xiàn)會人留下好的印象在編程力和他方面條差不多的情況,英語除了可使你獲機外薪水可以出一千。finalStringBuffera=newa=newa.append("publicvoid }equals方法是用于比較兩個獨立對象的內(nèi)容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個對象是獨Stringa=newString("foo");Stringb=new以,表達式a.equals(b)true。在實際開發(fā)中,我們經(jīng)常要比較傳遞進行來的字符串內(nèi)容是否等,例如,Stringinput;input.equals(“quit”),許多人住,字符串的比較基本上都是使用equals方法。如果一個類沒有自己定義equalsObject類的equalsObject類的equalsbooleanequals(Objecto){returnthis==o;}equalsequals方法(Object類繼承的)就是使用==操作符,也falseequals方12例如,對于下面的程序,無論創(chuàng)建多少個實例對象,都只分配了一個staticVar變量,并且每創(chuàng)建一個實例對象,instanceVar1次。publicclasspublicstaticintstaticVar=0;publicintinstanceVar=0;publicVariantTest(){}}13staticstaticstaticstaticstaticstaticstatic方法的調(diào)用。14、Integerint的默認值為0Integer的默認nullInteger可以區(qū)分出未賦值和值為0的區(qū)別,int則無法表達出未賦值的情況,0的區(qū)別,則只能使用IntegerJSP開發(fā)中,Integernull,所以0,所以,int不適合作為web層的表單數(shù)據(jù)的類型。OIDinthbmunsaved-value0。另外,Integer提供了多個與整數(shù)相關(guān)的操作方法,例如,將一個字符串轉(zhuǎn)換成整數(shù),Integer中還定義了表示整數(shù)的最?16、下面的代碼有什么不妥之處intx=return17public,private,protected,以及不寫時的區(qū)別說明:如果在修飾的元素上面沒有寫任何修飾符,則表示friendly作用 當前類同一package子孫類其他√√√√√√√×√√××√×××18、OverloadOverride的區(qū)別。Overloaded的方法是否可以改變返回值的類型重載Overload(即參數(shù)個數(shù)或類型不同。重寫Override表示子類中的方法可以與父類中的某個方法的名稱和參數(shù)完全相同,通過子類創(chuàng)建的實例對象調(diào)用這個private類型,那么,子類則不存在覆蓋的限制,相當于子類中增加了一個全新的方法。至于Overloaded的方法是否可以改變返回值的類型這個問題,要看你倒底想問什么呢?這個題目很模糊。如果幾個Overloaded的方法的參數(shù)列表不一樣,它們的返回者類型當然也可以不一樣。但我估計你想問的問題是:如果兩個方法的表完全相同的方法,僅僅是返回類型不同,java就無法確定編程者倒底是想調(diào)用哪個方法了,因為它無法通過返回結(jié)果類override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法并且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對接口方法的實現(xiàn),在接口中一般只是對方法進行了,而我們在實現(xiàn)時,就需要實現(xiàn)接口的所4、被覆蓋的方法不能為privateoverload對我們來說可能比較熟悉,可以翻譯為重載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入?yún)?shù)來區(qū)分這些方法,然后再調(diào)用時,VM就會根據(jù)不同的參數(shù)樣式,來選擇合適的方法執(zhí)行。在使用重載要注意以下的fun(int,float)fun(int,int));19Constructor構(gòu)造器Constructor不能被繼承,因此不能Override,但可以被Overload20、接口是否可繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類是否可繼承具體類(concreteclass)?抽象類中是否main方法? 22面向?qū)ο蟮木幊陶Z言有41它才圓心和徑這兩屬性以只是調(diào)用的畫圓法表給圓發(fā)消息而圓這個方不應(yīng)該分配在人這個對象上,這就是面向?qū)ο蟮姆庋b性,即將對象封裝成一個高度自治和相對封閉的,對象狀態(tài)(屬性由這個對象自己的行方法來改變更便于理的例子是將車剎住車動作是分給司機還是分給火車然應(yīng)該配給火車因自身不可能那么大力氣將個火車停來的只有車自己才能成這一作火車要調(diào)用部的合和剎車片多個器協(xié)作才完成剎這個動剎車的程只classStringname;intage;}人本來是很復(fù)雜的事物,有很多方面,因為當前統(tǒng)只需要了解人的和,所以上定義的類只包含和這個屬這就一種抽使抽象可避免考慮些與目無關(guān)的節(jié)對抽象理解是不要用微鏡去看一個事物的所有方面,這樣涉及的內(nèi)容就太多了,劃分問題的邊界,當前系統(tǒng)需要什么,就只考慮什么多態(tài)是指程序中定義的變量所指向具體類型通過該變量發(fā)出的方法調(diào)用在編程并不確定而是在程序運行期間確定即個量倒底指向哪的實例對象該量發(fā)出方法調(diào)到底是類中實現(xiàn)方法必須在由序運行間才能定因在程序行才確定具的類樣不用改源程代碼以讓量綁定到各種同的類現(xiàn)上從導致該調(diào)的體方法隨改變即修改程代碼就以改程運行時所定的具體代碼,讓程序可以選擇多個運行狀態(tài),這就是多態(tài)性。多態(tài)性增強了軟件的靈活性和擴展性。例如,下面代碼中的UsrDo是一接口,定義變量srDo向的實例象由aoacr.eDo(在執(zhí)行時候返,有時候向的是UerbDaoUerHrnaeaouseDao指向的具體類實現(xiàn),從而導致usrao.nsrUe()方法調(diào)用的具體代碼也隨之改變,即有時候調(diào)用的是UerdbDao的UserDaouserDao=daofactory.getDao();23、java24 class和interface有什么區(qū)別 修飾符的class即為抽象類, class類中的方法不必是抽象的。 publicstaticfinal。, 類型publicstaticfinalpublicstaticfinal類型。Servlet類都要用相同的方式進行權(quán)限判斷、記錄日志和處理異常,那么就可以定義一個抽象的基類,讓所有的Servlet都繼承這個抽象基類,在抽象基類的service方法中完成權(quán)限判斷、記錄日志和處理異常的代碼,在各個子類中只是完成各自的業(yè)務(wù)邏輯代碼, classBaseServletextendspublicfinalvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throws{}catch(Excetpione)}}} }publicclassMyServlet1extends{{}}25 methodstaticstatic的,不能與混用。例如,F(xiàn)ileOutput類要硬件打交道,底層的實現(xiàn)用的是操作系統(tǒng)相關(guān)的api實現(xiàn),例如,在windows用cjdkFileOutputStreamopen方法的定義如下:privatenativevoidopen(Stringname)throwsc語言函數(shù)去調(diào)用別人的c語言函數(shù)。由于我們的cjavac語言函數(shù)java對接上,javac函數(shù)相對應(yīng)的方法,java中對應(yīng)的方法不需要寫具體的代碼,但需要面native。synchronized與合用的問題,我覺得也不行,因為在我?guī)啄甑膶W習和開發(fā)中,從來沒見到過這種情況,并synchronizedsynchronized同步所使用的同步鎖對象thisthis是什么。26、什么是內(nèi)部類?StaticNestedClassInnerClasspublicclass{int =publicvoid{Inner1inner1=newpublicclass {public{out_x=}}Inner2inner2=new}publicclass {}}Outerouter=newOuter.Inner1inner1=outer.new使用final或修飾符。這種內(nèi)部類對其他類是不可見的其他類無法這種內(nèi)部類,但是這種內(nèi)部類創(chuàng)建的實例對final修飾符。publicclass{publicvoid{newnewpublicvoid}}}staticStaticNestedClass,它不再具有內(nèi)部類的特性,所有,從狹義上講,它不是內(nèi)部類。StaticNestedClass與普通類在運行時的行為和功能上沒有什么區(qū)別,只是在編程public、protected、默認的、privatepublic和默認的這兩種類型。在外面StaticNestedClass類的名稱為“外部類名.內(nèi)部類名。在外面不需要創(chuàng)建外部類的實例對象,StaticNestedClassInner是定義在OuterStaticNestedClass,那么可以使用如下語句創(chuàng)Inner類:Outer.Innerinner=new外部類中StaticNestedClass時,可以直接使用StaticNestedClass的名字,而不需要加上外部類的名字了,在StaticNestedClass中也可以直接外部類的static的成員變量,不需要加上外部類的名字。StaticNestedClassstatic關(guān)鍵字,靜態(tài)方法中的StaticNestedfinal修飾符。備注:首先根據(jù)你的印象說出你對內(nèi)部的總體方的特點:例如,在兩個地方可以定義,以外類的成員變以及部類。class{staticintx;staticclassInner{void{}}}28、AnonymousInnerClass(內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實現(xiàn))interface(接口importpublicclassTestextendspublicstaticvoidmain(String[]args)new}publicvoidtest(){}}test方法中調(diào)用getClass().getName()方法,其實就是在調(diào)用從父類繼承的getClass()方法,等效于調(diào)用super.getClass().getName()方法,所以,super.getClass().getName()Test。30、String是最基本的數(shù)據(jù)類型嗎java.lang.String類是finalStringBuffer31、Strings="o";s=s+"world!";這兩行代碼執(zhí)行后,原始的String對象中的內(nèi)容到底變了沒有String對象,內(nèi)容是"o",然后我們對s進行了+操作,那么s所指向的那個對象是否發(fā)生了改變呢?答案是沒有。這時,s不指向原來那個對象了,而指向了另一個String對象,內(nèi)容為"oworld!",原來那個對象還存在于內(nèi)存之中,只是s這個變量不再指向它了。String來代表字符串的話會引起很大的內(nèi)存開銷。因為String對象建立之后不能再改變,所以對于每一個不同的StringStringBuffer類,它允許修改,而不是每個不同的字符串都要newString。例如我們要在構(gòu)造器中對一個名叫s的String變量進行初始化,把它設(shè)置為初始值,應(yīng)當這樣做:publicclassDemo{privateStrings;publicDemos="Initial}}s=newString("Initials都指向同一個對象。狀態(tài)都要一個對象來代表,可能會造能上的問題。所以Java標準類庫還提供了一個可變版本,即StringBuffer。32String類Stringfinal33、StringsnewString("xyz");StringObject?兩個或一個,”xyz”對應(yīng)一個對象,這個對象放在字符串常量緩沖區(qū),常量”xyz”不管出現(xiàn)多少遍,都是緩沖區(qū)中的那一ewrng”x”rng’xz’xy”34、StringStringBufferStringBuffer類提供的字符串進行修改。當你知道字符數(shù)據(jù)要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態(tài)構(gòu)造字符數(shù)據(jù)。另外,String實現(xiàn)了equals方法,newString(“abc”).equals(newString(“abc”)的結(jié)果為true,而StringBuffer沒有實現(xiàn)equalsnewStringBuffer(“abc”).equals(newStringBuffer(“abc”)false。StringBuffersbf=newStringBuffer();for(inti=0;i<100;i++){}Stringstr=newString();for(inti=0;i<100;i++){str=str+}在講兩者區(qū)別時,應(yīng)把循環(huán)的次數(shù)搞成10000,然后用endTime-beginTimeStringequalshashCodeStringBufferequalshashCode用正則表達式,代碼大概為:Stringresult用StingTokenizer,代碼為:StringTokenizer tokener=StringTokenizer(orgStr,”,”);String[]result=newString[tokener.countTokens()];Inti=0;?37、下面這條語句一共創(chuàng)建了多少個對象:StringStrings1="a";Strings2=s1+"b";Strings3="a"+"b";System.out.println(s2=="ab");System.out.println(s3==String對象。寫如下兩行代碼,Strings="a"+"b"+"c"+"d";System.out.println(s=="abcd");38、tryreturntryfinallycode前還是后也許你的答案是在return之前,但往更細地說,我的答案是在returnpublicclassTest*@paramargsaddbyzxx,Dec9,publicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstubSystem.out.println(newTest().test());;}staticint{intx={return}{}}}1運行結(jié)果是1,為什么呢?主函數(shù)調(diào)用子函數(shù)并得到結(jié)果的過程,好比主函數(shù)準備一個空罐子,當子函數(shù)要返回結(jié)果public {publicstatic {smallTt =new }public {{}
return1{return2}}}finallyreturn語句先執(zhí)行,finally2。Return并不是publicclassTest*@paramargsaddbyzxx,Dec9,publicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstubSystem.out.println(newTest().test());;}int{{}
return{return}}int{return}int{return}}結(jié)論:finallyreturnbreak40、finalfinallyfinalizefinal用于屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。內(nèi)部類要局部變量,局部變量必須定義成final類型,例如,一段代碼……finalize是Object類的一個方法,在收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供收集時的其他資源回收,例如關(guān)閉文件等。JVM不保證此方法總被調(diào)用錯誤。java編譯器要求方法必須拋出可能發(fā)生的非運行時異常,但是并不要求必須拋出未獲的運行時異常42、errorexception有什么區(qū)別error表示恢復(fù)不是不可能但很的情況下的一種嚴重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況43、JavaJavaJavajava.lang.Throwable,Throwable下面又派生了兩個子類:ErrorException,Error表示應(yīng)用程序本身無法克服和恢復(fù)的一種嚴重問題,程序只有死的份了,ExceptionceptionNuoneExepon(CasCastExceptionjava為系統(tǒng)異常和普通異常提供了不同的解決方案,編譯器強制普通異常必須try..catch處理或用throws繼續(xù)拋給上處理或用throws,所以系統(tǒng)異常也稱為unchecked異常。445runtimeexception所謂系統(tǒng)異常,就是…..RuntimeExceptionjdkdocRuntimeExceptionNullPointerException45、JAVA語言如何進行異常處理,關(guān)鍵字:throws,throw,try,catch,finallytry塊中可以拋出異常?java5以前,有如下兩種:newThread(){}.start();這表示調(diào)用Thread子類對象的run方法newThread(){}表示一個Thread的子類的實例對象,子類加上run方法后的代碼如下:newThread(){publicvoidrun(){}newThread(newRunnable(){}).start();這表示調(diào)用ThreadRunnablerun方法,newRunnable(){}表示一個Runnable的子類的實例對象,runnable的子類加上run方法后的代碼如下:newThread(newpublicvoid}}java5開始,還有如下一些線程池創(chuàng)建多線程的方式:ExecutorServicepool=Executors.newFixedThreadPool(3)for(inti=0;i<10;i++){pool.execute(newRunable(){publicvoid}Executors.newCachedThreadPool().execute(newRunable(){publicvoidrun(){}});Executors.newSingleThreadExecutor().execute(newRunable(){publicvoidrun(){}});有兩種實現(xiàn)方法,分別使用newThread()和newThread(runnable)形式,第一種直接調(diào)用thread的run方法,所以,我們Thread子類,即newSubThread()runnablerun方法。有兩種實現(xiàn)方法,分別是繼承ThreadRunnable接口synchronized關(guān)鍵字修飾同步方法在那種狀態(tài)下檢查和修改它們。結(jié)果很難檢查出真正的問題所在。suspend()suspend()志線程應(yīng)該掛起,便用wait()命其進入等待狀態(tài)。若標志線程應(yīng)當恢復(fù),則用一個notify()重新啟動線程。47、sleep()和wait()有什么區(qū)別sleepcpu,cpusleep指定的時間過后,cpu才會回到這個線程上繼續(xù)往下執(zhí)行,如果當前線程進入了同步鎖,sleepsleepcpu,但其他被同步鎖擋住了的線程也無法得到執(zhí)行。wait是指在一個已經(jīng)進入了同步鎖的線程內(nèi),讓自己暫時讓出同步鎖,以便其他正notify方法(notifywait方notify方法后面的waitwait的講解一定要配合例子代碼來說明,才packagecom.publicclassMultiThread*@parampublicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstubnewThread(newThread1()).start();try{}catch(InterruptedExceptione)//TODOAuto-generatedcatchblock}newThread(new}privatestaticclassThread1implements{publicvoidrun()//TODOAuto-generatedmethodsynchronized(MultiThread.class){System.out.println("enterthread1...");System.out.println("thread1istry}catch(InterruptedExceptione)//TODOAuto-generatedcatchblock}System.out.println("thread1isgoingon...");System.out.println("thread1isbeing}}}privatestaticclassThread2implements{publicvoidrun()//TODOAuto-generatedmethodsynchronized(MultiThread.class){System.out.println("enterthread2...");System.out.println("thread2notifyotherthreadcanrelease方法并不釋放鎖,即使System.out.println("thread2issleetentry}catch(InterruptedExceptione)//TODOAuto-generatedcatchblock}System.out.println("thread2isgoingon...");System.out.println("thread2isbeing}}}}class{synchronizedstaticvoid {}synchronizedvoid}ThreadRunnable接口synchronized,wait與notifyJVM確定喚醒哪個線程,而且不是按優(yōu)先級。52synchronized方法后,其它線程是否可進入此對象的其它方法?synchronized關(guān)鍵字,并且內(nèi)部沒有調(diào)用waitmaincpu,人的感覺是a,b在同時執(zhí)行,好比大家在同一個上網(wǎng),只有一條到外部網(wǎng)線,其實,這條網(wǎng)線一會為a傳b傳數(shù)據(jù),由于切換時間很短暫,所以,大家感覺都在同時上網(wǎng)。狀態(tài):就緒,運行,synchronize阻塞,waitsleep掛起,結(jié)束。waitsynchronizedstartsynchronized語句synchronizedwait方法轉(zhuǎn)為掛起狀54synchronizedjava.util.concurrent.locks.Lock主要相同點:Locksynchronized所實現(xiàn)的所有功能finally從句中釋放。LocktryLock方法可以非阻塞方packagecom.importimportpublicclassThreadTest*@paramprivateintprivateLocklock=newpublicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstubThreadTesttt=newThreadTest();for(inti=0;i<2;i++){newThread(tt.newnewThread(tt.new}}privateclassSubtractorimplements{publicvoidrun()//TODOAuto-generatedmethod{/*synchronized(ThreadTest.this){System.out.println("j--="+j--);{System.out.println("j--="+j--{}}}}privateclassAdderimplements{publicvoidrun()//TODOAuto-generatedmethod{/*synchronized(ThreadTest.this){System.out.println("j++="+j++);{System.out.println("j++="+{}}}}}554j1j1publicclass{privateintpublicstaticvoidmain(Stringargs[]){Incinc=tt.newInc();Decdec=tt.newDec();for(inti=0;i<2;i++){Threadt=newThread(inc);t=newThread(dec);}}privatesynchronizedvoidinc(){}privatesynchronizedvoiddec(){}classIncimplementsRunnable{publicvoidrun(){for(inti=0;i<100;i++){}}}classDecimplementsRunnable{publicvoidrun(){for(inti=0;i<100;i++){}}}}class{JMangerj=newJManager();{new}void{for(int{newnewRunnable(){publicvoidnewThread(newRunnable(){publicvoid}}}class{privatej=publicsynchronizedvoid{}publicsynchronizedvoid{}}publicclassThreadTest*@parampublicstaticvoidmain(String[]args)//TODOAuto-generatedmethodnew}publicvoid{finalBusinessbusiness=newnewnew{publicvoidrun()for(int{}}}for(int{}}privateclass{booleanbShouldSubtrue;//publicsynchronizedvoidMainThread(int{try{}catch(InterruptedExceptione)//TODOAuto-generatedcatchblock}for(int{
System.out.println(Thread.currentThread().getName()+":i="+i+",j="}bShouldSub=true;}publicsynchronizedvoidSubThread(int{try{}catch(InterruptedExceptione)//TODOAuto-generatedcatchblock}for(int{
System.out.println(Thread.currentThread().getName()+":i="+i+",j="}bShouldSub=false;}}}packagecom.publicclassThreadTestprivatestaticbooleanbShouldMain=publicstaticvoidmain(String[]args)//TODOAuto-generatedmethod/*newThread(){publicvoidrun(){for(int{for(int{System.out.println("i="+i+",j="+}}}//finalStringstr=newnewnew{publicvoid{for(int{synchronized(ThreadTest.class){try{catch(InterruptedExceptione){}}for(int{Thread.currentThread().getName()+"i="+i+",j="+j);}}}}
bShouldMain=true;}for(int{synchronized(ThreadTest.class){trycatch(InterruptedExceptione){}}for(int{Thread.currentThread().getName()+"i="+i+",j="+j);}bShouldMain=false;}}}}jdk5中的并發(fā)庫來實現(xiàn)的:importjava.util.concurrent.Executors;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;importjava.util.concurrent.locks.Condition;publicclass{privatestaticLocklock=newprivatestaticConditionsubThreadCondition=lock.newCondition();privatestaticbooleanbBhouldSubThread=false;publicstaticvoidmain(String[]{ExecutorServicethreadPool=Executors.newFixedThreadPool(3);threadPool.execute(newRunnable(){publicvoid{for(int{{for(int{System.out.println(Thread.currentThread().getName()+",j="+}bBhouldSubThread=false;}catch(Exception{}{}}}for(inti=0;i<50;i++){{for(intj=0;j<10;j++){System.out.println(Thread.currentThread().getName()+",j="+}bBhouldSubThread=true;}catch(Exception{}{}}}}57Collection58、Collection59、ArrayListVector的區(qū)別hashsetArrayListVector的功能,我們使用對比方式,更有利于說明問題。接著才說ArrayListVector線程會到集合,那最好是使用Vector,因為不需要我們自己再去考慮和編寫線程安全的代碼。ArrayList與Vector都有一個初始的容量大小,當進它們里面的元素的個數(shù)超過了容量時,就需要增加ArrayListArrayList沒有提供設(shè)置增長空間的方法。60、HashMapHashtableHashMap是Hashtable(非線程安全的實現(xiàn)MapHashMap(null)鍵值(key),由于非線程安全,在只有一個線程的情況下,效率要高于Hashtable。HashMapnull作為一個entry的keyvalueHashtableHashMap把Hashtablecontains方法去掉了,改成containsvalue和containsKey。因為containsHashtableDictionaryHashMapJava1.2Mapinterface最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程Hashtable時,不需要自己為它的方法實現(xiàn)同步,而HashMap就必須為之提供外同步。Hashtable和HashMaphash/rehash一.歷史原因:HashtableDictionary類的,HashMapJava1.2Map接口的一個實現(xiàn)二.同步性:HashtableHashMap是線程序不安全的,不是同步的三.值:只有HashMapkeyvalue61、List和Map區(qū)別62、List,SetMapCollection接口List,Set是,Map現(xiàn)在我要向Set集合再存入一個B對象,但B對象與A對象equals相等,則B對象不進去,所以,Set集合的add方List表示有先后順序的集合,注意,不是那種按、按大小、按價格之類的排序。當我們多次調(diào)用add(Obje)方法e)方法,就可以指定當前對象在集合中的存放位置。一個對象可以被反復(fù)進List中,每調(diào)用一次add方法,這個對象這個對象被add多次時,即相當于集合中有多個索引指向了這個對象,如圖x所示。List除了可以以Itor接口取得所有的元素,再逐一遍歷各個元外,還可以調(diào)用get(indexi)來明確說明取第幾個。對key/value,不能重復(fù)的key,這個重復(fù)的規(guī)則也是按equals比較相等。取則可以根據(jù)key獲得相應(yīng)的value,即keyvalueMap.Entry對象的集合。List以特定次序來持有元素,可有重復(fù)元素。Set無法擁有重復(fù)元素,內(nèi)部排序。Mapkey-value值,value>62,"xyz">65在hashSet中的順序不是62,65,78,這些問題感謝以前一個叫的學員提出,最后通過查看代碼給他解釋清楚,看本次培訓學員當中有多少能看懂源碼。LinkedHashSet按插入的順序,那被對象的hashcode方法還有什么作用呢?學員想想!hashsethashcodeequals方法是否相等。newStudent插入到HashSet中,看HashSetsizehashcode和equalssize。Vector由于使用了LinkedList也是線程不安全的,LinkedList提供了一些方法,使得LinkedListFor(inti=0;i<vector.size();i++){Objectobj=vector.get(i);}還有一種簡單的方式,HashSetsetnew66、CollectionCollectionsCollectionSet67、Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢?是用==equals()?它們有何區(qū)別Set里的元素是不能重復(fù)的,元素重復(fù)與否是使用equals()equals()和==方法決定值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內(nèi)容和類型相配的和最常用的集合類是List和Map。List的具體實現(xiàn)包括 和和操作任何類型對象的元素列表。List適用于按數(shù)值索 Map提供了一個更通用的元素方法。Map集合類用于元素(稱作"鍵"和"值"其中每個鍵映射到一個值
Listget(intindex)這樣的方法,因為它可以按順序取元素而set類中沒有g(shù)et(intindex)這樣的方法List和set都可以迭代出所有元素迭代時先要得到一個itor對象所以,set和list類都有一個itor方法,用于返回那個itor對象。map可以返回三個集合,一個是返回所有的key的集合,value的集合,再一個返回的keyvalueEntrySet對象的集合,map也有g(shù)et方法,參數(shù)keykeyvalue。69、兩個對象值相同(x.equals(y)true)hashcode,這句話對不對如果對象要保存在HashSetHashMap中,它們的equalshashcode儲的對象就不用實現(xiàn)hashcode,當然,我們沒有理由不實現(xiàn),通常都會去實現(xiàn)的。compareTo方法,還是拋異常!publicclassParentimplementsComparableprivateintage=publicParent(intthis.age=}publicintcompareTo(Objecto)//TODOAuto-generatedmethodstubSystem.out.println("methodofparent");Parento1=(Parent)o;}}publicclassChildextendsParentpublic}publicintcompareTo(Objecto)//TODOAuto-generatedmethodstubSystem.out.println("methodofchild"); Childo1=return}}publicclassTreeSetTest*@parampublicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstubTreeSetset=newTreeSet();set.add(newParent(3));set.add(newChild());set.add(newParent(4));}}715要讓人家感覺你對javaee開發(fā)很熟,所以,不能僅僅只列corejava中的那些東西,要多列你在做ssh項目中涉及的那些東 常用的包 java.sql 72、java中有幾種類型的流?JDKInputStreamOutputStreamInputStreamReaderOutputStreamWriter。在java.io包中還有許多其他的流,主要是為了提高性能和使用方便。73 IO流,對應(yīng)的抽象OutputStreamInputStream,不同的實現(xiàn)類就代表不同的輸入和輸出設(shè)備,它們都是針對字節(jié)進行操作的。包裝,字符流則是直接接受字符串,它內(nèi)部將串轉(zhuǎn)成字節(jié),再寫入底層設(shè)備,這為我們向IO設(shè)別寫入或字符串提供importjava.io.BufferedReader;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.InputStreamReader;importjava.io.PrintWriter;publicclassIOTestpublicstaticvoidmain(String[]args)throwsException{Stringstr=""; =new/*FileWriterfw=newFileWriter("1.txt");PrintWriterpw=newPrintWriter("1.txt","utf-8");/*FileReaderfr=newFileReader("1.txt");char[]buf=newchar[1024];intlen=StringmyStr=newString(buf,0,len);/*FileInputStreamfr=newFileInputStream("1.txt");byte[]buf=newbyte[1024];intlen=StringmyStr=newString(buf,0,len,"UTF-8");BufferedReaderbr=newnew)StringmyStr=br.readLine();}}74javajavaSerializablejava對象變成某個格式的字節(jié)流再傳輸,但是,jreOutputStreamwriteObjectjava幫我要實現(xiàn)的方法,implementsSerializable只是為了標注該對象是可被序列化的。例如,在webSession中,tomcatSession對象序列化到硬盤,這個對象就必須實現(xiàn)Serializable接口。如果對象要經(jīng)過分布式系統(tǒng)進行網(wǎng)絡(luò)傳輸或通過rmi等調(diào)用,這就需要在網(wǎng)絡(luò)上傳輸Serializable接口。75JVMclass文件的原理機制JVMClassLoader和它的子類來實現(xiàn)的,JavaClassLoaderJava運行時系統(tǒng)組件。它負責76、heapstackjava的內(nèi)存分為兩類,一類是棧內(nèi)存,一類是堆內(nèi)存。棧內(nèi)存是指程序進入一個方法時,會為這個方法單獨分配一塊new創(chuàng)建的對象都放在堆里,所以,它不會隨方法的結(jié)束而。方法中的局部變量使用final修飾后,放在堆中,而不是棧中。77、GC是什么?GC是收集的意思(GabageCollection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯誤的內(nèi)存回收會導致程序或系統(tǒng)的不穩(wěn)定甚至,Java提供的GC功能可以自動監(jiān)測對象是否超過作用域從而達到自動回收內(nèi)存的目的,Java語言沒有提供釋放已分配內(nèi)存的顯示操作方法。78、回收的優(yōu)點和原理。并考慮2種回收機制。。Java語言中一個顯著的特點就是引入了回收機制,使c++程序員最頭疼的內(nèi)存管理的問題迎刃而解,它使得Java有對象的才有"作用域"回收可以有效的防止內(nèi)存,有效的使用可以使用的內(nèi)存回收器通常是作。。對于GC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技驅(qū)動農(nóng)產(chǎn)品電商
- 科技農(nóng)業(yè)投資視角
- 專業(yè)房產(chǎn)經(jīng)紀服務(wù)協(xié)議2024版范本版
- 二零二四宇通客車零部件銷售代理及市場拓展合作協(xié)議3篇
- 2025年度電商新零售線下體驗店合作合同3篇
- 專業(yè)銷售服務(wù)協(xié)議書2024年3篇
- 2025年度跨境電商物流中心場地承包經(jīng)營合同4篇
- 2025年度航空航天復(fù)合材料加工技術(shù)合同4篇
- 2025年度茶樓裝修工程合同標準樣本8篇
- 2025年度教育機構(gòu)場地租賃保證金合同8篇
- 2024版塑料購銷合同范本買賣
- 【高一上】【期末話收獲 家校話未來】期末家長會
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 有毒有害氣體崗位操作規(guī)程(3篇)
- 二年級下冊加減混合豎式練習360題附答案
- 吞咽解剖和生理研究
- TSG11-2020 鍋爐安全技術(shù)規(guī)程
- 汽輪機盤車課件
- 異地就醫(yī)備案個人承諾書
- 蘇教版五年級數(shù)學下冊解方程五種類型50題
評論
0/150
提交評論