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

創(chuàng)新互聯(lián)2013年開(kāi)創(chuàng)至今,先為晉安等服務(wù)建站,晉安等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為晉安企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
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è)類(lèi)被聲明為final類(lèi)型,表示了什么意思?
答:表示該類(lèi)不能被繼承,意味著它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承,是頂級(jí)類(lèi)。
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è)類(lèi)被聲明為final,意味著它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承。因此一個(gè)類(lèi)不能既被聲明為 abstract,又被聲明為final。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖?。被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。
Finally是在異常處理時(shí)提供 finally 塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話(huà)),只要有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ò)誤都是一樣的,后者只是加法的寫(xiě)法不一樣,兩個(gè)錯(cuò)誤都是因?yàn)閟1是short型而1是整型相加后數(shù)據(jù)類(lèi)型就變?yōu)檎土耍cs1定義為short型有矛盾,必須進(jìn)行強(qiáng)制類(lèi)型轉(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)是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn),重載(Overloading)是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數(shù),我們說(shuō)該方法被覆蓋 (Overriding)。子類(lèi)的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類(lèi)中的定義,對(duì)它而言,父類(lèi)中的定義如同被“屏蔽”了。如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法可以改變返回值的類(lèi)型。
10. abstract class和interface有什么區(qū)別?
答:聲明方法的存在而不去實(shí)現(xiàn)它的類(lèi)被叫做抽象類(lèi)(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類(lèi),并為該類(lèi)聲明方法,但不能在該類(lèi)中實(shí)現(xiàn)該類(lèi)的情況。不能創(chuàng)建abstract 類(lèi)的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類(lèi)型是一個(gè)抽象類(lèi),并讓它指向具體子類(lèi)的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類(lèi)的子類(lèi)為它們父類(lèi)中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類(lèi)為。取而代之,在子類(lèi)中實(shí)現(xiàn)該方法。知道其行為的其它類(lèi)可以在類(lèi)中實(shí)現(xiàn)這些方法
接口(interface)是抽象類(lèi)的變體。在接口中,所有方法都是抽象的。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒(méi)有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類(lèi)相似,除了該實(shí)現(xiàn)類(lèi)不能從接口定義中繼承行為。當(dāng)類(lèi)實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類(lèi)的任何對(duì)象上調(diào)用接口的方法。由于有抽象類(lèi),它允許使用接口名作為引用變量的類(lèi)型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類(lèi)型或從接口類(lèi)型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類(lèi)是否實(shí)現(xiàn)了接口
11. 構(gòu)造器Constructor是否可被override?
答:可以。
12. 是否可以繼承String類(lèi)?
答:String類(lèi)是final類(lèi)所以不可以繼承。
13. 題目如下:
父類(lèi):
- public class FatherClass
- {
- public FatherClass()
- {
- System.out.println(“FatherClass Create“);
- }
- }
子類(lèi):
- 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. 多線(xiàn)程有幾種實(shí)現(xiàn)方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么?
答:多線(xiàn)程有三種實(shí)現(xiàn)方法,分別為:
?、?實(shí)現(xiàn)Runnable接口,覆蓋Run()方法。
?、?繼承Thread,覆蓋Run()方法。
?、?繼承TimerTask,覆蓋Run()方法。
同步的實(shí)現(xiàn)是在方法前加synchronized,在調(diào)用wait()和notify()。
15. 請(qǐng)說(shuō)出你所知道的線(xiàn)程同步的方法
答:1. synchronized 方法:通過(guò)在方法聲明中加入 synchronized關(guān)鍵字來(lái)聲明 synchronized 方法。
2. synchronized 塊:通過(guò) synchronized關(guān)鍵字來(lái)聲明synchronized 塊。
16. 當(dāng)一個(gè)線(xiàn)程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線(xiàn)程是否可進(jìn)入此對(duì)象的其它方法?
答:不可以。synchronized 方法都必須獲得調(diào)用該方法的類(lèi)實(shí)例的鎖方能執(zhí)行,否則所屬線(xiàn)程阻塞,方法一旦執(zhí)行,就獨(dú)占該鎖,直到從該方法返回時(shí)才將鎖釋放,此后被阻塞的線(xiàn)程才能獲得該鎖,重新進(jìn)入可執(zhí)行狀態(tài)。
17. 用Java SOCKET編程,實(shí)現(xiàn)簡(jiǎn)單的Echo功能
如: 客戶(hù)端從鍵盤(pán)輸入 hi (當(dāng)用戶(hù)輸出exit 退出程序),服務(wù)端響應(yīng)為 hi(服務(wù)器要求為多線(xiàn)程)
解:服務(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();
- }
- }
- }
客戶(hù)端程序:
- import Java.net.*;
- import Java.io.*;
- public class MyClient{
- public static void main(String[] args)throws Exception
- {
- Socket server=new Socket(“l(fā)ocalhost“,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();
- }
- }
18.
- 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();
- }
19. STRING與STRINGBUFFER的區(qū)別。
答:STRING的長(zhǎng)度是不可變的,一旦一個(gè)String對(duì)象被創(chuàng)建,包含在這個(gè)實(shí)例中的內(nèi)容(“字符串”)不可以被更改,直至這個(gè)對(duì)象被銷(xiāo)毀,因此,指向一個(gè) String對(duì)象的變量實(shí)質(zhì)上是一個(gè)常量,String對(duì)象也被稱(chēng)為常量對(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()方法
20. Java類(lèi)實(shí)現(xiàn)序例化的方法是?
答:Java類(lèi)要實(shí)現(xiàn)序列化,對(duì)應(yīng)的類(lèi)必須先實(shí)現(xiàn)Serializable和Externalizable這兩種接口,然后就可以調(diào)用ObjectOutputStream的witeObject()方法來(lái)保存對(duì)象以及通過(guò)ObjeatInputStream的readObjeact()方法來(lái)讀取保存的對(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) , 并畫(huà)出來(lái)。
〈〉Collection
〈〉Set
〈〉List
HashSet
Tree set
ArrayList
Vector
23. 編程題:列出某文件夾下的所有文件 (文件夾從命令行輸入)。
解:
- 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();
- }
- }
- }
24. 編程題::寫(xiě)一個(gè)滿(mǎn)足Singleton模式的類(lèi)出來(lái)。
- public class SingletonTest
- {
- private static SingletonTest sp;
- private SingletonTest() {}
- public static SingletonTest getInstance()
- {
- if (sp==null)
- { sp=new SingletonTest(); }
- return sp;
- }
25. 編程:編寫(xiě)一個(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();}
- }
- }
以上便是這25道典型的Java試題以及其答案,希望對(duì)你有所幫助。
分享標(biāo)題:精選的25個(gè)Java試題分享
本文網(wǎng)址:http://m.5511xx.com/article/ccojcec.html


咨詢(xún)
建站咨詢(xún)
