自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

精選的25個(gè)Java試題分享

開發(fā) 后端
這里是網(wǎng)友精選的25道Java試題以及答案,與大家分享。

以下是網(wǎng)友精選的25道Java試題,放到這里與大家分享。

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ò)誤或者硬件問題,比如,內(nèi)存資源不足等,對(duì)于這種錯(cuò)誤,程序基本無能為力,除了退出運(yùn)行外別無選擇。

Exception(違例)表示需要捕捉或者需要程序進(jìn)行處理的異常,它處理的是因?yàn)槌绦蛟O(shè)計(jì)的瑕疵而引起的問題或者在外的輸入等引起的一般性問題,是程序必須處理的。

5. 談?wù)刦inal, finally的區(qū)別。

答:final是修飾符(關(guān)鍵字)如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個(gè)類不能既被聲明為 abstract,又被聲明為final。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。

Finally是在異常處理時(shí)提供 finally 塊來執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話),只要有finally語句塊,無論程序如何運(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)檎土?,與s1定義為short型有矛盾,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換才正確。

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

答:數(shù)組沒有,String有。

9. Overload和Override的區(qū)別

答:方法的覆蓋(Overriding)和重載(Overloading)是Java多態(tài)性的不同表現(xiàn)。覆蓋(Overriding)是父類與子類之間多態(tài)性的一種表現(xiàn),重載(Overloading)是一個(gè)類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被覆蓋 (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)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個(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)算符可以用來決定某對(duì)象的類是否實(shí)現(xiàn)了接口

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

答:可以。

12. 是否可以繼承String類?

答:String類是final類所以不可以繼承。

13. 題目如下:

父類:

  1.   public class FatherClass  
  2.    {  
  3.   public FatherClass()  
  4.   {  
  5.   System.out.println(“FatherClass Create“);  
  6.   }  
  7.   } 

子類:

  1.   public class ChildClass extends FatherClass  
  2.   {  
  3.   public ChildClass()  
  4.   {  
  5.   System.out.println(“ChildClass Create“);  
  6.   }  
  7.   public static void main(String[] args)  
  8.   {  
  9.   FatherClass fc = new FatherClass();  
  10.   ChildClass cc = new ChildClass();  
  11.   }  
  12.   } 

請問輸出結(jié)果為:

  1.   FatherClass Create+  
  2.   FatherClass Create  
  3.   ChildClass Create 

14. 多線程有幾種實(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()。

15. 請說出你所知道的線程同步的方法

答:1. synchronized 方法:通過在方法聲明中加入 synchronized關(guān)鍵字來聲明 synchronized 方法。
  2. synchronized 塊:通過 synchronized關(guān)鍵字來聲明synchronized 塊。

16. 當(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)。

17. 用Java SOCKET編程,實(shí)現(xiàn)簡單的Echo功能

如: 客戶端從鍵盤輸入 hi (當(dāng)用戶輸出exit 退出程序),服務(wù)端響應(yīng)為 hi(服務(wù)器要求為多線程)

解:服務(wù)器程序:

  1.   import Java.io.*;  
  2.   import Java.net.*;  
  3.   public class MyServer extends Thread{  
  4.   private Socket cq ;  
  5.   public MyServer(Socket cq)  
  6.   {  
  7.   this.cq = cq;  
  8.   }  
  9.   public void run()  
  10.   {  
  11.   try 
  12.   {  
  13.   BufferedReader in=new BufferedReader(new InputStreamReader(cq.getInputStream()));  
  14.   PrintWriter out=new PrintWriter(cq.getOutputStream());  
  15.   while(true)  
  16.   {  
  17.   String str=in.readLine();  
  18.   System.out.println(str);  
  19.   out.println(“message: “+str);  
  20.   out.flush();  
  21.   if(str.equals(“exit“))  
  22.   break;  
  23.   }  
  24.   }  
  25.   catch(IOException e)  
  26.   {  
  27.   System.out.println(e.message());  
  28.   }  
  29.   }  
  30.   public static void main(String[] args) throws IOException{  
  31.   ServerSocket server=new ServerSocket(8009);  
  32.   while(true)  
  33.   {  
  34.   Socket s=server.accept();  
  35.   new MyServer(s).start();  
  36.   }  
  37.   }  
  38.   } 

客戶端程序:

  1.   import Java.net.*;  
  2.   import Java.io.*;  
  3.   public class MyClient{  
  4.   public static void main(String[] args)throws Exception  
  5.   {  
  6.   Socket server=new Socket(“l(fā)ocalhost“,8009);  
  7.   BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));  
  8.   PrintWriter out=new PrintWriter(server.getOutputStream());  
  9.   BufferedReader br=new BufferedReader(new InputStreamReader(System.in));  
  10.   while(true)  
  11.   {  
  12.   String str=br.readLine();  
  13.   out.println(str);  
  14.   out.flush();  
  15.   if(str.equals(“exit“)){  
  16.   break;  
  17.   }  
  18.   System.out.println(in.readLine());  
  19.   }  
  20.   server.close();  
  21.   }  
  22.   } 

18.

  1. public class OuterClass {  
  2.   private double d1 = 1.0;  
  3.   //insert code here ~~ line 3  
  4.   } 

從下列選項(xiàng)中選擇兩個(gè)正確的答案放在 line 3 中(C E)
A.

  1. class InnerOne{  
  2.   public static double methoda() {return d1;}  
  3.   } 

B.

  1. public class InnerOne{  
  2.   static double methoda() {return d1;}  
  3.   } 

