<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    J2EE社區(qū)

    茍有恒,何必三更起五更眠;
    最無益,只怕一日曝十日寒.
    posts - 241, comments - 318, trackbacks - 0, articles - 16

    java精選25道題

    Posted on 2009-03-01 15:28 xcp 閱讀(2864) 評論(9)  編輯  收藏 所屬分類: JAVA

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

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

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

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

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

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

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

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

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

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

      14. public class OuterClass { 
      private double d1 = 1.0; 
      //insert code here ~~ line 3 
      } 
      從下列選項中選擇兩個正確的答案放在 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的長度是不可變的,一旦一個String對象被創(chuàng)建,包含在這個實例中的內(nèi)容(“字符串”)不可以被更改,直至這個對象被銷毀,因此,指向一個 String對象的變量實質(zhì)上是一個常量,String對象也被稱為常量對象;STRINGBUFFER的長度是可變的,可以通過StringBuffer的append()、insert()、reverse()、setCharAt()、setLength()等方法,可以對這個字符串中的內(nèi)容修改。如果你對字符串中的內(nèi)容經(jīng)常進行操作,特別是內(nèi)容要修改時,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法

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

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

      18. 介紹JAVA中的Collection 框架結(jié)構(gòu) , 并畫出來
      <>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. 編程題::寫一個滿足Singleton模式的類出來
      public class SingletonTest
      {
      private static SingletonTest sp;
      private SingletonTest() {}
      public static SingletonTest getInstance()
      {
      if (sp==null)
      { sp=new SingletonTest(); }
      return sp;
      }

      21. 編程:編寫一個截取字符串的函數(shù),輸入為一個字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 但是要保證漢字不被截半個,如“我ABC”4,應(yīng)該截為“我AB”,輸入“我ABC漢DEF”,6,應(yīng)該輸出為“我ABC”而不是“我ABC+漢的半個”
      解: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. 多線程有幾種實現(xiàn)方法,都是什么?同步有幾種實現(xiàn)方法,都是什么?
      答:多線程有三種實現(xiàn)方法,分別為:
      ① 實現(xiàn)Runnable接口,覆蓋Run()方法。
      ② 繼承Thread,覆蓋Run()方法。
      ③ 繼承TimerTask,覆蓋Run()方法。
      同步的實現(xiàn)是在方法前加synchronized,在調(diào)用wait()和notify()。

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

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

      25. 用JAVA SOCKET編程,實現(xià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(); 
      } 
      }




    名稱: ?4C.ESL | .↗Evon
    口號: 遇到新問題?先要尋找一個方案乄而不是創(chuàng)造一個方案こ
    mail: 聯(lián)系我


    Feedback

    # re: java精選25道題   回復(fù)  更多評論   

    2009-03-01 15:36 by Java Programmer
    第二個問題顯然答案就錯了,Java中哪有什么引用傳遞,全是值傳遞,有時間看看practical Java吧

    # re: java精選25道題   回復(fù)  更多評論   

    2009-03-01 15:59 by name
    #7 顯然第二中寫法沒有錯
    java解惑 那本書上有說明


    對于第二個問題, 我認為對象作為傳遞的時候是事實上是按引用. 比如
    add(List list){list.add("st");}
    其實這個list是改變的. 所以一直絕對java所說的按值傳遞是不明確的

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

    2009-03-01 20:41 by Michael
    怎么說都應(yīng)該是值應(yīng)用

    因為參數(shù)傳遞過去的值 實際上可以理解為該對象的實際地址的值

    # re: java精選25道題   回復(fù)  更多評論   

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

    第七題有錯,第二種情況沒錯!

    # re: java精選25道題   回復(fù)  更多評論   

    2009-03-02 00:01 by fordybeach
    太搞了吧,竟然往上面帖錯答案

    # re: java精選25道題   回復(fù)  更多評論   

    2009-03-02 11:12 by 鄭暉
    如果你了解指針,就知道Java永遠是按值傳遞的。
    ——Java通過引用能改變對象的值,但不能改變對象引用本身。考慮一下,你能否寫一個swap函數(shù)void swap(Object a, Object b)將兩個引用對象交換?Java不能,在C++中可以通過reference來交換兩個指針。


    如果你了解對象的構(gòu)造過程,就知道父類的constructor是永遠不可能被override的。
    ——子類的構(gòu)造一定要建立在父類之上,故子類的constructor必須先調(diào)用父類的一個constructor。事實上,constructor都不能被繼承,更談不上被override了。

    # re: java精選25道題   回復(fù)  更多評論   

    2009-03-02 16:18 by 李佳
    6. String s = new String("xyz");創(chuàng)建了幾個String Object?
      答:創(chuàng)建了兩個,一個字符對象,一個引用對象

    問的無意義.細細的深入追究起來,可不只兩個對象.

    # re: java精選25道題   回復(fù)  更多評論   

    2009-03-02 23:27 by exj3un
    是的,自動向上轉(zhuǎn)型了

    # re: java精選25道題   回復(fù)  更多評論   

    2009-03-03 15:41 by Antony Lee
    21題答案是錯的吧
    主站蜘蛛池模板: 亚洲婷婷在线视频| 在线观看免费av网站| 亚洲人成网站在线观看播放动漫| 亚洲美女高清一区二区三区| 成年午夜视频免费观看视频 | 野花高清在线观看免费完整版中文| 国产福利电影一区二区三区,免费久久久久久久精| 亚洲国产日韩在线人成下载| 亚洲国产精品无码久久一线| 亚洲色婷婷综合开心网| 毛片在线免费视频| 黄色成人免费网站| 99久热只有精品视频免费看 | 亚洲成色999久久网站| 在线观看亚洲精品福利片| 国产成人青青热久免费精品| 中文字幕人成无码免费视频| 久久久久av无码免费网| 久久免费区一区二区三波多野| 高清永久免费观看 | 亚洲熟女少妇一区二区| 免费在线观看你懂的| 国产老女人精品免费视频| 欧美日韩国产免费一区二区三区| 亚洲一区免费在线观看| 91热久久免费精品99| 99re在线精品视频免费| 久久免费国产视频| 秋霞人成在线观看免费视频 | 亚洲色欲色欲www在线丝| 久久亚洲国产成人影院网站| 亚洲一区二区视频在线观看| 全亚洲最新黄色特级网站 | 在线亚洲午夜片AV大片| 色噜噜亚洲男人的天堂| 亚洲免费视频播放| 天堂亚洲国产中文在线| 亚洲av无码专区在线观看下载| 国产亚洲福利精品一区二区| 国产亚洲精品欧洲在线观看| 久香草视频在线观看免费|