java面試寶典1、一個(gè).源文件中是否可以包括多個(gè)不是類(lèi)有什么限制_第1頁(yè)
java面試寶典1、一個(gè).源文件中是否可以包括多個(gè)不是類(lèi)有什么限制_第2頁(yè)
java面試寶典1、一個(gè).源文件中是否可以包括多個(gè)不是類(lèi)有什么限制_第3頁(yè)
java面試寶典1、一個(gè).源文件中是否可以包括多個(gè)不是類(lèi)有什么限制_第4頁(yè)
java面試寶典1、一個(gè).源文件中是否可以包括多個(gè)不是類(lèi)有什么限制_第5頁(yè)
已閱讀5頁(yè),還剩133頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Java面試寶2015一.Java基礎(chǔ)部 1、一個(gè)".java"源文件中是否可以包括多個(gè)類(lèi)(不是內(nèi)部類(lèi)有什么限制 3、說(shuō)說(shuō)&和&&的區(qū)別 4、在JAVA中如何跳出當(dāng)前的多重嵌套循環(huán) 5、switch語(yǔ)句能否作用在byte上,能否作用在long上,能否作用在String上 6、shorts1=1;s1=s1+1;有什么錯(cuò)?shorts1=1;s1+=1;有什么錯(cuò) 7、 型變量中能不能存貯一個(gè)中文漢字?為什么 8、用最有效率的方法算出2乘以8等於幾 9、請(qǐng)?jiān)O(shè)計(jì)一個(gè)一百億的計(jì)算 10、使用 關(guān)鍵字修飾一個(gè)變量時(shí),是不能變,還是的對(duì)象不能變 11、"=="和equals方法究竟有什么區(qū)別 12、靜態(tài)變量和實(shí)例變量的區(qū)別 13、是否可以從一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用 14、Integer與int的區(qū) 15、Math.round(11.5)等於多少?Mathround(-11.5)等於多少 16、下面的代碼有什么不妥之處 17、請(qǐng)說(shuō)出作用 public,private,protected,以及不寫(xiě)時(shí)的區(qū) 18、Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類(lèi)型 19、構(gòu)造器Constructor是否可被 20、接口是否可繼承接口?抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口?抽象類(lèi)是否可繼承具體類(lèi)(concreteclass)?抽象類(lèi)中是否可以有靜態(tài)的main方法 21、寫(xiě)clone()方法時(shí),通常都有一行代碼,是什么 22、面向?qū)ο蟮奶卣饔心男┓?23、java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么 24 class和interface有什么區(qū)別 的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是 26、什么是內(nèi)部類(lèi)?StaticNestedClass和InnerClass的不同 27、內(nèi)部類(lèi)可以它的包含類(lèi)的成員嗎?有沒(méi)有什么限制 28AnonymousInnerClass(內(nèi)部類(lèi))是否可以extends(繼承)其它類(lèi)是否可以implements(實(shí)現(xiàn))interface(接口 29、super.getClass()方法調(diào) 30、String是最基本的數(shù)據(jù)類(lèi)型嗎 31、Strings=" o";s=s+"world!";這兩行代碼執(zhí)行后,原始的String對(duì)象中的內(nèi)容到底變了沒(méi)有 32、是否可以繼承String類(lèi) 33、StringsnewString("xyz");StringObject? 34、String和StringBuffer的區(qū) 35、如何把一段逗號(hào)分割的字符串轉(zhuǎn)換成一個(gè)數(shù)組 36、數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法?String有沒(méi)有l(wèi)ength()這個(gè)方法 37、下面這條語(yǔ)句一共創(chuàng)建了多少個(gè)對(duì)象 38、try{}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally{}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后 39、下面的程序代碼輸出的結(jié)果是多少 41、運(yùn)行時(shí)異常與一般異常有何異同 42、error和exception有什么區(qū)別 43、 中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用 44、請(qǐng)寫(xiě)出你最常見(jiàn)到的5個(gè)runtimeexception 什么意義?在try塊中可以拋出異常嗎 46、java中有幾種方法可以實(shí)現(xiàn)一個(gè)線程?用什么關(guān)鍵字修飾同步方法?stop()和suspend()方法為何不推薦使用 47、sleep()和wait()有什么區(qū)別 48、同步和異步有何異同,在什么情況下分別使用他們?舉例說(shuō)明 49.下面兩個(gè)方法同步嗎?(自己發(fā)明 50、多線程有幾種實(shí)現(xiàn)方法?同步有幾種實(shí)現(xiàn)方法 51、啟動(dòng)一個(gè)線程是用run()還是 對(duì)象的其它方法 53、線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān) 55、設(shè)計(jì)4個(gè)線程,其中兩個(gè)線程每次對(duì)j增加1,另外兩個(gè)線程對(duì)j每次減少1。 再回到主線程又循環(huán)100,如此循環(huán)50次,請(qǐng)寫(xiě)出程序 57、介紹Collection框架的結(jié) 58、 框架中實(shí)現(xiàn)比較要實(shí)現(xiàn)什么接 59、ArrayList和Vector的區(qū) 60、HashMap和Hashtable的區(qū) 61、List和Map區(qū)別 63、List、Map、 三個(gè)接口,存取元素時(shí),各有什么特點(diǎn) 64、說(shuō)出ArrayList,Vector,LinkedList的性能和特 65、去掉一個(gè)Vector集合中重復(fù)的元 66、Collection和Collections的區(qū)別 67、Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢 是用==還equals()?它們有何區(qū)別 68、你所知道的集合類(lèi)都有哪些?主要方法 69、兩個(gè)對(duì)象值相同(x.equals(y)==true),但卻可有不同的hashcode,這句話對(duì)不對(duì) 70Treeet 里面放對(duì)象,如果同時(shí)放入了父類(lèi)和子類(lèi)的實(shí)例對(duì)象,那比較時(shí)使用的是父類(lèi)的compareTo方法,還是使用的子類(lèi)的compareTo方法,還是拋異常! 71、說(shuō)出一些常用的類(lèi),包,接口,請(qǐng)各舉5 72、java中有幾種類(lèi)型的流?JDK為每種類(lèi)型的流提供了一些抽象類(lèi)以供繼承請(qǐng)說(shuō)出他們分別是哪些類(lèi) 73、字節(jié)流與字符流的區(qū) 74、什么是java序列化,如何實(shí)現(xiàn)java序列化?或者請(qǐng)解釋Serializable接口的作用 75、描述一下JVM加載class文件的原理機(jī)制 77、GC是什么?為什么要有 78、回收的優(yōu)點(diǎn)和原理。并考慮2種回收機(jī)制 79回收器的基本原理是什么?回收器可以馬上回收內(nèi)存嗎?有什么辦主動(dòng)通知虛擬機(jī)進(jìn)行回收 80、什么時(shí)候用assert 81、 中會(huì)存在內(nèi)存泄漏嗎,請(qǐng)簡(jiǎn)單描述 82、能不能自己寫(xiě)個(gè)類(lèi),也叫 83.Java代碼查 二.算法與編 1、編寫(xiě)一個(gè)程序,將a.txt文件中的單詞與b.txt文件中的單詞交替合并到c.txt文件中,a.txt文件中的單詞用回車(chē)符分隔,b.txt文件中用回車(chē)或空格進(jìn)行分隔。.612、編寫(xiě)一個(gè)程序,將d:\java下的所有.java文件到d:\jad下,并將原來(lái)文件的擴(kuò)展名從.java改為.jad 個(gè)字符的個(gè)數(shù) 5、說(shuō)明生活中遇到的二叉樹(shù),用java實(shí)現(xiàn)二叉 6、從類(lèi)似如下的文本文件中出所有的,并打印出重復(fù)的和重復(fù)的次數(shù),并按重復(fù)次數(shù)排序 7、寫(xiě)一個(gè)Singleton出來(lái) 8、遞歸算法題 9、遞歸算法題 10、排序都有哪幾種方法?請(qǐng)列舉。用JAVA實(shí)現(xiàn)一個(gè)快速排序 11、有數(shù)組a[n],用java代碼將數(shù)組元素順序顛 (¥1011-(零一拾一元整)輸出 判斷第二個(gè)日期比第一個(gè)日期 tablen31,2,3用綠色字體,7,8,9用紅顏色字體 3、HTML的form提交之前如何驗(yàn)證數(shù)值文本框的內(nèi)容全部為數(shù)字?否則的話提示用戶并終止提交 4、請(qǐng)寫(xiě)出用于校驗(yàn)HTML文本框中輸入的內(nèi)容全部為數(shù)字的javascript代 5、說(shuō)說(shuō)你用過(guò)那些ajax技術(shù)和框架,說(shuō)說(shuō)它們的區(qū) 四.Javaweb部 1、Tomcat的優(yōu)化經(jīng) 3、解釋一下什么是 4、說(shuō)一說(shuō)Servlet的生命周期 5、Servlet的基本架 7、什么情況下調(diào)用doGet()和 8、Request對(duì)象的主要方法 9、forward和redirect的區(qū) 10、request.getAttribute()和request.getParameter()有何區(qū)別 jsp有哪些內(nèi)置對(duì)象?作用分別是什么?分別有什么方法 jsp有哪些動(dòng)作?作用分別是什么 13、JSP的常用指 14.JSP中動(dòng)態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別 15、兩種跳轉(zhuǎn)方式分別是什么?有什么區(qū)別 16、頁(yè)面間對(duì)象傳遞的方 17、JSP和Servlet有哪些相同點(diǎn)和不同點(diǎn),他們之間的聯(lián)系是什么 18、 的各個(gè)部分都有那些技術(shù)來(lái)實(shí)現(xiàn)?如何實(shí)現(xiàn) 如何輸出一個(gè)某種編碼的字符串 在另一頁(yè)面顯示按什么排序,結(jié)果為,提供 五.數(shù)據(jù)庫(kù)部 1、用兩種方式根據(jù)部門(mén)號(hào)從高到低,工資從低到高列出每個(gè)員工的信息 3、過(guò)程與觸發(fā)器必須講,經(jīng)常被面試到 4、數(shù)據(jù)庫(kù)三范式是什么 5、說(shuō)出一些數(shù)據(jù)庫(kù)優(yōu)化方面的經(jīng)驗(yàn) 6、union和unionall有什么不同 分頁(yè)語(yǔ) 用一條SQL語(yǔ)句查詢(xún)出每門(mén)課都大于80分的學(xué)生所有部門(mén)之間的比賽組 每個(gè)月份的發(fā)生額都比101科目多的科 統(tǒng)計(jì)每年每月的信 顯示文章標(biāo)題,發(fā)帖人、最后回復(fù)時(shí) 刪除除了id號(hào)不同,其他都相同的學(xué)生冗余信 航空網(wǎng)的幾個(gè)航班查詢(xún)題 查出比經(jīng)理薪水還高的員工信息 16、求出小于45歲的各個(gè)老師所帶的大于12歲的學(xué)生人 17.求出發(fā)帖最多的人 18、一個(gè)用戶表中有一個(gè)積分字段,假如數(shù)據(jù)庫(kù)中有100第一天凌晨將積分清零,你將考慮什么,你將想什么辦法解決 19、一個(gè)用戶具有多個(gè)角色,請(qǐng)查詢(xún)出該表中具有該用戶的所有角色的其他用戶 20.xxx公司的sql面 21、Jdbc驅(qū)動(dòng)程序的三種方 22、用JDBC如何調(diào)用過(guò) 23、JDBC中的PreparedStatement相比Statement的好 24.寫(xiě)一個(gè)用jdbc連接并oracle數(shù)據(jù)的程序代 25、ClassforName的作用?為什么要用 26、大數(shù)據(jù)量下的分頁(yè)解決方法 27、用JDBC查詢(xún)學(xué)生成績(jī)單,把主要代碼寫(xiě)出來(lái)(考試概率極大 28、這段代碼有什么不足之處 29、說(shuō)出數(shù)據(jù)連接池的工作機(jī)制是什么 30、為什么要用ORM?和JDBC有何不一樣 六.XML部 1、xml有哪些解析技術(shù)?區(qū)別是什么 2、你在項(xiàng)目中用到了xml技術(shù)的哪些方面?如何實(shí)現(xiàn)的 3、用jdom解析xml文件時(shí)如何解決中文問(wèn)題?如何解析 4、編程用JAVA解析XML的方 方式 七.流行的框架與新技 1、談?wù)勀銓?duì)Struts的理解 2、談?wù)勀銓?duì)Hibernate的理解 3、AOP的作用 4、你對(duì)Spring的理解 5、談?wù)凷truts中的Actionservlet 6、Struts優(yōu)缺點(diǎn)優(yōu)點(diǎn):1.實(shí)現(xiàn)MVC模式,結(jié)構(gòu)清晰,使開(kāi)發(fā)者只關(guān)注業(yè)務(wù)邏輯的實(shí) 7、STRUTS的應(yīng)用(如STRUTS架構(gòu) 8、說(shuō)說(shuō)struts1與struts2的區(qū)別 9hibernateupdate()saveOrUpdate()的區(qū)別,sessionload()get()的區(qū)別 10、簡(jiǎn)述Hibernate和JDBC的優(yōu)缺點(diǎn)?如何書(shū)寫(xiě)一個(gè)onetomany配置文件 11、iBatis與Hibernate有什么不同 12、寫(xiě)Hibernate的一對(duì)多和多對(duì)一雙向關(guān)聯(lián)的orm配置 9、hibernate的inverse屬性的作用 13、在DAO中如何體現(xiàn)DAO設(shè)計(jì)模式 14、 中委托方案怎么配置 15、 中委托方案怎么配置 進(jìn)行多表查詢(xún)每個(gè)表中各取幾個(gè)字段,也就是說(shuō)查詢(xún)出來(lái)的結(jié)果集有一個(gè)實(shí)體類(lèi)與之對(duì)應(yīng)如何解決 介紹一下Hibernate的二級(jí)緩 18、Spring的依賴(lài)注入是什么意思?給一個(gè)Bean的message屬性,字符串類(lèi)型,注入值為 o"的XML配置文件該怎么寫(xiě) 19、Jdo是什么 20、什么是spring的IOC 21、STRUTS的工作流程 22、spring與EJB的區(qū)別 八.軟件工程與設(shè)計(jì)模 1、UML方 2、 常用的設(shè)計(jì)模式?說(shuō)明工廠模式 3、開(kāi)發(fā)中都用到了那些設(shè)計(jì)模式?用在什么場(chǎng)合 九.j2ee部 1、BS與CS的聯(lián)系與區(qū)別 2、應(yīng)用服務(wù)器與WEBSERVER的區(qū)別 3、應(yīng)用服務(wù)器有那些 4、J2EE是什么 5、J2EE是技術(shù)還是是框架?什么是 6、請(qǐng)對(duì)以下在J2EE中常用的名詞進(jìn)行解釋(或簡(jiǎn)單描述 7、如何給weblogic指定大小的內(nèi)存 8、如何設(shè)定的weblogic的熱啟動(dòng)模式(開(kāi)發(fā)模式)與產(chǎn)品發(fā)布模式 9、如何啟動(dòng)時(shí)不需輸入用戶名與 10、在weblogic管理制臺(tái)中對(duì)一個(gè)應(yīng)用域(或者說(shuō)是一 )進(jìn)行jms 或連接池等相關(guān)信息進(jìn)行配置后,實(shí)際保存在什么文件中 11、說(shuō)說(shuō)weblogic中一 的缺省目錄結(jié)構(gòu)?比如要將一個(gè)簡(jiǎn)單oWorld.jsp放入何目錄下,然的在瀏覽器上就可打入http://主機(jī):端//oword.jsp就可以看到運(yùn)行結(jié)果了?又比如這其中用到了一個(gè)自己寫(xiě)javaBean該如何辦 12、在weblogic中發(fā)布ejb需涉及到哪些配置文 13、如何在weblogic中進(jìn)ssl配置與客戶端的認(rèn)證配置或說(shuō)說(shuō)j2ee(標(biāo)準(zhǔn))的配置 14、如何查看在weblogic中已經(jīng)發(fā)布的 十.EBJ部 1、EJB是基于哪些技術(shù)實(shí)現(xiàn)的?并說(shuō)出SessionBeanEntityBean的區(qū)別,StatefulBean和StaessBean的區(qū)別 2、簡(jiǎn)要講一下EJB的7個(gè)Transaction 3、EJB與JAVABEAN的區(qū)別 4、 包括(SessionBean,EntityBean)說(shuō)出他們的生命周期,及如何管理事務(wù)的 5、EJB容器提供的服 6、EJB的激活機(jī) 7、EJB的幾種類(lèi) 8、端調(diào)用EJB對(duì)象的幾個(gè)基本步 十一.webservice部 1WEBSERVICE。JSWDL開(kāi)發(fā)包的介紹JAXPJAXM的解釋。SOAPUDDI,WSDL解釋 2、CORBA是什么?用途是什么 4、LINUX下線程,GDI類(lèi)的解釋 5.問(wèn)得稀里糊涂的 6、四種會(huì)話技 7、簡(jiǎn)述邏輯操作(&,|,^)與條件操作(&&,||)的區(qū)別 十二.其 1、請(qǐng)用英文簡(jiǎn)單介紹一下自 2、請(qǐng)把首頁(yè)的這一段話用中文翻譯一下 3、美資軟件公司JAVA工程師面試題 這套面試題主要目的是幫助那些還沒(méi)有javajava軟件開(kāi)發(fā)工答題時(shí),先答是什么,再答有什么作用和要注意什么(這部分最重要,展現(xiàn)自己的心得別因?yàn)槿思翌}目本來(lái)就模棱兩可,你就心里膽怯和沒(méi)底氣了,不敢回答了。你要大膽地對(duì)方題目1.Java語(yǔ)法,集合的語(yǔ)法,io的語(yǔ)法,虛擬機(jī)方面的語(yǔ)法。1、一個(gè)".java"源文件中是否可以包括多個(gè)類(lèi)(不是內(nèi)部類(lèi)?有什么public的類(lèi),并且public2、Javajava中的保留字,現(xiàn)在沒(méi)有在java中使用3、說(shuō)說(shuō)&和&&的區(qū)別整個(gè)運(yùn)算結(jié)果才為true,否則,只要有一方為false,則結(jié)果為false。&&!str.equals(“”))strnullNullPointerException如果將&&改為&NullPointerException異常。If(x==33&y>0)y會(huì)增長(zhǎng),If(x==33&&y>0)4、在 中如何跳出當(dāng)前的多重嵌套循環(huán)使用帶有標(biāo)號(hào)的break語(yǔ)句,即可跳出外層循環(huán)。例如,for(inti=0;i<10;i++){for(intj=0;j<10;j++)intln(“i=”+i+“,j=”+j);if(j==5)breakok;}}intarr[][]=booleanfound=for(inti=0;i<arr.length&&{for(intj=0;j<arr[i].length;j++){System.out.println(“i=”+i+“,j=”+j);if(arr[i][j]==5){}}}否作用在String上?Integer包裝類(lèi)型,由于,byte,short,charint,所以,這些類(lèi)型以及這些類(lèi)型類(lèi)型,所以,它們不能作用于swtich語(yǔ)句中。6、shorts1=1;s1=s1+1;有什么錯(cuò)?shorts1=1;s1+=有什么錯(cuò)shorts11;s1=s1+1;s1+1int型,再賦值給short類(lèi)型s1時(shí),編譯器將報(bào)告需要強(qiáng)制轉(zhuǎn)換類(lèi)型的錯(cuò)誤。shorts11;s1+=1;+=java語(yǔ)言規(guī)定的運(yùn)算符,java編譯器會(huì)對(duì)它進(jìn)行特殊處理,因此7、 型變量中能不能存貯一個(gè)中文漢字?為什么char型變量是用來(lái)Unicode編碼的字符的,unicode編碼字符集中包含了漢字,所以,char型變量中當(dāng)然可以漢字啦。不過(guò),如果某個(gè)特殊的漢字沒(méi)有被包含在unicode編碼字符集中,那么,這個(gè)char型變量中就不能這個(gè)特殊漢字。補(bǔ)充說(shuō)明:unicode編碼占用兩個(gè)字節(jié),所以,char類(lèi)型的變量也是占用8、用最有效率的方法算28等於幾2<<因?yàn)閷⒁粋€(gè)數(shù)左移n2n83位即可,而位運(yùn)算cpu直接支持的,效率最高,所以,28等於幾的最效率的方法是2<<3。9、請(qǐng)?jiān)O(shè)計(jì)一個(gè)一百億的計(jì)算為-128到+127。-1在內(nèi)存中對(duì)應(yīng)的二進(jìn)制數(shù)據(jù)為,如果兩個(gè)-1相加,不考慮Java運(yùn)算時(shí)的類(lèi)型提升,運(yùn)算后會(huì)產(chǎn)生進(jìn)位,二進(jìn)制結(jié)果為1, ,由于進(jìn)位后超過(guò)了byte類(lèi)型的空間,所以進(jìn)位部為,也就是-2,這正好利用溢位的方式實(shí)現(xiàn)了負(fù)數(shù)的運(yùn)算。-128在內(nèi)存為8慮a,為, 了byte類(lèi)型的空間,所以進(jìn)位部分被舍棄,即最終的結(jié)果為是0,樣的結(jié)果顯然不是我們期望的,這說(shuō)明計(jì)算機(jī)中的算術(shù)運(yùn)算是會(huì)發(fā)生越界情況的,兩個(gè)數(shù)值的運(yùn)算結(jié)果過(guò)計(jì)算機(jī)中的該類(lèi)型的數(shù)值范圍。于Java中涉表達(dá)式運(yùn)算時(shí)的類(lèi)型自用byte類(lèi)型來(lái)做演示這種問(wèn)題和現(xiàn)象的實(shí)驗(yàn),大家可以用下面一個(gè)使用整數(shù)做實(shí)驗(yàn)的例:inta=Integer.MAX_VALUE;intb=Integer.MAX_VALUE;intsum=a+b;先不考long類(lèi)型,由于int的正數(shù)231次方,表示的最大數(shù)值約等2*1000*1000*1000,publicBigInteger{intbyte[]val){sign=;val=}publicBigIntegeradd(BigIntegerother)}publicBigIntegersubtract(BigIntegerother)}publicBigIntegermultiply(BigInteger}publicBigIntegerdivide(BigInteger}}備注:要想寫(xiě)出這個(gè)類(lèi)的完整代碼,是非常復(fù)雜的,如果有的話,可以參看jdk中自帶的javamath.BigInteger類(lèi)的源碼。面試的人也知道誰(shuí)都不可能在短時(shí)間內(nèi)寫(xiě)出這個(gè)類(lèi)的完整代碼的,他要的精準(zhǔn),這也是能力、經(jīng)驗(yàn)、專(zhuān)業(yè)性、英語(yǔ)水多個(gè)方面的體現(xiàn),會(huì)給人留下很好的印象,在編程能力和10、使用final關(guān)鍵字修飾一個(gè)變量時(shí),是不能變,還是的對(duì)象不能變?finalStringBuffera=newa=newa.append("publicvoidmethod(finalStringBuffer}11、"=="和equals方法究竟有什么區(qū)別否相同,要比較兩個(gè)基本類(lèi)型的數(shù)據(jù)或兩個(gè)變量是否相等,只能用==操作符。存,此時(shí),變量obj所對(duì)應(yīng)的內(nèi)存中的數(shù)值就是對(duì)象占用的那塊內(nèi)存的首地址。對(duì)于指向?qū)ο箢?lèi)型的equals方法是用于比較兩個(gè)獨(dú)立對(duì)象的內(nèi)容是否相同,就好比去比較兩個(gè)人的長(zhǎng)相是否相同,它比較Stringa=newStringb=newnewa,b這兩個(gè)變量分別指向了其中一個(gè)對(duì)象,這是兩個(gè)不同的對(duì)象,它們的首地址是不同的,即a和b中的數(shù)值是不相同的,所以,表達(dá)式a==b將返回false,而這兩個(gè)對(duì)象中的內(nèi)容是相同的,所以,表達(dá)式a.equals(b)將返回true。在實(shí)際開(kāi)發(fā)中,我們經(jīng)常要比較傳遞進(jìn)行來(lái)的字符串內(nèi)容是否等,例如,String的教學(xué)看看,里面就有大量這樣的錯(cuò)誤。記住,字符串的比較基本上都是使用equals方法。o){return}equalsequals方法(Object類(lèi)繼承的)就是使象的內(nèi)容是否相同,那么你必須覆蓋equals方法,由你自己寫(xiě)代碼來(lái)決定在什么情況即可認(rèn)為兩個(gè)對(duì)象的12、靜態(tài)變量和實(shí)例變量的區(qū)別總之,實(shí)例變量必須創(chuàng)建對(duì)象后才可以通過(guò)這個(gè)對(duì)象來(lái)使用,靜態(tài)變量則可以直接使用類(lèi)名來(lái)。例如,對(duì)于下面的程序,無(wú)論創(chuàng)建多少個(gè)實(shí)例對(duì)象,都只分配了一個(gè)staticVar變量,并且每創(chuàng)建instanceVarinstanceVar1次。publicclasspublicintinstanceVar=0;publicVariantTest(){}}13、是否可以從static方法內(nèi)部發(fā)出static方法的staticstaticstatic方法是關(guān)聯(lián)到哪個(gè)對(duì)象上的呢?這個(gè)邏輯無(wú)法成立,所以,一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用。14、Integerint的區(qū)intjava8種原始數(shù)據(jù)類(lèi)型之一。Java為每個(gè)原始類(lèi)型提供了封裝類(lèi),Integerjavaint提供的封裝類(lèi)。int0IntegernullInteger0的區(qū)別,JSP開(kāi)發(fā)中,Integernullel表達(dá)式在文本框中顯示時(shí),值為空白字符串,而int默認(rèn)的默Hibernate中,如果將OID定義為Integer類(lèi)型,那么Hibernate就可以根據(jù)其值是否為null而判斷一個(gè)對(duì)象是否是臨時(shí)的,如果將OID定義為int類(lèi)型,還需要hbm映射文件中設(shè)置其unsaved-value屬性0。另外,Integer提供了多個(gè)與整數(shù)相關(guān)的操作方法,例如,將一個(gè)字符串轉(zhuǎn)換成整數(shù),Integer中還定義15、Math.round(11.5)等於多少M(fèi)ath.round(-11.5)等於多Math類(lèi)中提供了三個(gè)與取整有關(guān)的方法:ceil、floor、round,這些方法的作用與它們的英文名稱(chēng)的含義相對(duì)應(yīng),例如,ceil的英文意義是天花板,該方法就表示向上取整,Math.ceil(11.3)的結(jié)果為0.5后再向下取整,所以,Mathround(11.5)12,Mathround(-11.5)的16、下面的代碼有什么不妥之處intx=return17、請(qǐng)說(shuō)出作用域public,private,protected,以及不寫(xiě)時(shí)作用 當(dāng)前類(lèi)同一package子孫類(lèi)其他√√√√√√√×√√××private√××備注:只要記住了有4種權(quán)限,4個(gè)范圍,然后將全選和范圍在水平和垂直方向上分別按排18、OverloadOverride的區(qū)別。Overloaded的方法是否Overload是重載的意思,Override是覆蓋的意思,也就是重寫(xiě)Override表示子類(lèi)中的方法可以與父類(lèi)中的某個(gè)方法的名稱(chēng)和參數(shù)完全相同,通過(guò)子類(lèi)創(chuàng)建的實(shí)者是拋出父類(lèi)拋出的異常的子異常,因?yàn)樽宇?lèi)可以解決父類(lèi)的一些問(wèn)題,不能比父類(lèi)有的問(wèn)題。子類(lèi)糊。如果幾個(gè)Overloaded的方法的參數(shù)列表不一樣,它們的返回者類(lèi)型當(dāng)然也可以不一樣。但我估計(jì)你想問(wèn)的問(wèn)題是:如果兩個(gè)方法的參數(shù)列表完全一樣,是否可以讓它們的返回值不同來(lái)實(shí)現(xiàn)重載Overload。這mapremove(key)remove方法有返回值,但是僅是返回類(lèi)型不同,java就無(wú)法確定編程者倒底是想調(diào)用哪個(gè)方法了,因?yàn)樗鼰o(wú)法通過(guò)返回結(jié)果類(lèi)型來(lái)判override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個(gè)方法并且對(duì)其重寫(xiě),以求達(dá)到不1、覆蓋的方法的標(biāo)志必須要和被覆蓋的方法的標(biāo)志完全匹配,才能達(dá)到覆蓋的效2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一3、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子4、被覆蓋的方法不能為private,否則在其子類(lèi)中只是新定義了一個(gè)方法,并沒(méi)有對(duì)其進(jìn)行覆veodM1、在使用重載時(shí)只能通過(guò)不同的參數(shù)樣式。例如,不同的參數(shù)類(lèi)型,不同的參數(shù)個(gè)數(shù),不同的參數(shù)順序(當(dāng)然,同一方法內(nèi)的幾個(gè)參數(shù)類(lèi)型必須不一樣,例如可以是fitfa),fitn);2、不能通過(guò)權(quán)限、返回類(lèi)型、拋出的異常進(jìn)行重載3、方法的異常類(lèi)型和數(shù)目不會(huì)對(duì)重載造4、對(duì)于繼承來(lái)說(shuō),如果某一方法在父類(lèi)中是權(quán)限是priavte,那么就不能19、構(gòu)造Constructor是否可20、接口是否可繼承接口?抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口?抽象類(lèi)是否可繼承具體類(lèi)(concreteclass)?抽象類(lèi)中是否可以有靜態(tài)的main方法?態(tài)的main方法。只有記住抽象類(lèi)與普通類(lèi)的唯一區(qū)別就是不能創(chuàng)建實(shí)例對(duì)象和允許有21、寫(xiě)clone()方法時(shí),通常都有一行代碼,是什么clone有缺省行為,super.clone();因?yàn)槭紫纫迅割?lèi)中的成員到位,然后才是自己的成員22、面向?qū)ο蟮奶卣饔心男┓?封裝是保證軟件部件具有優(yōu)良的模塊性的基礎(chǔ),封裝的目標(biāo)就是要實(shí)現(xiàn)軟件部件的“高內(nèi)聚、低為的代碼封裝在一個(gè)“模塊”中,也就是一個(gè)類(lèi)中,屬性用變量定義,行為用方法進(jìn)行定義,方法可以直接同一個(gè)對(duì)象中的屬性。通常情況下,只要記住讓變量和這個(gè)變量的方法放在一起,將一個(gè)類(lèi)中的成員變量全部定義成私有的,只有這個(gè)類(lèi)自己的方法才可以到這些成員變量,這就基本上實(shí)現(xiàn)對(duì)象的封裝,就很容易找出要分配到這個(gè)類(lèi)上的方法了,就基本上算是會(huì)面向?qū)ο蟮木幊塘?。把握一個(gè)原則:把對(duì)同一事物進(jìn)行操作的方法和相關(guān)的方法放在同一個(gè)類(lèi)中,把方法和它操作的數(shù)據(jù)放在同一個(gè)類(lèi)中由于畫(huà)圓需要使用到圓心和半徑,圓心和半徑顯然是圓的屬性,如果將它們?cè)陬?lèi)中定義成了私有的成員變量,那么,畫(huà)圓的方法必須分配給圓,它才能到圓心和半徑這兩個(gè)屬性,人以后只是調(diào)用圓的畫(huà)圓方法、表示給圓發(fā)給消息而已,畫(huà)圓這個(gè)方法不應(yīng)該分配在人這個(gè)對(duì)象上,這就是面向?qū)ο蟮姆庋b性,即將對(duì)象封裝成一個(gè)高度自治和相對(duì)封閉的,對(duì)象狀態(tài)(屬性)由這個(gè)對(duì)象自己的行為(方法)來(lái)和改變。一個(gè)更便于理解的例子就是,將火車(chē)剎住了,剎車(chē)的動(dòng)作是分配給,還是分配給火車(chē),顯然,應(yīng)該分配給火車(chē),因?yàn)樽陨硎遣豢赡苡心敲创蟮牧鈱⒁粋€(gè)火車(chē)給停下來(lái)的,只有火車(chē)自己才能完成這一動(dòng)作,火車(chē)需要調(diào)用內(nèi)部的離合器和剎車(chē)片等多個(gè)器件協(xié)作才能完成剎車(chē)這個(gè)動(dòng)作,剎車(chē)的過(guò)程只是給火車(chē)發(fā)了一個(gè)消息,通知火車(chē)要執(zhí)行剎車(chē)動(dòng)作而已。似共性,且會(huì)與前目無(wú)關(guān)些面,意集中當(dāng)目標(biāo)關(guān)個(gè)類(lèi),如下:classintage;}人本來(lái)是很復(fù)雜的事物,有很多方面,但因?yàn)楫?dāng)前系統(tǒng)只需要了解人的和,所以上面定繼承多態(tài)多態(tài)是指程序中定義的變量所指向的具體類(lèi)型和通過(guò)該變量發(fā)出的方法調(diào)用在編程時(shí)并類(lèi)這樣用改源代從下面代碼中的so是一個(gè)接口,它定義變量uso指向的實(shí)例對(duì)象由daoacoeaoserdbcDaoserHbenaeDaouseraouseraonsetser(dbcDao的nseUserserHbenaeDao的nseserUserDaouserDao=比喻:人吃飯,你看到的是左手,還是右23、 中實(shí)現(xiàn)多態(tài)的機(jī)制是什么靠的是父類(lèi)或接口定義的變量可以指向子類(lèi)或具體實(shí)現(xiàn)類(lèi)的實(shí)例對(duì)象,而程序調(diào)用的方法在的方法,而不是變量的類(lèi)型中定義的方法。 class和interface有什么區(qū)別含有修飾符的class即為抽象類(lèi),類(lèi)不能創(chuàng)建的實(shí)例對(duì)象。含有方法的類(lèi)必須定義為class,class類(lèi)中的方法不必是抽象的。class類(lèi)中定義抽象方法必須在具體有抽象方法,那么子類(lèi)也必須定義為類(lèi)型。義默認(rèn)為public 類(lèi)型,接口中的成員變量類(lèi)型默認(rèn)為publicstaticfinal。抽象類(lèi)中的抽象方法的類(lèi)型可以是public,protected和(默認(rèn)類(lèi)型,雖中定義的變量只能是publicstaticfinal類(lèi)型,并且默認(rèn)即為publicstaticfinal類(lèi)型。一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類(lèi)接口的是在系統(tǒng)架構(gòu)設(shè)計(jì)方法發(fā)揮作用,主要用于定義模塊之間的通信契約。而抽象類(lèi)在代碼實(shí)的基類(lèi),讓所有的Servlet都繼承這個(gè)抽象基類(lèi),在抽象基類(lèi)的service方法中完成權(quán)限判斷、記錄日 classBaseServletextendspublicfinalvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throws 限}catch(Excetpion }}} voiddoService(HttpServletRequestrequest,HttpServletResponseresponse)throws}publicclassMyServlet1extends{protectedvoiddoService(HttpServletRequestrequest,HttpServletResponseresponse)throws{}} 的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized?它也不能是抽象的,不能與混用。例如,F(xiàn)ileOutput 作系統(tǒng)相關(guān)的api實(shí)現(xiàn),例如,在windows用c語(yǔ)言實(shí)現(xiàn)的,所以,查看jdk的源代碼,可以發(fā)現(xiàn)FileOutputStream的open方法的定義如下:privatenativevoidopen(Stringname)throws如果我們要用java調(diào)用別人寫(xiě)的c語(yǔ)言函數(shù),我們是無(wú)法直接調(diào)用的,我們需要按照java的要求寫(xiě)一個(gè)c語(yǔ)言的函數(shù),又我們的這個(gè)c語(yǔ)言函數(shù)去調(diào)用別人的c語(yǔ)言函數(shù)。由于我們的c語(yǔ)言函數(shù)是java的c語(yǔ)言函數(shù)就可以與java對(duì)接上,javac函數(shù)相對(duì)應(yīng)的方法,java中對(duì)應(yīng)的方法不需要寫(xiě)具體的代碼,但需要面native。關(guān)于synchronized與合用的問(wèn)題,我覺(jué)得也不行,因?yàn)樵谖規(guī)啄甑膶W(xué)習(xí)和開(kāi)發(fā)中,從來(lái)沒(méi)見(jiàn)到過(guò)這種情況,并且我覺(jué)得synchronized應(yīng)該是作用在一個(gè)具體的方法上才有意義。而且,方法上的synchronized同步所使用的同步鎖對(duì)象是this,而抽象方法上無(wú)法確定this是什么。26什么是內(nèi)部類(lèi)?StaticNestedClassInnerClass的不過(guò)分了??!提供內(nèi)部類(lèi),不是為讓你干這種事情,無(wú)聊,不讓你干??赡苁羌热混o態(tài)成員類(lèi)似c語(yǔ)言publicclass{intout_x=0;{Inner1inner1=newpublicclass {public{out_x=}}Inner2inner2=new}publicclass {}}在方法體外面定義的內(nèi)部類(lèi)的類(lèi)型可以是public,protecte,默認(rèn)的,private等4種類(lèi)型,這就好像類(lèi)中定義的成員變量有4種類(lèi)型一樣,它們決定這個(gè)內(nèi)部類(lèi)的定義對(duì)其他類(lèi)是否可見(jiàn);對(duì)于這種情況,Outerouter=new部類(lèi)的前面可以使用final或修飾符。這種內(nèi)部類(lèi)對(duì)其他類(lèi)是不可見(jiàn)的其他類(lèi)無(wú)法這種內(nèi)部類(lèi),但類(lèi)可以方法體中的局部變量,但是,該局部變量前必須加final修飾符。publicclass{publicvoid{newnewpublicvoid}}}內(nèi)部類(lèi)的特性,所有,從狹義上講,它不是內(nèi)部類(lèi)。StaticNestedClass與普通類(lèi)在運(yùn)行時(shí)的行為和功能上沒(méi)有什么區(qū)別,只是在編程時(shí)的語(yǔ)法上有一些差別,它可以定義成public、protected、默認(rèn)的、private等多種類(lèi)型,而普通類(lèi)只能定義成public和默認(rèn)的這兩種類(lèi)型。在外面StaticNestedClass類(lèi)的名稱(chēng)為Inner是定義在Outer類(lèi)中的StaticNestedClass,那么可以使用如下語(yǔ)句創(chuàng)建Inner類(lèi):Outer.Innerinner=new由于staticNestedClass不依賴(lài)于外部類(lèi)的實(shí)例對(duì)象,所以,staticNestedClass能外部類(lèi)的非static成員變量。當(dāng)在外部類(lèi)中StaticNestedClass時(shí),可以直接使用StaticNestedClass的名字,而不需要加上外部類(lèi)的名字了,在StaticNestedClass中也可以直接外部類(lèi)的static的成員變量,不需要加上外部的StaticNestedClass與普通方法中的內(nèi)部類(lèi)的應(yīng)用方式很相似,它除了可以直接外部類(lèi)中的static的成員變量,還可以靜態(tài)方法中的局部變量,但是,該局部變量前必須加final修飾符。方式的語(yǔ)法區(qū)別,靜態(tài)內(nèi)部類(lèi),以及內(nèi)部類(lèi)。27、內(nèi)部類(lèi)可以它的包含類(lèi)的成員嗎?有沒(méi)有什么限class{staticintstaticclass{void{}}}28AnonymousInnerClass(匿名內(nèi)部類(lèi))是否可以extends()implements(實(shí)可以繼承其他類(lèi)或?qū)崿F(xiàn)其他接口。不僅是可以,而是必須29、super.getClass()方法調(diào)下面程序的輸出結(jié)果是多少importpublicclassTestextendspublicstaticvoidmain(String[]args)new}publictest(){}}很奇怪,結(jié)果是這屬于腦筋急轉(zhuǎn)彎的題目,在qq群有個(gè)網(wǎng)友正好問(wèn)過(guò)這個(gè)問(wèn)題,我覺(jué)得挺有趣,就研究了test方法中,直接調(diào)用getClass().getName()方法,返回的是Test由于getClass()在Object類(lèi)中定義成了final,子類(lèi)不能覆蓋該方法,所以,方法,等效于調(diào)用super.getClass().getName()方法,所以,)。eCassetSupeass()eame30、 是最基本的數(shù)據(jù)類(lèi)型嗎基本數(shù)據(jù)類(lèi)型包括byte、int、char、long、float、double、boolean和short。效率節(jié)省空間,我們應(yīng)該用StringBuffer31、Strings="o";s=s+"world!";這兩行代碼執(zhí)行后,原始的String對(duì)象中的內(nèi)容到底變了沒(méi)有?沒(méi)有。因?yàn)镾tring被設(shè)計(jì)成不可變(immutable)類(lèi),所以它的所有對(duì)象都是不可變對(duì)象。在這段代碼中,s原先指向一個(gè)String對(duì)象,內(nèi)容是" o",然后我們對(duì)s進(jìn)行了+操作,那指向了另一個(gè)String對(duì)象,內(nèi)容為" oworld!",原來(lái)那個(gè)對(duì)象還存在于內(nèi)存之中,只是s這個(gè)變量不再指向它了。ingrngrngrnBuer同時(shí),我們還可以知道,如果要使用內(nèi)容相同的字符串,不必每次都new一個(gè)String。例如我們要在構(gòu)造器中對(duì)一個(gè)名叫s的String變量進(jìn)行初始化,把它設(shè)置為初始值,應(yīng)當(dāng)這publicclass{privateStringpublicDemos="Initial}}而s=newString("Initial多次調(diào)用上面的構(gòu)造器創(chuàng)建多個(gè)對(duì)象,他們的String類(lèi)型屬性s都指向同一個(gè)對(duì)象。上面的結(jié)論還基于這樣一個(gè)事實(shí):對(duì)于字符串常量,如果內(nèi)容相同,Java認(rèn)為它們代表同一String對(duì)象。而用關(guān)鍵字new調(diào)用構(gòu)造器,總是會(huì)創(chuàng)建一個(gè)新的對(duì)象,無(wú)論內(nèi)容是否相同個(gè)對(duì)象來(lái)代表,可能會(huì)造能上的問(wèn)題。所以Java標(biāo)準(zhǔn)類(lèi)庫(kù)還提供了一個(gè)可變版本,即32、是否可以繼String類(lèi)Stringfinal類(lèi)故不可以二者之間有什么區(qū)別兩個(gè)或一個(gè),z”對(duì)應(yīng)一個(gè)對(duì)象,這個(gè)對(duì)象放在字符串常量緩沖區(qū),常量z”不管出現(xiàn)ewtrng量z”對(duì)象的內(nèi)容來(lái)創(chuàng)建出一個(gè)新rng對(duì)象。如果以前就用過(guò)z’,這句代表就不會(huì)創(chuàng)建”z34、StringStringBuffer的區(qū)JAVA平臺(tái)提供了兩個(gè)類(lèi):String和StringBuffer,它們可以和操作字符串,即包含多StringStringBuffer類(lèi)提供的字符串進(jìn)行修改。當(dāng)你知道字符數(shù)據(jù)要改變的時(shí)候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來(lái)動(dòng)態(tài)構(gòu)造字符數(shù)據(jù)。另外,String實(shí)現(xiàn)了equals方法,newString(“abc”).equals(newString(“abc”)的結(jié)果為true,而StringBuffer沒(méi)有實(shí)現(xiàn)equals方法,所以,newStringBuffer(“abc”).equals(newStringBuffer(“abc”)的結(jié)果為false。StringBuffersbf=newStringBuffer();for(inti=0;i<100;i++){}上面的代碼效率很高,因?yàn)橹粍?chuàng)建StringBuffer對(duì)象,而下面的代碼效率很低,因?yàn)閯?chuàng)101個(gè)對(duì)象。Stringstr=newString();for(inti=0;i<100;i++){str=str+}在講兩者區(qū)別時(shí),應(yīng)把循環(huán)的次數(shù)搞10000,然后endTime-beginTime來(lái)比較兩者執(zhí)行的時(shí)間差異,最后還要StringBuilderStringBuffer的區(qū)別。StringequalshashCode方法StringBuffer沒(méi)有equals方法,所以,將StringBuffer對(duì)象進(jìn)Java集合類(lèi)中時(shí)會(huì)出現(xiàn)問(wèn)題35、如何把一段逗號(hào)分割的字符串轉(zhuǎn)換成一個(gè)數(shù)組用正則表達(dá)式,代碼大概為:StringresultStingTokenizer代碼為:StringTokenizertokenerStringTokenizer(orgStr,”,”);String[]result=newString[tokener.countTokens()];Int數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,有l(wèi)ength的屬性。Stringlength()這個(gè)方37、下面這條語(yǔ)句一共創(chuàng)建了多少個(gè)對(duì)象:StringStrings1="a";Strings2=s1+"b";Strings3"a""b";第一條語(yǔ)句打印的結(jié)果為false,第二條語(yǔ)句打印的結(jié)果為true,這說(shuō)明javac編譯可以對(duì)”bcrngStrings="a"+"b"+"c"+"d";System.out.println(s==最終打印的結(jié)果應(yīng)該為true38、try{}里有一return語(yǔ)句,那么緊跟在這try后的finally{}里的code會(huì)不會(huì)被執(zhí)行什么時(shí)候被執(zhí)return前publicclassTest*@paramargsaddbyzxx,Dec9,publicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstub}staticint{intx={return}{}}}執(zhí)行結(jié)11,為什么呢?主函數(shù)調(diào)用子函數(shù)并得到結(jié)果的過(guò)程,好比主函數(shù)準(zhǔn)備一個(gè)空罐子,當(dāng)子函數(shù)要返回結(jié)果時(shí),先把結(jié)果放在罐子里,然后再將程序邏輯返回到主函數(shù)。所謂返回,就是子函39、下面的程序代碼輸出的結(jié)果是多少public {publicstatic main(String{smallTt =new }public {{}

return1{return2}}}返回的結(jié)果是2finally2。Returnreturn語(yǔ)句執(zhí)行后,將把返回結(jié)果放置進(jìn)函數(shù)棧中,此時(shí)函數(shù)并不是馬上返回,它要執(zhí)行finally語(yǔ)在講解答案時(shí)可以用下面的程序來(lái)幫助分publicclassTest*@paramargsaddbyzxx,Dec9,publicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstub}int{{}

return{return}}int{return}int{return}}執(zhí)行結(jié)40、final,finally,finalize的區(qū)別內(nèi)部類(lèi)要局部變量,局部變量必須定義成final類(lèi)型,例如,一段代碼…… 是異常處理語(yǔ)句結(jié)構(gòu)的一部分,表示總是執(zhí)行finalize是Oject類(lèi)的一方法,在收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法可以覆蓋此方法提供收集時(shí)的其他資源回收,例如關(guān)閉文件等。JVM不保證此方41、運(yùn)行時(shí)異常與一般異常有何異同異常,但是并不要求必須拋出未獲的運(yùn)行時(shí)異常42、errorexception有什么區(qū)別error表示恢復(fù)不是不可能但很的情況下的一種嚴(yán)重問(wèn)題。比如說(shuō)內(nèi)存溢出。不可能指望程序能處理這樣的情況。exception表示一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題。也就是說(shuō),它表示如果程43、Java中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用異常是指aa程序運(yùn)行時(shí)(非編譯)所發(fā)生的情況或錯(cuò)誤,與現(xiàn)實(shí)生活中的事件很aaaa對(duì)異常進(jìn)行了分類(lèi),不同類(lèi)型的異常分別用不同的aa類(lèi)表示,所有異常的根類(lèi)為aaan.hoabe,hoabe下面又派生了兩個(gè)子類(lèi):or和xepon,ror表示應(yīng)鎖等系統(tǒng)問(wèn)題。xcpon表示程序還能夠克服和恢復(fù)的問(wèn)題,其中又分為系統(tǒng)異常和普通掉,例如,數(shù)組越界(andexuOBoundcepon,空指針異常(uPonexcepon、類(lèi)轉(zhuǎn)換異常(assatExcpon;普通異常是運(yùn)行環(huán)境的變化或javatry..catch處理或用throws繼續(xù)拋給上層調(diào)用方法處理,所以普通異常也稱(chēng)為checked異常,而系統(tǒng)異??梢蕴幚硪部梢圆惶幚?,所以,編譯器不強(qiáng)制用try..catch處理或用throws,所以系統(tǒng)異常也稱(chēng)為unchecked異常。44、請(qǐng)寫(xiě)出你最常見(jiàn)5runtimeexception這道題主要考你的代碼量到底多大,如果你長(zhǎng)期寫(xiě)代碼的,應(yīng)該經(jīng)常都看到過(guò)一些系統(tǒng)方面的異常,5所謂系統(tǒng)異常,就是…..RuntimeExceptionjdkdocRuntimeException類(lèi),就可以看到其所有的子類(lèi)列表,也就是看到了所有的系統(tǒng)異常。我比較有印象的系統(tǒng)異常有:45、JAVAthrows,throw,try,catch,finally分別代表什么try塊throws表示將異常拋還給上級(jí)處理,throw表示捕獲異常在try中不可以拋出異常46java中有幾種方法可以實(shí)現(xiàn)一個(gè)線程?用什么關(guān)鍵字修飾同步方法?stop()suspend()方法為何不推薦使用?java5以前,有如下兩種第一種:繼承Threadrun方法不可有拋異常,沒(méi)有返回newThread(){}.start();Threadrun方法,newThread(){}表示一個(gè)Thread的子類(lèi)的實(shí)例對(duì)象,子類(lèi)加上run方法后的代碼如下:Thread(){publicvoidrun(){}第二種:實(shí)現(xiàn)Runnable接口實(shí)現(xiàn)run方法,不可以拋異常,沒(méi)有返回newThread(newRunnable(){}).start();這表示調(diào)用Thread對(duì)象接受的Runnable對(duì)象的run方法,newRunnable(){}表示一個(gè)Runnable的子類(lèi)的實(shí)例對(duì)象,runnable的子類(lèi)加上run方法后的代碼如下:newThread(newpublicvoid}}Callable<T>call()方法,可以拋異常,可以有返回值java5開(kāi)始,還有如下一些線程池創(chuàng)建多線程的方式:ExecutorServicepool=ExecutorsnewFixedThreadPool(3)for(int{pool.execute(newRunable(){publicvoid}ExecutorsnewCachedThreadPool().execute(newRunable(){publicvoidrun(){}});ExecutorsnewSingleThreadExecutor().execute(newRunable(){publicvoidrun(){}});有兩種實(shí)現(xiàn)方法,分別使用newThread()和newThread(runnable)形式,第一種直接調(diào)用threadrun方法,所以,我們往Thread子類(lèi)newSubThread()。第二種調(diào)用runnable的run方法。有兩種實(shí)現(xiàn)方法,分別是繼承Thread類(lèi)與實(shí)現(xiàn)Runnable接口用synchronized關(guān)鍵字修飾同步方法使用op(),是因?yàn)樗话踩?。它?huì)解除由線程獲取的所有鎖定,而且如果對(duì)象處于一種不連貫狀態(tài),那么其他線程能在那種狀態(tài)下檢查和修改它們。結(jié)果很難檢查出真正的問(wèn)題所在。uped()方法容易發(fā)生死鎖。調(diào)用upen()的時(shí)候,目標(biāo)線程會(huì)停下來(lái),但卻仍然持有在這之前獲得的鎖定。此時(shí),其他任何線程都不能鎖定的資源,除非被"掛起"的線程恢復(fù)運(yùn)行。對(duì)任何線程來(lái)說(shuō),如果它們想恢復(fù)目標(biāo)線程,同時(shí)又試圖使用任何一個(gè)鎖定的資源,就會(huì)造成死鎖。所以不應(yīng)該使用uped(),而應(yīng)在自己的head該掛起,便用at()命其進(jìn)入等待狀態(tài)。若標(biāo)志線程應(yīng)當(dāng)恢復(fù),則用一個(gè)no)重47、sleep()wait()有什么區(qū)別(網(wǎng)上的答案:eep是線程類(lèi)(head)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行機(jī)會(huì)給其他線程,但是狀態(tài)依然保持,到時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用eep不會(huì)釋放對(duì)at是bectatnoy(或noAl后本線程才進(jìn)入對(duì)象)eep就是正在執(zhí)行的線程主動(dòng)讓出pu,pu去執(zhí)行其他線程,在eep指定的時(shí)間過(guò)cpueep方法并不會(huì)釋放鎖,即使當(dāng)前線程使用eep方法讓出了pu,但其他被同步鎖擋住了的線程也無(wú)法得atnoy方法(noy并不釋放鎖,只是告訴調(diào)用過(guò)at方法的線程可以去參與獲得鎖的競(jìng)爭(zhēng)了,但不是馬上得到鎖,因noynoyait方法的線程就會(huì)解除atatpackage publicclassMultiThread*@parampublicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstubnewThread(newThread1()).start();try{}catch(InterruptedExceptione)//TODOAuto-generatedcatchblock}newThread(new}privatestaticclassThread1implements{publicvoidrun()//TODOAuto-generatedmethod內(nèi)部能用s里System.out.println("enterthread1...");System.out.println("thread1iswaiting");try//釋放鎖有兩種方式,第式是程序自然離開(kāi)監(jiān)視器的范圍,也就是離開(kāi)了synchronized關(guān)鍵字管轄的代碼范圍,另式就是在synchronized關(guān)鍵字管轄的代碼}catch(InterruptedExceptione)//TODOAuto-generatedcatchblock}System.out.println("thread1isgoingon...");System.out.println("thread1isbeing}}}privatestaticclassThread2implements{publicvoidrun()//TODOAuto-generatedmethodsynchronized{System.out.println("enterSystem.out.println("thread2notifyotherthreadcanreleasewaitstatus..");//由于notify方法并不釋放鎖 即使thread2調(diào)用下面的sleep方法休息了10毫秒,thread1仍然不會(huì)執(zhí)行,因?yàn)閠hread2沒(méi)有釋放鎖,所以Thread1無(wú)法得不System.out.println("thread2issleeten{}catch(InterruptedExceptione)//TODOAuto-generatedcatchblock}System.out.println("thread2isgoingon...");System.out.println("thread2isbeing}}}}下面兩個(gè)方法同步嗎?(自己發(fā)明class{synchronizedstaticvoid {}synchronizedvoid}50、多線程有幾種實(shí)現(xiàn)方法?同步有幾種實(shí)現(xiàn)方法同步的實(shí)現(xiàn)方面有兩種,分別是synchronized,wait與notifywait():使一個(gè)線程處于等待狀態(tài),并且釋放所持有的對(duì)象 locksleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常。某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程,而且不是按優(yōu)先級(jí)。lno():51、啟動(dòng)一個(gè)線程是run()start()?a()方法,使線程就緒狀態(tài),以后可以被調(diào)度為運(yùn)行狀態(tài),一個(gè)un52、當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一synchronized方法后,分幾種情況其他方法前是否加了synchronized關(guān)鍵字,如果沒(méi)加如果這個(gè)方法內(nèi)部調(diào)用了wait,則可以進(jìn)入其他synchronized如果其他個(gè)方法都加了synchronized關(guān)鍵字,并且內(nèi)部沒(méi)有調(diào)用waitachs。53、線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的程上都關(guān)聯(lián)有要執(zhí)行的代碼,即可以有多段程序代碼同時(shí)運(yùn)行,每個(gè)程序至少都有一個(gè)線main方法執(zhí)行的那個(gè)線程。如果只是一cpu,它怎么能夠同時(shí)執(zhí)行多段程序呢?這是從宏觀上來(lái)看的,cpu一會(huì)執(zhí)a線索,一會(huì)執(zhí)b線索,切換時(shí)間很快,給人的感覺(jué)是a,b在同時(shí)執(zhí)行,好比大家在同一個(gè)上網(wǎng),只有一條到外部網(wǎng)線,其實(shí),這條網(wǎng)線一會(huì)為a傳數(shù)據(jù),一會(huì)為b傳數(shù)據(jù),由于切換時(shí)間很短暫,內(nèi)部調(diào)用調(diào)用線程start方法后線程進(jìn)入就緒狀態(tài),線程調(diào)度系統(tǒng)將就緒狀態(tài)的線程轉(zhuǎn)為運(yùn)行狀態(tài),遇synchronized語(yǔ)句時(shí),由運(yùn)行狀態(tài)轉(zhuǎn)為阻synchronized獲得鎖后,由阻塞轉(zhuǎn)為運(yùn)行,在這種情況可以調(diào)用wait方法轉(zhuǎn)為掛起狀態(tài),當(dāng)線程關(guān)聯(lián)的代碼執(zhí)行完異同?主要相同點(diǎn):Lock能完成synchronized所實(shí)現(xiàn)的所有主要不同點(diǎn):Locksynchronized更精確的線程語(yǔ)義和更好的性能。synchronized會(huì)自動(dòng)釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。Lock還有更強(qiáng)大的功能,例如,它的tryLock方法可以非阻塞方式去拿鎖。舉例說(shuō)明(對(duì)下面的題用lock進(jìn)行了改寫(xiě)package importimportpublicclassThreadTest*@paramprivateintprivateLocklock=newpublicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstubThreadTesttt=newThreadTest();for(inti=0;i<2;i++){newThread(tt.newnewThread(tt.new}}privateclassSubtractorimplements{publicvoidrun()//TODOAuto-generatedmethod{/*synchronized{System.out.println("j--="+j-//這里拋異常了,鎖能釋放{{}}}}privateclassAdderimplements{publicvoidrun()//TODOAuto-generatedmethod{{System.out.println("j++="+{System.out.println("j++="+{}}}}}個(gè)線程對(duì)j每次減少1。寫(xiě)出程序。publicclass{privateintpublicstaticvoidmain(StringThreadTest1();Incinc=tt.newInc();Decdec=tt.newDec();for(int}}inc(){j++;System.out.println(Thread.currentThread().getName()+"-}dec(){j--;System.out.println(Thread.currentThread().getName()+"-}classIncimplementsRunnable{publicvoid}}}classDecRunnable{publicvoidrun(){i=0;i<100;i++){}}}}隨手再寫(xiě)的一class{{new}void{for

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論