C.

  1. private class InnerOne{  
  2.   double methoda() {return d1;}  
  3.   } 

D.

  1.  static class InnerOne{  
  2.   protected double methoda() {return d1;}  
  3.   } 

E.

  1.  abstract class InnerOne{  
  2.   public abstract double methoda();  
  3.   } 

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

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

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

22. 介紹Java中的Collection 框架結(jié)構(gòu) , 并畫出來。
  〈〉Collection
  〈〉Set
  〈〉List
  HashSet
  Tree set
  ArrayList
  Vector

23. 編程題:列出某文件夾下的所有文件 (文件夾從命令行輸入)。
解:

  1.   import Java.io.*;  
  2.   public class listFile  
  3.   {  
  4.   public static void main (String[] args)  
  5.   {  
  6.   String s=““;  
  7.   InputStreamReader ir=new InputStreamReader(System.in);  
  8.   BufferedReader in = new BufferedReader(ir);  
  9.   try {  
  10.   s = in.readLine();  
  11.   File f=new File(s);  
  12.   File[] files=f.listFiles();  
  13.   for(int i=0;i  
  14.   {  
  15.   if(files[i].isFile())  
  16.   {  
  17.   System.out.println(“文件:“+files[i]);  
  18.   }  
  19.   else 
  20.   {  
  21.   System.out.println(“目錄:“+files[i]);  
  22.   }  
  23.   }  
  24.   in.close();  
  25.   }  
  26.   catch (IOException e)  
  27.   {  
  28.   e.printStackTrace();  
  29.   }  
  30.   }  
  31.   } 

24. 編程題::寫一個(gè)滿足Singleton模式的類出來。

  1.   public class SingletonTest  
  2.   {  
  3.   private static SingletonTest sp;  
  4.   private SingletonTest() {}  
  5.   public static SingletonTest getInstance()  
  6.   {  
  7.   if (sp==null)  
  8.   { sp=new SingletonTest(); }  
  9.   return sp;  
  10.   } 

25. 編程:編寫一個(gè)截取字符串的函數(shù),輸入為一個(gè)字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 但是要保證漢字不被截半個(gè),如“我ABC”4,應(yīng)該截為“我AB”,輸入“我ABC漢DEF”,6,應(yīng)該輸出為“我ABC”而不是“我ABC+漢的半個(gè)”。
解:

  1.   import Java.io.*;  
  2.   class interceptString  
  3.   {  
  4.   String interceptStr;  
  5.   int interceptByte;  
  6.   public interceptString(String str,int bytes)  
  7.   {  
  8.   interceptStr=str;  
  9.   interceptByte=bytes;  
  10.   System.out.println(“字符串為:’“+interceptStr+“’;字節(jié)數(shù)為:“+interceptByte);  
  11.   }  
  12.   public void interceptIt()  
  13.   {  
  14.   int interceptCount; interceptCount=(interceptStr.length()%interceptByte==0)?        (interceptStr.length()/interceptByte):   (interceptStr.length()/interceptByte+1);  
  15.   System.out.println(“截取后斷數(shù)為:“+interceptCount);  
  16.   for (int i=1;i〈=interceptCount ;i++ )  
  17.   { if (i==interceptCount)  
  18.   {  
  19.   System.out.println(interceptStr.substring((i-1)*interceptByte,interceptStr.length()));  
  20.   } else 
  21.   {  
  22.   System.out.println(interceptStr.substring((i-1)*interceptByte,(i*interceptByte)));  
  23.   }  
  24.   }  
  25.   }  
  26.   public static void main(String[] args)  
  27.   {  
  28.   String s=““;  
  29.   InputStreamReader ir=new InputStreamReader(System.in);  
  30.   BufferedReader in = new BufferedReader(ir);  
  31.   try {  
  32.   s = in.readLine();  
  33.   interceptString ss = new interceptString(s,4);  
  34.   ss.interceptIt();  
  35.   in.close();  
  36.   } catch (IOException e)  
  37.   { e.printStackTrace();}  
  38.   }  
  39.   } 

以上便是這25道典型的Java試題以及其答案,希望對(duì)你有所幫助。

【編輯推薦】

  1. 對(duì)Java編程思想的忠告
  2. 和我共同了解Java是什么
  3. 著名的Java論壇和網(wǎng)站
  4. 2009年十大Java技術(shù)解決方案
  5. 2008最值得學(xué)習(xí)的五種JAVA技術(shù)
責(zé)任編輯:仲衡 來源: IT人生
相關(guān)推薦

2011-02-24 09:41:25

PHP代碼

2010-12-02 11:31:24

2009-02-18 10:17:06

Java學(xué)習(xí)要點(diǎn)JSP

2020-03-27 15:03:17

React JS框架開發(fā)平臺(tái)

2022-07-22 10:06:17

JavaScript代碼

2020-07-01 09:58:42

Java 編程語言開發(fā)

2015-12-28 11:17:30

Java機(jī)器學(xué)習(xí)工具

2013-04-17 17:15:40

2017-09-11 20:16:58

2009-06-24 17:42:42

Java高手

2011-11-25 09:56:45

Java程序員

2019-09-10 10:48:10

RedisJava面試題

2019-02-26 09:42:14

開源技術(shù) 趨勢

2020-01-03 10:24:06

Python 開發(fā)編程語言

2015-10-08 16:23:17

2024-01-10 08:00:00

Java編程語言

2012-04-11 10:03:00

JavaEclipse

2010-11-26 10:31:44

2020-07-24 07:55:43

數(shù)據(jù)工具技術(shù)

2023-05-04 23:59:46

React開發(fā)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)