大漠駝鈴

          置身浩瀚的沙漠,方向最為重要,希望此blog能向大漠駝鈴一樣,給我方向和指引。
          Java,Php,Shell,Python,服務(wù)器運(yùn)維,大數(shù)據(jù),SEO, 網(wǎng)站開發(fā)、運(yùn)維,云服務(wù)技術(shù)支持,IM服務(wù)供應(yīng)商, FreeSwitch搭建,技術(shù)支持等. 技術(shù)討論QQ群:428622099
          隨筆 - 238, 文章 - 3, 評(píng)論 - 117, 引用 - 0
          數(shù)據(jù)加載中……

          java精選25道題

          1. float型float f=3.4是否正確?
            答:不正確,應(yīng)為float f=3.4f

            2. 當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?
            答:是引用傳遞。

            3. 在java中一個(gè)類被聲明為final類型,表示了什么意思?
            答:表示該類不能被繼承,意味著它不能再派生出新的子類,不能作為父類被繼承,是頂級(jí)類。

            4. Error與Exception有什么區(qū)別?
            答:Error(錯(cuò)誤)表示系統(tǒng)級(jí)的錯(cuò)誤和程序不必處理的異常,是java運(yùn)行環(huán)境中的內(nèi)部錯(cuò)誤或者硬件問(wèn)題,比如,內(nèi)存資源不足等,對(duì)于這種錯(cuò)誤,程序基本無(wú)能為力,除了退出運(yùn)行外別無(wú)選擇。
            Exception(違例)表示需要捕捉或者需要程序進(jìn)行處理的異常,它處理的是因?yàn)槌绦蛟O(shè)計(jì)的瑕疵而引起的問(wèn)題或者在外的輸入等引起的一般性問(wèn)題,是程序必須處理的。

            5. 談?wù)刦inal, finally的區(qū)別。
          答:final是修飾符(關(guān)鍵字)如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個(gè)類不能既被聲明 為 abstract,又被聲明為final。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖儭1宦暶鳛閒inal的變量必須在聲明時(shí)給定 初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。
            Finally是在異常處理時(shí)提供 finally 塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話),只要有finally語(yǔ)句塊,無(wú)論程序如何運(yùn)行,它都必然被執(zhí)行到。

            6. String s = new String("xyz");創(chuàng)建了幾個(gè)String Object?
            答:創(chuàng)建了兩個(gè),一個(gè)字符對(duì)象,一個(gè)引用對(duì)象

            7. short s1 = 1; s1 = s1 + 1;有什么錯(cuò)? short s1 = 1; s1 += 1;有什么錯(cuò)?
            答:兩個(gè)錯(cuò)誤都是一樣的,后者只是加法的寫法不一樣,兩個(gè)錯(cuò)誤都是因?yàn)閟1是short型而1是整型相加后數(shù)據(jù)類型就變?yōu)檎土耍cs1定義為short型有矛盾,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換才正確。

            8. 數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法? String有沒(méi)有l(wèi)ength()這個(gè)方法?
            答:數(shù)組沒(méi)有,String有。

            9. Overload和Override的區(qū)別
          答:方法的覆蓋(Overriding)和重載(Overloading)是Java多態(tài)性的不同表現(xiàn)。覆蓋(Overriding)是父類與子類之間 多態(tài)性的一種表現(xiàn),重載(Overloading)是一個(gè)類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說(shuō)該方法被覆 蓋 (Overriding)。子類的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對(duì)它而言,父類中的定義如同被“屏蔽”了。如果在一個(gè)類中定義了多個(gè)同名 的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法可以改變返回值的類型。

            10. abstract class和interface有什么區(qū)別?
          答:聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能 在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽象類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽象構(gòu) 造函數(shù)或抽象靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行 為的其它類可以在類中實(shí)現(xiàn)這些方法
          接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒(méi)有一 個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定 義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對(duì)象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類 型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類是否實(shí)現(xiàn)了接口

            11. 構(gòu)造器Constructor是否可被override?
            答:可以。

            12. 是否可以繼承String類?
            答:String類是final類所以不可以繼承。

            13. 題目如下:
            父類: 
            public class FatherClass 
            { 
            public FatherClass() 
            { 
            System.out.println("FatherClass Create"); 
            } 
            } 
            子類: 
            public class ChildClass extends FatherClass 
            { 
            public ChildClass() 
            { 
            System.out.println("ChildClass Create"); 
            } 
            public static void main(String[] args) 
            { 
            FatherClass fc = new FatherClass(); 
            ChildClass cc = new ChildClass(); 
            } 
            } 
            請(qǐng)問(wèn)輸出結(jié)果為: 
            FatherClass Create+ 
            FatherClass Create 
            ChildClass Create

            14. public class OuterClass { 
            private double d1 = 1.0; 
            //insert code here ~~ line 3 
            } 
            從下列選項(xiàng)中選擇兩個(gè)正確的答案放在 line 3 中(C E) 
            A. class InnerOne{ 
            public static double methoda() {return d1;} 
            } 
            B. public class InnerOne{ 
            static double methoda() {return d1;} 
            } 
            C. private class InnerOne{ 
            double methoda() {return d1;} 
            } 
            D. static class InnerOne{ 
            protected double methoda() {return d1;} 
            } 
            E. abstract class InnerOne{ 
            public abstract double methoda(); 
            }

           15. STRING與STRINGBUFFER的區(qū)別
          答:STRING的長(zhǎng)度是不可變的,一旦一個(gè)String對(duì)象被創(chuàng)建,包含在這個(gè)實(shí)例中的內(nèi)容(“字符串”)不可以被更改,直至這個(gè)對(duì)象被銷毀,因此, 指向一個(gè) String對(duì)象的變量實(shí)質(zhì)上是一個(gè)常量,String對(duì)象也被稱為常量對(duì)象;STRINGBUFFER的長(zhǎng)度是可變的,可以通過(guò) StringBuffer的append()、insert()、reverse()、setCharAt()、setLength()等方法,可以對(duì)這 個(gè)字符串中的內(nèi)容修改。如果你對(duì)字符串中的內(nèi)容經(jīng)常進(jìn)行操作,特別是內(nèi)容要修改時(shí),那么使用StringBuffer,如果最后需要String,那么使 用StringBuffer的toString()方法

            16. JAVA類實(shí)現(xiàn)序例化的方法是?
          答:JAVA類要實(shí)現(xiàn)序列化,對(duì)應(yīng)的類必須先實(shí)現(xiàn)Serializable和Externalizable這兩種接口,然后就可以調(diào)用 ObjectOutputStream的witeObject()方法來(lái)保存對(duì)象以及通過(guò)ObjeatInputStream的 readObjeact()方法來(lái)讀取保存的對(duì)象。

            17. Collection框架中實(shí)現(xiàn)比較要實(shí)現(xiàn)什么接口?
            答:要實(shí)現(xiàn)Comparable接口,并實(shí)現(xiàn)這個(gè)接口的唯一方法cpmparaTo(),接受一個(gè)Object對(duì)象,在這個(gè)方法中可以定義對(duì)象的排序規(guī)則。

            18. 介紹JAVA中的Collection 框架結(jié)構(gòu) , 并畫出來(lái)
            <>Collection 
            <>Set 
            <>List 
            HashSet 
            Tree set 
            ArrayList 
            Vector

            19. 編程題:列出某文件夾下的所有文件 (文件夾從命令行輸入)
            解:import java.io.*; 
            public class listFile 
            { 
            public static void main (String[] args) 
            { 
            String s=""; 
            InputStreamReader ir=new InputStreamReader(System.in); 
            BufferedReader in = new BufferedReader(ir); 
            try { 
            s = in.readLine(); 
            File f=new File(s); 
            File[] files=f.listFiles(); 
            for(int i=0;i 
            { 
            if(files[i].isFile()) 
            { 
            System.out.println("文件:"+files[i]); 
            } 
            else 
            { 
            System.out.println("目錄:"+files[i]); 
            } 
            } 
            in.close(); 
            } 
            catch (IOException e) 
            { 
            e.printStackTrace(); 
            } 
            } 
            }

            20. 編程題::寫一個(gè)滿足Singleton模式的類出來(lái)
            public class SingletonTest
            {
            private static SingletonTest sp;
            private SingletonTest() {}
            public static SingletonTest getInstance()
            {
            if (sp==null)
            { sp=new SingletonTest(); }
            return sp;
            }

            21. 編程:編寫一個(gè)截取字符串的函數(shù),輸入為一個(gè)字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 但是要保證漢字不被截半個(gè),如“我ABC”4,應(yīng)該截為“我AB”,輸入“我ABC漢DEF”,6,應(yīng)該輸出為“我ABC”而不是“我ABC+漢的半個(gè)”
            解:import java.io.*;
            class interceptString 
            { 
            String interceptStr; 
            int interceptByte; 
            public interceptString(String str,int bytes) 
            { 
            interceptStr=str; 
            interceptByte=bytes; 
            System.out.println("字符串為:'"+interceptStr+"';字節(jié)數(shù)為:"+interceptByte); 
            } 
            public void interceptIt() 
            { 
          int interceptCount; interceptCount=(interceptStr.length()%interceptByte==0)?(interceptStr.length()/interceptByte):(interceptStr.length()/interceptByte+1); 
            System.out.println("截取后斷數(shù)為:"+interceptCount); 
            for (int i=1;i<=interceptCount ;i++ ) 
            { if (i==interceptCount) 
            { 
            System.out.println(interceptStr.substring((i-1)*interceptByte,interceptStr.length())); 
            } else 
            { 
            System.out.println(interceptStr.substring((i-1)*interceptByte,(i*interceptByte))); 
            } 
            } 
            } 
            public static void main(String[] args) 
            { 
            String s=""; 
            InputStreamReader ir=new InputStreamReader(System.in); 
            BufferedReader in = new BufferedReader(ir); 
            try { 
            s = in.readLine(); 
            interceptString ss = new interceptString(s,4); 
            ss.interceptIt(); 
            in.close(); 
            } catch (IOException e) 
            { e.printStackTrace();} 
            } 
            }

          22. 多線程有幾種實(shí)現(xiàn)方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么?
            答:多線程有三種實(shí)現(xiàn)方法,分別為:
            ① 實(shí)現(xiàn)Runnable接口,覆蓋Run()方法。
            ② 繼承Thread,覆蓋Run()方法。
            ③ 繼承TimerTask,覆蓋Run()方法。
            同步的實(shí)現(xiàn)是在方法前加synchronized,在調(diào)用wait()和notify()。

            23. 請(qǐng)說(shuō)出你所知道的線程同步的方法
            答:1. synchronized 方法:通過(guò)在方法聲明中加入 synchronized關(guān)鍵字來(lái)聲明 synchronized 方法。
            2. synchronized 塊:通過(guò) synchronized關(guān)鍵字來(lái)聲明synchronized 塊。

            24. 當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?
            答:不可以。synchronized 方法都必須獲得調(diào)用該方法的類實(shí)例的鎖方能執(zhí)行,否則所屬線程阻塞,方法一旦執(zhí)行,就獨(dú)占該鎖,直到從該方法返回時(shí)才將鎖釋放,此后被阻塞的線程才能獲得該鎖,重新進(jìn)入可執(zhí)行狀態(tài)。

            25. 用JAVA SOCKET編程,實(shí)現(xiàn)簡(jiǎn)單的Echo功能
            如: 客戶端從鍵盤輸入 hi (當(dāng)用戶輸出exit 退出程序),服務(wù)端響應(yīng)為 hi(服務(wù)器要求為多線程)
            解:服務(wù)器程序: 
            import java.io.*; 
            import java.net.*; 
            public class MyServer extends Thread{ 
            private Socket cq ; 
            public MyServer(Socket cq) 
            { 
            this.cq = cq; 
            } 
            public void run() 
            { 
            try 
            { 
            BufferedReader in=new BufferedReader(new InputStreamReader(cq.getInputStream())); 
            PrintWriter out=new PrintWriter(cq.getOutputStream()); 
            while(true) 
            { 
            String str=in.readLine(); 
            System.out.println(str); 
            out.println("message: "+str); 
            out.flush(); 
            if(str.equals("exit")) 
            break; 
            } 
            } 
            catch(IOException e) 
            { 
            System.out.println(e.message()); 
            } 
            } 
            public static void main(String[] args) throws IOException{ 
            ServerSocket server=new ServerSocket(8009); 
            while(true) 
            { 
            Socket s=server.accept(); 
            new MyServer(s).start(); 
            } 
            } 
            } 
            客戶端程序: 
            import java.net.*; 
            import java.io.*; 
            public class MyClient{ 
            public static void main(String[] args)throws Exception 
            { 
            Socket server=new Socket("localhost",8009); 
            BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream())); 
            PrintWriter out=new PrintWriter(server.getOutputStream()); 
            BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
            while(true) 
            { 
            String str=br.readLine(); 
            out.println(str); 
            out.flush(); 
            if(str.equals("exit")){ 
            break; 
            } 
            System.out.println(in.readLine()); 
            } 
            server.close(); 
            } 
            }



           GWT-EXT2.0+struts2+hibernate+ejb++spring
                                     ————WEB2.0巔峰之作!
          posted on 2009-03-01 15:28 xcp 閱讀(1353) 評(píng)論(10)  編輯  收藏 所屬分類: JAVA歷程

          FeedBack:
          # re: java精選25道題
          2009-03-01 15:36 | Java Programmer
          第二個(gè)問(wèn)題顯然答案就錯(cuò)了,Java中哪有什么引用傳遞,全是值傳遞,有時(shí)間看看practical Java吧  回復(fù)  更多評(píng)論
            
          # re: java精選25道題
          2009-03-01 15:59 | name
          #7 顯然第二中寫法沒(méi)有錯(cuò)
          java解惑 那本書上有說(shuō)明


          對(duì)于第二個(gè)問(wèn)題, 我認(rèn)為對(duì)象作為傳遞的時(shí)候是事實(shí)上是按引用. 比如
          add(List list){list.add("st");}
          其實(shí)這個(gè)list是改變的. 所以一直絕對(duì)java所說(shuō)的按值傳遞是不明確的  回復(fù)  更多評(píng)論
            
          # re: java精選25道題 [未登錄](méi)
          2009-03-01 20:41 | Michael
          怎么說(shuō)都應(yīng)該是值應(yīng)用

          因?yàn)閰?shù)傳遞過(guò)去的值 實(shí)際上可以理解為該對(duì)象的實(shí)際地址的值

            回復(fù)  更多評(píng)論
            
          # re: java精選25道題
          2009-03-01 21:54 | qalong
           7. short s1 = 1; s1 = s1 + 1;有什么錯(cuò)? short s1 = 1; s1 += 1;有什么錯(cuò)?
          答:兩個(gè)錯(cuò)誤都是一樣的,后者只是加法的寫法不一樣,兩個(gè)錯(cuò)誤都是因?yàn)閟1是short型而1是整型相加后數(shù)據(jù)類型就變?yōu)檎土耍cs1定義為short型有矛盾,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換才正確。

          第七題有錯(cuò),第二種情況沒(méi)錯(cuò)!  回復(fù)  更多評(píng)論
            
          # re: java精選25道題
          2009-03-01 23:47 | Heis
          2. 當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?
          答:是引用傳遞。

          無(wú)論方法的參數(shù)是基本類型(primitive type,如int,double等)還是引用類型(對(duì)象),方法是不能改變其值,所以傳進(jìn)去的是其副本,是值傳遞。  回復(fù)  更多評(píng)論
            
          # re: java精選25道題
          2009-03-02 00:01 | fordybeach
          太搞了吧,竟然往上面帖錯(cuò)答案  回復(fù)  更多評(píng)論
            
          # re: java精選25道題
          2009-03-02 11:12 | 鄭暉
          如果你了解指針,就知道Java永遠(yuǎn)是按值傳遞的。
          ——Java通過(guò)引用能改變對(duì)象的值,但不能改變對(duì)象引用本身。考慮一下,你能否寫一個(gè)swap函數(shù)void swap(Object a, Object b)將兩個(gè)引用對(duì)象交換?Java不能,在C++中可以通過(guò)reference來(lái)交換兩個(gè)指針。


          如果你了解對(duì)象的構(gòu)造過(guò)程,就知道父類的constructor是永遠(yuǎn)不可能被override的。
          ——子類的構(gòu)造一定要建立在父類之上,故子類的constructor必須先調(diào)用父類的一個(gè)constructor。事實(shí)上,constructor都不能被繼承,更談不上被override了。  回復(fù)  更多評(píng)論
            
          # re: java精選25道題
          2009-03-02 16:18 | 李佳
          6. String s = new String("xyz");創(chuàng)建了幾個(gè)String Object?
          答:創(chuàng)建了兩個(gè),一個(gè)字符對(duì)象,一個(gè)引用對(duì)象

          問(wèn)的無(wú)意義.細(xì)細(xì)的深入追究起來(lái),可不只兩個(gè)對(duì)象.  回復(fù)  更多評(píng)論
            
          # re: java精選25道題
          2009-03-02 23:27 | exj3un
          是的,自動(dòng)向上轉(zhuǎn)型了  回復(fù)  更多評(píng)論
            
          # re: java精選25道題
          2009-03-03 15:41 | Antony Lee
          21題答案是錯(cuò)的吧  回復(fù)  更多評(píng)論
           

          posted on 2009-03-06 09:59 草原上的駱駝 閱讀(370) 評(píng)論(1)  編輯  收藏 所屬分類: JAVA基礎(chǔ)知識(shí)

          評(píng)論

          # re: java精選25道題 [未登錄](méi)  回復(fù)  更多評(píng)論   

          第7題 第二個(gè)沒(méi)錯(cuò)
          2009-04-01 10:31 | star
          主站蜘蛛池模板: 桃园县| 丰宁| 房产| 太康县| 万安县| 承德县| 博野县| 梁山县| 象山县| 全椒县| 历史| 岳池县| 余江县| 瑞安市| 黔西县| 青浦区| 吐鲁番市| 天全县| 肥乡县| 伊川县| 怀安县| 察哈| 阿克陶县| 许昌县| 青铜峡市| 高安市| 鞍山市| 建瓯市| 三台县| 历史| 志丹县| 城市| 绿春县| 洱源县| 虞城县| 云和县| 房产| 罗江县| 莱州市| 怀柔区| 和田县|