版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、JAVA1)transient和volatile是java如果用transient聲明一個實例classTtransientinta;/不需要維持intb;/需要維持這里,如果T類的一個對象寫volatilevolatilevolatile入synchronized方法時。用strictfp修飾類或方法的Java版本那樣準(zhǔn)確。切斷只類被strictfp修飾,所有的方法自動被strictfp修飾strictfp的意FP-strict是說精確浮點的意思。在Java沒有指定strictfp關(guān)Java算的表達(dá)式是采取一種近似于我行我素的行為來完成這些操作,以致于得到的結(jié)果往往無法令你滿意。而一旦使用了
2、strictfp來聲明一個類、接口或者方法時,那么所聲明的范圍內(nèi)Java的編譯器以及運行環(huán)境會完全依照浮點規(guī)范IEEE-754來執(zhí)行。因此如果你想讓你的浮點運算更加精確,而且不會因為不同的硬件平臺所執(zhí)行的結(jié)果不一致的話,那就請用關(guān)鍵字strictfp。你可以將一個類、接口以及方法聲明為strictfp,但是不允許對接口中的方法以及構(gòu)造函數(shù)聲明strictfp關(guān)鍵字,例如下面的代碼:strictfpinterfaceApublicstrictfpclassFpDemo1strictfpvoidf()錯誤的使用方法interfaceAstrictfpvoidf();publicclassFpDem
3、o2strictfpFpDemo2()一旦使用了關(guān)鍵字strictfp來聲明某個類、接口或者方法時,那么在這個關(guān)鍵字所聲明的范圍內(nèi)所有浮點運算都是精確的,符合IEEE-754規(guī)范的。例如一類被聲明為strictfp,那么該類中所有的方法都是strictfp的。2)抽象類和接口有什么區(qū)別?(瞬聯(lián))abstractclass在Java語言中表示的是一種繼承關(guān)系,一個類只能使用一次繼承關(guān)系。但是,一個類卻可以實現(xiàn)多個interfaceo在abstractclass中可以有自己的數(shù)據(jù)成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員(也就是必須是s
4、taticfinal的,不過在interface中一般不定義數(shù)據(jù)成員),所有的成員方法都是abstract的。abstractclass和interface所反映出的設(shè)計理念不同。其實abstractclass表示的是is-a咲系,interface表示的是like-a關(guān)系。實現(xiàn)抽象類和接口的類必須實現(xiàn)其中的所有方法。抽象類中可以有非抽象方法。接口中則不能有實現(xiàn)方法。接口中定義的變量默認(rèn)是publicstaticfinal型,且必須給其初值,所以實現(xiàn)類中不能重新定義,也不能改變其值。抽象類中的變量默認(rèn)是friendly型,其值可以在子類中重新定義,也可以重新賦值。接口中的方法默認(rèn)都是publi
5、c,abstract類型的。3)能說一下java的反射(reflection)機(jī)制嗎?(瞬聯(lián))個類繼承(如小程序必須繼承自個類繼承(如小程序必須繼承自Applet類),則無法再繼承Thread類,這時如果我們又不想建立一個新的開放性和原因連接(causally-connected)是反射系統(tǒng)的兩大基本要素4)在java?extendsThreadimplementRunnablerun(),加入線程所要執(zhí)行方法一:繼承Thread類,覆蓋方法run(),我們在創(chuàng)建的Threadrun(),加入線程所要執(zhí)行的代碼即可。下面是一個例子:publicclassMyThreadextendsThrea
6、dintcount=1,number;publicMyThread(intnum)number=num;System.out.println(創(chuàng)建線程+number);publicvoidrun()while(true)System.out.println(線程+number+:計數(shù)+count);if(+count=6)return;publicstaticvoidmain(Stringargs)for(inti=0;i5;i+)newMyThread(i+1).start();這種方法簡單明了,符合大家的習(xí)慣,但是,它也有一個很大的缺點,那就是如果我們的類已經(jīng)從一if(+count=6)r
7、eturn;if(+count=6)return;4.4.阻塞狀態(tài):線程不會被分配CPU時間,無法執(zhí)行。類,應(yīng)該怎么辦呢?我們不妨來探索一種新的方法:我們不創(chuàng)建Thread類的子類,而是直接使用它,那么我們只能將我們的方法作為參數(shù)傳遞給Thread類的實例,有點類似回調(diào)函數(shù)。但是Java沒有指針,我們只能傳遞一個包含這個方法的類的實例。那么如何限制這個類必須包含這一方法呢?當(dāng)然是使用接口!(雖然抽象類也可滿足,但是需要繼承,而我們之所以要采用這種新方法,不就是為了避免繼承帶來的限制嗎?)Java提供了接口java.lang.Runnable來支持這種方法。方法二:實現(xiàn)Runnable接口Run
8、nable接口只有一個方法線程代碼寫入其中,就完成了這一部分的任務(wù)。但是創(chuàng)建Thread類的實例,這一點通過Runnable接口只有一個方法線程代碼寫入其中,就完成了這一部分的任務(wù)。但是創(chuàng)建Thread類的實例,這一點通過個例子:run(),我們聲明自己的類實現(xiàn)Thread類的構(gòu)造函數(shù)Runnable接口并提供這一方法,將我們的Runnable接口并沒有任何對線程的支持,我們還必須publicThread(Runnabletarget);來實現(xiàn)。下面是一publicclassMyThreadimplementsRunnableintcount=1,number;publicMyThread(i
9、ntnum)number=num;System.out.println(”創(chuàng)建線程+number);publicvoidrun()while(true)System.out.println(線程+number+:計數(shù)+count);publicstaticvoidmain(Stringargs)for(inti=0;i5;i+)newThread(newMyThread(i+1).start();Thread類run方法,Thread類run方法,的run方法,否則該線程執(zhí)行的將是子類的run方法,而不是我們用以實現(xiàn)Runnable接口的類的對此大家不妨試驗一下。使用Runnable接口來實現(xiàn)
10、多線程使得我們能夠在一個類中包容所有的代碼,有利于封裝,它的缺點在于,我們只能使用一套代碼,若想創(chuàng)建多個線程并使各個線程執(zhí)行不同的代碼,則仍必須額外創(chuàng)建類,如果這樣的話,在大多數(shù)情況下也許還不如直接用多個類分別繼承Thread來得緊湊。綜上所述,兩種方法各有千秋,大家可以靈活運用。下面讓我們一起來研究一下多線程使用中的一些問題。三、線程的四種狀態(tài)新狀態(tài):線程已被創(chuàng)建但尚未執(zhí)行(start()尚未被調(diào)用)??蓤?zhí)行狀態(tài):線程可以執(zhí)行,雖然不一定正在執(zhí)行。CPU時間隨時可能被分配給該線程,從而使得它執(zhí)行。死亡狀態(tài):正常情況下run()返回使得線程死亡。調(diào)用stopdestroy。亦有同樣效果,但是不
11、被推薦,前者會產(chǎn)生異常,后者是強(qiáng)制終止,不會釋放鎖。四、線程的優(yōu)先級線程的優(yōu)先級代表該線程的重要程度,當(dāng)有多個線程同時處于可執(zhí)行狀態(tài)并等待獲得CPU時間時,線程調(diào)度系統(tǒng)根據(jù)各個線程的優(yōu)先級來決定給誰分配CPU時間,優(yōu)先級高的線程有更大的機(jī)會獲得CPU時間,優(yōu)先級低的線程也不是沒有機(jī)會,只是機(jī)會要小一些罷了。你可以調(diào)用Thread類的方法getPriority()和setPriority()來存取線程的優(yōu)先級,線程的優(yōu)先級界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之間,缺省是5(N0RM_PRI0RITY)。5IBMaspenTech:design:pattern:fr
12、ameworkGoFA.Factory()new一樣頻繁.2002/10/9Prototype()Builder汽車由車輪方向盤發(fā)動機(jī)很多部件組成,同時,將這些部件組裝成汽車也是一件復(fù)雜的工作,Builder模式就是將這兩種情況分開進(jìn)行。設(shè)計模式之Singleton(單態(tài)模式)保證一個類只有一個實例,并提供一個訪問它的全局訪問點2002/10/9更新結(jié)構(gòu)模式設(shè)計模式之Facade可擴(kuò)展的使用JDBC針對不同的數(shù)據(jù)庫編程,Facade提供了一種靈活的實現(xiàn).設(shè)計模式之Proxy以Jive為例,剖析代理模式在用戶級別授權(quán)機(jī)制上的應(yīng)用設(shè)計模式之Adapter使用類再生的兩個方式:組合(new)和繼承(
13、extends),這個已經(jīng)在thinkinginjava中提到過.設(shè)計模式之Composite就是將類用樹形結(jié)構(gòu)組合成一個單位.你向別人介紹你是某單位,你是單位中的一個元素,別人和你做買賣,相當(dāng)于和單位做買賣。文章中還對Jive再進(jìn)行了剖析。設(shè)計模式之DecoratorDecorator是個油漆工,給你的東東的外表刷上美麗的顏色.設(shè)計模式之Bridge將牛郎織女分開(本應(yīng)在一起,分開他們,形成兩個接口),在他們之間搭建一個橋(動態(tài)的結(jié)合)設(shè)計模式之Flyweight提供Java運行性能,降低小而大量重復(fù)的類的開銷.行為模式設(shè)計模式之Template實際上向你介紹了為什么要使用Java抽象類,該
14、模式原理簡單,使用很普遍.設(shè)計模式之Memento很簡單一個模式,就是在內(nèi)存中保留原來數(shù)據(jù)的拷貝.設(shè)計模式之Observer介紹如何使用JavaAPI提供的現(xiàn)成Observer設(shè)計模式之ChainofResponsibility各司其職的類串成一串,好象擊鼓傳花,當(dāng)然如果自己能完成,就不要推委給下一個.設(shè)計模式之Command什么是將行為封裝Command是最好的說明.設(shè)計模式之State狀態(tài)是編程中經(jīng)常碰到的實例,將狀態(tài)對象化,設(shè)立狀態(tài)變換器,便可在狀態(tài)中輕松切換.StrategyStrategyMediatorMediatorInterpreterVisitorIteratorJavaCo
15、llection.Iterator,MediatorMediatorInterpreterVisitorIteratorJavaCollection.Iterator,IteratorCollectionIterator6)請說一下MVC架構(gòu)IBMaspenTech)Model:View:Controller:MVC(ModalViewControler)DesktopMVCMVCMVCMVMCMVMMVCMVCCMVMCMVMMVCMVCMVCXeroxPARCSmalltalk80SunJ2EEColdFusionPHPMVCMVCMVCWebWebHTMLMacromediaFlashX
16、HTMLXML/XSLWMLHTMLWebservices.MVCEJBsMVCEJBsMVCMVCColdFusionComponentsWebHTMLMVCMVCWebASPPHPCFMLHTMLMVCMVCFlashWAPMVCFlashWAPMVCMVCMVCMVCMVCMVCMVCFlashWAPMVCFlashWAPMVCMVCMVCMVCMVCMVCHTMLMVCFlashWAPMVCFlashWAPMVCMVCMVCMVCMVCMVCMVCFlashWAPMVCFlashWAPMVCMVCMVCMVCMVCMVCMacromediaFlashWAP車和電子商務(wù)過程也能被Flas
17、hMVCFlashWAPMVCFlashWAPMVCMVCMVCMVCMVCMVCMVCFlashWAPMVCFlashWAPMVCMVCMVCMVCMVCMVCMVCMySQL移植到OracleRDBMSLDAPLDAPMVCMVCMVCMVCMVCMVCMVCMVCMVCMVC7)如果類a繼承類b,實現(xiàn)接口c,而類b和接口c中定義了同名變量,請問會出現(xiàn)什么問題?(瞬聯(lián))interfaceAintx=0;classBintx=1;classCextendsBimplementsApublicvoidpX()System.out.println(x);publicstaticvoidmain(
18、Stringargs)newC().pX();答案:錯誤。在編譯時會發(fā)生錯誤(錯誤描述不同的JVM有不同的信息,意思就是未明確的x調(diào)用,兩個x都匹配(就象在同時importjava.util和java.sql兩個包時直接聲明Date一樣)。對于父類的變量,可以用super.x來明確(輸出的是1),而接口的屬性默認(rèn)隱含為publicstaticfinal.所以可以通過A.x來明確(輸出的是0)。下面的代碼運行時會不會報錯interfacePlayablevoidplay();interfaceBounceablevoidplay();interfaceRollableextendsPlayabl
19、e,BounceableBallball=newBall(PingPang);classBallimplementsRollableprivateStringname;publicStringgetName()returnname;publicBall(Stringname)=name;publicvoidplay()ball=newBall(Football);System.out.println(ball.getName();答案:錯interfaceRollableextendsPlayable,Bounceable沒有問題。interface可繼承多個interfaces,所以這里沒錯
20、。問題出在interfaceRollable里的Ballball=newBall(PingPang);。任何在interface里聲明的interfacevariable(接口變量,也可稱成員變量),默認(rèn)為publicstaticfinal。也就是說Ballball=newBall(PingPang);實際上是publicstaticfinalBallball=newBall(PingPang);。在Ball類的Play()方法中,ball=newBall(Football);改變了ball的reference,而這里的ball來自Rollableinterface,Rollableinter
21、face里的ball是publicstaticfinal的,final的object是不能被改變reference的。因此編譯器將在ball=newBall(Football);這里顯示有錯。8)請說一下java中為什么要引入內(nèi)部類?還有匿名內(nèi)部類?(瞬聯(lián),IBM)9)請說一下final,finally和finalize的區(qū)別?(瞬聯(lián))final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他
22、資源回收,例如關(guān)閉文件等。10)請說一下HTTP請求的基本過程(IBM)11)java中存在內(nèi)存泄漏問題嗎?請舉例說明?(IBM)會inti,i2;return(i-i2);/wheni為足夠大的正數(shù),i2為足夠大的負(fù)數(shù)。結(jié)果會造成溢位,導(dǎo)致錯誤。12)請說一下java中的內(nèi)存回收機(jī)制所采用的算法(IBM,瞬聯(lián))雖然垃圾回收關(guān)心著大部分的問題,包括內(nèi)存管理,使得程序員的任務(wù)顯得更加輕松,但是程序員還是可能犯些錯誤導(dǎo)致內(nèi)存泄漏問題。GC(垃圾回收)通過遞歸對所有從“根”對象(堆棧中的對象,靜態(tài)數(shù)據(jù)成員,JNI句柄等等)繼承下來的引用進(jìn)行工作,然后標(biāo)記所有可以訪問的活動著的對象。而這些對象變成了程
23、序唯一能夠操縱的對象,其他的對象都被釋放了。因為GC使得程序不能夠訪問那些被釋放的對象,所以這樣做是安全的。13)請說一下Systemgc()函數(shù)的作用。什么時候可以調(diào)用垃圾回收器?(瞬聯(lián))垃圾回收函數(shù),手動調(diào)用的.當(dāng)一個對象停止被活動聲明所引用,它就變成了垃圾(garbage)可以被回收重新使用14)你做過的項目中采用了什么安全認(rèn)證機(jī)制?(IBM)15)Math.round()什么作用?Math.Round(3.44,1)=3.4Math.Round(3.45,1)=3.4Math.Round(3.46,1)=3.5Math.Round(3.54,1)=3.5Math.Round(3.55,
24、1)=3.6Math.Round(3.56,1)=3.6Math.Round(3.64,1)=3.6Math.Round(3.65,1)=3.6Math.Round(3.66,1)=3.7Math.Round(3.74,1)=3.7Math.Round(3.75,1)=3.8Math.Round(3.76,1)=3.8這種舍入方法叫做銀行家舍入(BankersRound),這就是已經(jīng)規(guī)定下來的標(biāo)準(zhǔn)、Round的標(biāo)準(zhǔn)、世界的標(biāo)準(zhǔn)。Round四舍五入164j1j1jpackagejava_example150;publicclassTestThread3privateintj;publicstat
25、icvoidmain(Stringargs)TestThread3t=newTestThread3();Incinc=t.newInc();Decdec=t.newDec();for(inti=0;i2;i+)Threadts=newThread(inc);ts.start();ts=newThread(dec);ts.start();privatesynchronizedvoidinc()j+;System.out.println(Thread.currentThread().getName()+-inc:+j);privatesynchronizedvoiddec()j-;System.o
26、ut.println(Thread.currentThread().getName()+-dec:+j);classIncimplementsRunnablepublicvoidrun()for(inti=0;i10;i+)inc();classDecimplementsRunnablepublicvoidrun()for(inti=0;i10;i+)dec();TOC o 1-5 h z17CORBA?CORBA(CommonObjectRequestBrokerArchitecture)(ObjectManagementGroupOMG)(IDL),(binding:)用不同的程序設(shè)計語言
27、書寫在不同的進(jìn)程中運行為不同的操作系統(tǒng)開發(fā)18JAVA1.abstractclassNameprivateStringname;publicabstractbooleanisStupidName(Stringname)abstractmethod2.publicclassSomethingvoiddoSomething()privateStrings=intl=s.length();答案:錯。局部變量前不能放置任何訪問修飾符(private,public,和protected)。final可以用來修飾局部變量(final如同abstract和strictfp都是非訪問修飾符,strictfp只
28、能修飾class和method而非variable)。3.abstractclassSomethingprivateabstractStringdoSomething();答案:錯。abstract的methods不能以private修飾。abstract的methods就是讓子類implement(實現(xiàn))具體細(xì)節(jié)的怎么可以用private把a(bǔ)bstractmethod封鎖起來呢?(同理,abstractmethod前不能加final)。4.publicclassSomethingpublicintaddOne(finalintx)return+x;答案:錯。intx被修飾成final,意味著x不能在addOnemethod中被修改。5.publicclassSomethingpublicstaticvoidmain(Stringargs)Othero=newOther();newSomething().addOne(o);publicvoidaddOne(finalOthero)o.i+;classOtherpublicinti;答案:正確。在addOnemethod中,參數(shù)o被修飾成final。如果在addOnemethod里我們修改了o的reference(比如:o=newOther();),那么如同上例這題也是錯的。但這里修改的
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省廣州市番禺區(qū)2023-2024學(xué)年七年級上學(xué)期期末語文試題(答案)
- 第9課 20世紀(jì)以來人類的經(jīng)濟(jì)與生活 說課稿-2023-2024學(xué)年高中歷史統(tǒng)編版(2019)選擇性必修二001
- 《特發(fā)性肺纖維化的中醫(yī)診療指南》
- 2024年07月浙江義烏農(nóng)商銀行大學(xué)生社會實踐活動招募筆試歷年參考題庫附帶答案詳解
- 2024年??谑旋埲A區(qū)金盤社區(qū)衛(wèi)生服務(wù)站高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 大班科學(xué)預(yù)防感冒
- 創(chuàng)業(yè)公司工作流程
- 2024年海南省平山醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 企業(yè)經(jīng)營成本管理課件
- 2024版商鋪租賃合同備忘錄
- 計量經(jīng)濟(jì)學(xué)復(fù)習(xí)資料-概念和問答
- 2024年秋新人教PEP版3年級上冊英語教學(xué)課件 Unit 4 第4課時 Part B Let's talk
- 企業(yè)發(fā)展部部門管理手冊
- 2024新版(外研版三起孫有中)三年級英語上冊單詞帶音標(biāo)
- 2023年員工手冊范本(適用于公司全體員工手冊)
- 2025屆安徽省合肥市一六八中高二數(shù)學(xué)第一學(xué)期期末經(jīng)典試題含解析
- 自來水廠考試題庫單選題100道及答案解析
- 冷庫建設(shè)項目可行性研究報告5篇
- 教育學(xué)院院長述職報告范文
- 杭州市西湖區(qū)2024年三年級數(shù)學(xué)第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 2022-2023學(xué)年廣東省廣州市花都區(qū)六年級(上)期末英語試卷(含答案)
評論
0/150
提交評論