freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java軟件開(kāi)發(fā)工程師面試題寶典-在線瀏覽

2025-06-01 13:40本頁(yè)面
  

【正文】 bject類(lèi)的equals方法,Object類(lèi)的equals方法的實(shí)現(xiàn)代碼如下:booleano){return}這說(shuō)明,如果一個(gè)類(lèi)沒(méi)有自己定義equals方法,它默認(rèn)的equals方法(從Object 類(lèi)繼承的)就是使用==操作符,也是在比較兩個(gè)變量指向的對(duì)象是否是同一對(duì)象,這時(shí)候使用equals和使用==會(huì)得到同樣的結(jié)果,如果比較的是兩個(gè)獨(dú)立的對(duì)象則總返回false。1靜態(tài)變量和實(shí)例變量的區(qū)別? 在語(yǔ)法定義上的區(qū)別:靜態(tài)變量前要加static關(guān)鍵字,而實(shí)例變量前則不加。靜態(tài)變量不屬于某個(gè)實(shí)例對(duì)象,而是屬于類(lèi),所以也稱(chēng)為類(lèi)變量,只要程序加載了類(lèi)的字節(jié)碼,不用創(chuàng)建任何實(shí)例對(duì)象,靜態(tài)變量就會(huì)被分配空間,靜態(tài)變量就可以被使用了。例如,對(duì)于下面的程序,無(wú)論創(chuàng)建多少個(gè)實(shí)例對(duì)象,永遠(yuǎn)都只分配了一個(gè)staticVar變量,并且每創(chuàng)建一個(gè)實(shí)例對(duì)象,這個(gè)staticVar就會(huì)加1;但是,每創(chuàng)建一個(gè)實(shí)例對(duì)象,就會(huì)分配一個(gè)instanceVar,即可能分配多個(gè)instanceVar,并且每個(gè)instanceVar的值都只自加了1次。 public int instanceVar = 0。 instanceVar++。 }}備注:這個(gè)解答除了說(shuō)清楚兩者的區(qū)別外,最后還用一個(gè)具體的應(yīng)用例子來(lái)說(shuō)明兩者的差異,體現(xiàn)了自己有很好的解說(shuō)問(wèn)題和設(shè)計(jì)案例的能力,思維敏捷,超過(guò)一般程序員,有寫(xiě)作能力!1是否可以從一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用? 不可以。也就是說(shuō),當(dāng)一個(gè)static方法被調(diào)用時(shí),可能還沒(méi)有創(chuàng)建任何實(shí)例對(duì)象,如果從一個(gè)static方法中發(fā)出對(duì)非static方法的調(diào)用,那個(gè)非static方法是關(guān)聯(lián)到哪個(gè)對(duì)象上的呢?這個(gè)邏輯無(wú)法成立,所以,一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用。Java為每個(gè)原始類(lèi)型提供了封裝類(lèi),Integer是java為int提供的封裝類(lèi)。在JSP開(kāi)發(fā)中,Integer的默認(rèn)為null,所以用el表達(dá)式在文本框中顯示時(shí),值為空白字符串,而int默認(rèn)的默認(rèn)值為0,所以用el表達(dá)式在文本框中顯示時(shí),結(jié)果為0,所以,int不適合作為web層的表單數(shù)據(jù)的類(lèi)型。另外,Integer提供了多個(gè)與整數(shù)相關(guān)的操作方法,例如,將一個(gè)字符串轉(zhuǎn)換成整數(shù),Integer中還定義了表示整數(shù)的最大值和最小值的常量。1下面的代碼有什么不妥之處?1. if((“zxx”){} 2. int x = 1。1請(qǐng)說(shuō)出作用域public,private,protected,以及不寫(xiě)時(shí)的區(qū)別這四個(gè)作用域的可見(jiàn)范圍如下表所示。作用域 當(dāng)前類(lèi) 同一package 子孫類(lèi) 其他package public √ √ √ √ protected √ √ √ friendly √ √ private √ 備注:只要記住了有4種訪問(wèn)權(quán)限,4個(gè)訪問(wèn)范圍,然后將全選和范圍在水平和垂直方向上分別按排從小到大或從大到小的順序排列,就很容易畫(huà)出上面的圖了。Overloaded的方法是否可以改變返回值的類(lèi)型? Overload是重載的意思,Override是覆蓋的意思,也就是重寫(xiě)。重寫(xiě)Override表示子類(lèi)中的方法可以與父類(lèi)中的某個(gè)方法的名稱(chēng)和參數(shù)完全相同,通過(guò)子類(lèi)創(chuàng)建的實(shí)例對(duì)象調(diào)用這個(gè)方法時(shí),將調(diào)用子類(lèi)中的定義方法,這相當(dāng)于把父類(lèi)中定義的那個(gè)完全相同的方法給覆蓋了,這也是面向?qū)ο缶幊痰亩鄳B(tài)性的一種表現(xiàn)。子類(lèi)方法的訪問(wèn)權(quán)限只能比父類(lèi)的更大,不能更小。至于Overloaded的方法是否可以改變返回值的類(lèi)型這個(gè)問(wèn)題,要看你倒底想問(wèn)什么呢?這個(gè)題目很模糊。但我估計(jì)你想問(wèn)的問(wèn)題是:如果兩個(gè)方法的參數(shù)列表完全一樣,是否可以讓它們的返回值不同來(lái)實(shí)現(xiàn)重載Overload。 override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個(gè)方法并且對(duì)其重寫(xiě),以求達(dá)到不同的作用。除了這個(gè)典型的用法以外,我們?cè)诶^承中也可能會(huì)在子類(lèi)覆蓋父類(lèi)中的方法。overload對(duì)我們來(lái)說(shuō)可能比較熟悉,可以翻譯為重載,它是指我們可以定義一些名稱(chēng)相同的方法,通過(guò)定義不同的輸入?yún)?shù)來(lái)區(qū)分這些方法,然后再調(diào)用時(shí),VM就會(huì)根據(jù)不同的參數(shù)樣式,來(lái)選擇合適的方法執(zhí)行。例如,不同的參數(shù)類(lèi)型,不同的參數(shù)個(gè)數(shù),不同的參數(shù)順序(當(dāng)然,同一方法內(nèi)的幾個(gè)參數(shù)類(lèi)型必須不一樣,例如可以是fun(int,float),但是不能為fun(int,int));不能通過(guò)訪問(wèn)權(quán)限、返回類(lèi)型、拋出的異常進(jìn)行重載;方法的異常類(lèi)型和數(shù)目不會(huì)對(duì)重載造成影響;對(duì)于繼承來(lái)說(shuō),如果某一方法在父類(lèi)中是訪問(wèn)權(quán)限是priavte,那么就不能在子類(lèi)對(duì)其進(jìn)行重載,如果定義的話,也只是定義了一個(gè)新方法,而不會(huì)達(dá)到重載的效果。 接口是否可繼承接口? 抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口? 抽象類(lèi)是否可繼承具體類(lèi)(concrete class)? 抽象類(lèi)中是否可以有靜態(tài)的main方法?接口可以繼承接口。抽象類(lèi)中可以有靜態(tài)的main方法。 只有記住抽象類(lèi)與普通類(lèi)的唯一區(qū)別就是不能創(chuàng)建實(shí)例對(duì)象和允許有abstract方法。因?yàn)槭紫纫迅割?lèi)中的成員復(fù)制到位,然后才是復(fù)制自己的成員。面向?qū)ο缶幊叹褪前船F(xiàn)實(shí)業(yè)務(wù)一樣的方式將程序代碼按一個(gè)個(gè)對(duì)象進(jìn)行組織和編寫(xiě),讓計(jì)算機(jī)系統(tǒng)能夠識(shí)別和理解用對(duì)象方式組織和編寫(xiě)的程序代碼,這樣就可以把現(xiàn)實(shí)生活中的業(yè)務(wù)對(duì)象映射到計(jì)算機(jī)系統(tǒng)中。1封裝:封裝是保證軟件部件具有優(yōu)良的模塊性的基礎(chǔ),封裝的目標(biāo)就是要實(shí)現(xiàn)軟件部件的“高內(nèi)聚、低耦合”,防止程序相互依賴(lài)性而帶來(lái)的變動(dòng)影響。面向?qū)ο蟮姆庋b就是把描述一個(gè)對(duì)象的屬性和行為的代碼封裝在一個(gè)“模塊”中,也就是一個(gè)類(lèi)中,屬性用變量定義,行為用方法進(jìn)行定義,方法可以直接訪問(wèn)同一個(gè)對(duì)象中的屬性。把握一個(gè)原則:把對(duì)同一事物進(jìn)行操作的方法和相關(guān)的方法放在同一個(gè)類(lèi)中,把方法和它操作的數(shù)據(jù)放在同一個(gè)類(lèi)中。一個(gè)更便于理解的例子就是,司機(jī)將火車(chē)剎住了,剎車(chē)的動(dòng)作是分配給司機(jī),還是分配給火車(chē),顯然,應(yīng)該分配給火車(chē),因?yàn)樗緳C(jī)自身是不可能有那么大的力氣將一個(gè)火車(chē)給停下來(lái)的,只有火車(chē)自己才能完成這一動(dòng)作,火車(chē)需要調(diào)用內(nèi)部的離合器和剎車(chē)片等多個(gè)器件協(xié)作才能完成剎車(chē)這個(gè)動(dòng)作,司機(jī)剎車(chē)的過(guò)程只是給火車(chē)發(fā)了一個(gè)消息,通知火車(chē)要執(zhí)行剎車(chē)動(dòng)作而已。例如,看到一只螞蟻和大象,你能夠想象出它們的相同之處,那就是抽象。例如,定義一個(gè)Person類(lèi),如下:class Person{ String name。}人本來(lái)是很復(fù)雜的事物,有很多方面,但因?yàn)楫?dāng)前系統(tǒng)只需要了解人的姓名和年齡,所以上面定義的類(lèi)中只包含姓名和年齡這兩個(gè)屬性,這就是一種抽像,使用抽象可以避免考慮一些與目標(biāo)無(wú)關(guān)的細(xì)節(jié)。繼承:在定義和實(shí)現(xiàn)一個(gè)類(lèi)的時(shí)候,可以在一個(gè)已經(jīng)存在的類(lèi)的基礎(chǔ)之上來(lái)進(jìn)行,把這個(gè)已經(jīng)存在的類(lèi)所定義的內(nèi)容作為自己的內(nèi)容,并可以加入若干新的內(nèi)容,或修改原來(lái)的方法使之更適合特殊的需要,這就是繼承。多態(tài):多態(tài)是指程序中定義的引用變量所指向的具體類(lèi)型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類(lèi)的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類(lèi)中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定。多態(tài)性增強(qiáng)了軟件的靈活性和擴(kuò)展性。 (user)。 2abstract class和interface有什么區(qū)別? 含有abstract修飾符的class即為抽象類(lèi),abstract 類(lèi)不能創(chuàng)建的實(shí)例對(duì)象。abstract class類(lèi)中定義抽象方法必須在具體(Concrete)子類(lèi)中實(shí)現(xiàn),所以,不能有抽象構(gòu)造方法或抽象靜態(tài)方法。接口(interface)可以說(shuō)成是抽象類(lèi)的一種特例,接口中的所有方法都必須是抽象的。下面比較一下兩者的語(yǔ)法區(qū)別:,接口中不能有構(gòu)造方法。4. 抽象類(lèi)中的抽象方法的訪問(wèn)類(lèi)型可以是public,protected和(默認(rèn)類(lèi)型,雖然eclipse下不報(bào)錯(cuò),但應(yīng)該也不行),但接口中的抽象方法只能是public類(lèi)型的,并且默認(rèn)即為public abstract類(lèi)型。7. 一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類(lèi)。而抽象類(lèi)在代碼實(shí)現(xiàn)方面發(fā)揮作用,可以實(shí)現(xiàn)代碼的重用,例如,模板方法設(shè)計(jì)模式是抽象類(lèi)的一個(gè)典型應(yīng)用,假設(shè)某個(gè)項(xiàng)目的所有Servlet類(lèi)都要用相同的方式進(jìn)行權(quán)限判斷、記錄訪問(wèn)日志和處理異常,那么就可以定義一個(gè)抽象的基類(lèi),讓所有的Servlet都繼承這個(gè)抽象基類(lèi),在抽象基類(lèi)的service方法中完成權(quán)限判斷、記錄訪問(wèn)日志和處理異常的代碼,在各個(gè)子類(lèi)中只是完成各自的業(yè)務(wù)邏輯代碼,偽代碼如下:public abstract class BaseServlet extends HttpServlet{ public final void service(HttpServletRequest request, HttpServletResponse response) throws IOExcetion,ServletException { 記錄訪問(wèn)日志 進(jìn)行權(quán)限判斷if(具有權(quán)限){ try{ doService(request,response)。 //注意訪問(wèn)權(quán)限定義成protected,顯得既專(zhuān)業(yè),又嚴(yán)謹(jǐn),因?yàn)樗菍?zhuān)門(mén)給子類(lèi)用的}public class MyServlet1 extends BaseServlet{protected void doService(HttpServletRequest request, HttpServletResponse response) throws IOExcetion,ServletException { 本Servlet只處理的具體業(yè)務(wù)邏輯代碼 } }父類(lèi)方法中間的某段代碼不確定,留給子類(lèi)干,就用模板方法設(shè)計(jì)模式。比較兩者語(yǔ)法細(xì)節(jié)區(qū)別的條理是:先從一個(gè)類(lèi)中的構(gòu)造方法、普通成員變量和方法(包括抽象方法),靜態(tài)變量和方法,繼承性等6個(gè)方面逐一去比較回答,接著從第三者繼承的角度的回答,特別是最后用了一個(gè)典型的例子來(lái)展現(xiàn)自己深厚的技術(shù)功底。例如,F(xiàn)ileOutputSteam類(lèi)要硬件打交道,底層的實(shí)現(xiàn)用的是操作系統(tǒng)相關(guān)的api實(shí)現(xiàn),例如,在windows用c語(yǔ)言實(shí)現(xiàn)的,所以,查看jdk 的源代碼,可以發(fā)現(xiàn)FileOutputStream的open方法的定義如下:private native void open(String name) throws FileNotFoundException。由于我們的c語(yǔ)言函數(shù)是按java的要求來(lái)寫(xiě)的,我們這個(gè)c語(yǔ)言函數(shù)就可以與java對(duì)接上,java那邊的對(duì)接方式就是定義出與我們這個(gè)c函數(shù)相對(duì)應(yīng)的方法,java中對(duì)應(yīng)的方法不需要寫(xiě)具體的代碼,但需要在前面聲明native。而且,方法上的synchronized同步所使用的同步鎖對(duì)象是this,而抽象方法上無(wú)法確定this是什么。內(nèi)部類(lèi)就是在一個(gè)類(lèi)的內(nèi)部定義的類(lèi),內(nèi)部類(lèi)中不能定義靜態(tài)成員(靜態(tài)成員不是對(duì)象的特性,只是為了找一個(gè)容身之處,所以需要放到一個(gè)類(lèi)中而已,這么一點(diǎn)小事,你還要把它放到類(lèi)內(nèi)部的一個(gè)類(lèi)中,過(guò)分了啊!提供內(nèi)部類(lèi),不是為讓你干這種事情,無(wú)聊,不讓你干。 public void method() { Inner1 inner1 = new Inner1()。 } } Inner2 inner2 = new Inner2()。 inner1 = Innner1()。這種內(nèi)部類(lèi)對(duì)其他類(lèi)是不可見(jiàn)的其他類(lèi)無(wú)法引用這種內(nèi)部類(lèi),但是這種內(nèi)部類(lèi)創(chuàng)建的實(shí)例對(duì)象可以傳遞給其他類(lèi)訪問(wèn)。這種內(nèi)部類(lèi)可以訪問(wèn)方法體中的局部變量,但是,該局部變量前必須加final修飾符。在方法體內(nèi)部還可以采用如下語(yǔ)法來(lái)創(chuàng)建一種匿名內(nèi)部類(lèi),即定義某一接口或類(lèi)的子類(lèi)的同時(shí),還創(chuàng)建了該子類(lèi)的實(shí)例對(duì)象,無(wú)需為該子類(lèi)定義名稱(chēng):public class Outer{ public void start() { new Thread(new Runable(){ public void run(){}。 }}最后,在方法外部定義的內(nèi)部類(lèi)前面可以加上static關(guān)鍵字,從而成為Static Nested Class,它不再具有內(nèi)部類(lèi)的特性,所有,從狹義上講,它不是內(nèi)部類(lèi)。在外面引用Static Nested Class類(lèi)的名稱(chēng)為“”。由于static Nested Class不依賴(lài)于外部類(lèi)的實(shí)例對(duì)象,所以,static Nested Class能訪問(wèn)外部類(lèi)的非static成員變量。在靜態(tài)方法中定義的內(nèi)部類(lèi)也是Static Nested Class,這時(shí)候不能在類(lèi)前面加static關(guān)鍵字,靜態(tài)方法中的Static Nested Class與普通方法中的內(nèi)部類(lèi)的應(yīng)用方式很相似,它除了可以直接訪問(wèn)外部類(lèi)中的static的成員變量,還可以訪問(wèn)靜態(tài)方法中的局部變量,但是,該局部變量前必須加final修飾符。然后再說(shuō)一些細(xì)節(jié)方面的知識(shí),例如,幾種定義方式的語(yǔ)法區(qū)別,靜態(tài)內(nèi)部類(lèi),以及匿名內(nèi)部類(lèi)。如果不是靜態(tài)內(nèi)部類(lèi),那沒(méi)有什么限制! 如果你把靜態(tài)嵌套類(lèi)當(dāng)作內(nèi)部類(lèi)的一種特例,那在這種情況下不可以訪問(wèn)外部類(lèi)的普通成員變量,而只能訪問(wèn)外部類(lèi)中的靜態(tài)成員,例如,下面的代碼:class Outer{ static int x。 } }}答題時(shí),也要能察言觀色,揣摩提問(wèn)者的心思,顯然人家希望你說(shuō)的是靜態(tài)內(nèi)部類(lèi)不能訪問(wèn)外部類(lèi)的成員,但你一上來(lái)就頂牛,這不好,要先順著人家,讓人家滿(mǎn)意,然后再說(shuō)特殊情況,讓人家吃驚。不僅是可以,而是必須!2()方法調(diào)用下面程序的輸出結(jié)果是多少?import 。 } pub
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1