?? java.txt
字號:
}
}
解析:ThreadTest繼承java.lang.Thread類,重寫了run()方法,實現了Java中的線程。ThreadTest t定義了空的線程對象,下面t.start()啟動了這個線程,因此ThreadTest t=new ______;就應該是實例化該線程對象,所以空格中應填ThreadTest()。
Swing的頂層容器有:JApplet、JWindow、JDialog和__JFrame____。
頂層容器:JFrame、JApplet、JDialog和JWindow共4個。
中間容器:JPanel、JScrollPane、JSplitPane、JToolBar。
特殊容器:JInternalFrame、JLayeredPane、JRootPane。
基本控件:JButton、JComboBox、JList、JMenu、JSlider、JTextField。
不可編輯信息的構件:JLabel、JProgressBar、ToolTip、
可編輯信息的構件:JColorChooser、JFileChooser、JFileChooser、JTable、JTextArea
所有的這些構件的分類都是按功能來劃分的。
14 下列敘述中正確的是___D___。
A、一個邏輯數據結構只能有一種存儲結構
B、數據的邏輯結構屬于線性結構,存儲結構屬于非線性結構
C、一個邏輯數據結構可以有多種存儲結構,且各種存儲結構不影響數據處理的效率
D、一個邏輯數據結構可以有多種存儲結構,且各種存儲結構影響數據處理的效率
解析:一般來說,一種數據的邏輯結構根據需要可以表示成多種存儲結構,常用的存儲結構有順序、鏈接、索引等存儲結構。而采用不同的存儲結構,其數據處理的效率是不同的。
15 Java的圖形用戶界面的最基本的組成部分就是構件(Component),構件是一個可以以圖形化的方式顯示在屏幕上并能與用戶交互的對象,但構件不能獨立地顯示出來,必須將構件放在一定的容器中才可以顯示出來。解析:容器Container是一個類,因為容器本身也是一個構件,具有構件的所有性質,因此繼承之Component類。
16 下列敘述中,錯誤的是__A____。
A、File類能夠存儲文件 B、File類能夠讀寫文件C、File類能夠建立文件D、File類能夠獲取文件目錄信息
解析:文件類File是java.io包中的一個重要的非流類,它以一種與系統無關的方式表示一個文件對象的屬性。而目錄在Java中作為一種特殊文件,即文件名的列表,通過類File所提供的方法,可得到文件或目錄的描述信息(包括名字、路徑、長度、可讀、可寫等),也可以生成新文件、目錄、修改文件和目錄,查詢文件屬性,重命名文件或者刪除文件。
17 下列敘述中,正確的是___C___。
A、Reader是一個讀取字符文件的接口 B、Reader是一個讀取數據文件的抽象類
C、Reader是一個讀取字符文件的抽象類 D、Reader是一個讀取字節文件的一般類
解析:Java中的流分為兩種,一種是字節流,另一種是字符流,分別由四個抽象類來表示(每種流包括輸入和輸出兩種,所以一共四個):InputStream,OutputStream,Reader,Writer。Java中其他多種多樣變化的流均是由它們派生出來的。
在這其中InputStream和OutputStream在早期的Java版本中就已經存在了,它們是基于字節流的,而基于字符流的Reader和Writer是后來加入作為補充的。在這四個抽象類中,InputStream和Reader定義了完全相同的接口:
int read()
int read(char cbuf[])
int read(char cbuf[], int offset, int length)
而OutputStream和Writer也是如此:
int write(int c)
int write(char cbuf[])
int write(char cbuf[], int offset, int length)
18 用于輸入壓縮文件格式的ZipInputStream類所屬包是___D___。
A、java.util B、java.io C、java.nio D、java.util.zip
解析:ZipInputStream該對象用于從ZIP壓縮文件中創建輸入流對象。
對象定義結構:java.util.zip.ZipInputStream
靜態成員變量:CENATT、CENATX、CENCRC……,這些靜態成員變量用于定義在壓縮過程中采用的壓縮算法。
構造方法:ZipInputStream(InputStream in)應用輸入流對象創建從ZIP文件中讀取數據的輸入流對象。
成員方法:
int available() 判斷當前入口指定的壓縮原始文件中是否還有未讀數據。
void close() 關閉ZIP輸入流對象。
void closeEntry() 關閉被讀取的ZIP入口,并移動到下一壓縮原始文件入口。
protectedZipEntry createZipEntry(String name) 利用指定的名稱創建ZipEntry對象實例。
ZipEntry getNextEntry() 將輸入流對象移動到下一入口對象。
int read(byte[] b, int off, int len) 從當前ZipEntry中讀取字節數組。
long skip(long n) 將輸入流指定的讀取數據位置移動n個字節。
在Swing中用輕量級的構件替代了AWT中的重量級的構件,而且Swing的替代構件中都包含有一些其他的特性。與AWT構件不同,Swing構件不能直接添加到頂層容器中,它必須添加到一個與Swing頂層容器相關聯的內容面板(contentPane)上。
19 查找隨機文件的記錄時,應使用的方法是___C___。
A、readInt() B、readBytes(int n) C、seek(long l) D、readDouble()
文件操作中經常需要的是隨機訪問,Java中的RandomAccessFile類提供隨機訪問文件的功能,其中的seek方法實現了查找隨機文件記錄的功能,格式如下:
void seek( long pos ); //用于移動文件指針到指定的位置
公選課JAVA練習題
一、選擇
1.在瀏覽器中執行applet 程序,以下選項中的哪個方法將被最后執行( )。
A、init() B、start() C、destroy() D、stop()
2.在使用interface聲明一個接口時,只可以使用( )修飾符修飾該接口。
A、private B、protected C、private protected D、public
3.有以下方法的定義,請選擇該方法的返回類型( D )。
ReturnType method(byte x, float y)
{
return (short)x/y*2;
}
A、byte B、short C、int D、float
4.設有下面兩個類的定義:
class Person { class Student extends Person {
long id; // 身份證號 int score; // 入學總分
String name; // 姓名 int getScore(){
} return score;
}
}
則類Person和類Student的關系是( B )。
A、包含關系 B、繼承關系 C、關聯關系 D、上述類定義有語法錯誤
5.在編寫Java Applet程序時,需要在程序的開頭寫上( B )語句。
A、import java.awt.* ; B、import java.applet.* ;
C、import java.io.* ; D、import java.awt.event.* ;
6.以下哪個不是Java的關鍵字?( )
A、FALSE B、const C、this D、void
7.有程序如下,關于程序的描述哪個是正確的?( )
public class Person{
static int arr[] = new int[5];
public static void main(String a[])
{ System.out.println(arr[0]); }
}
A、編譯將產生錯誤 B、編譯時正確,但運行時將產生錯誤
C、正確,輸出0 D、正確,輸出 null
最佳答案
1.C 樓上d錯, applet 的執行過程:
init()->start()<->stop()->destroy() 所以最后是destroy方法. 其中start和stop是可以相互轉化的,比如你的瀏覽器是當前窗口的時候,剛進入的時候就調用start方法了,當切換為非當前窗口的時候,就調用stop方法,當瀏覽器被關閉的時候,就調用destroy方法.
2.D 接口只能是公共的.
3.D 樓上的誤會short是對表達式結果的強制轉換,其實它只是強制轉換了一個x而已,不是對整體表達式的轉換.由于y是float類型的,所以計算出來的值也只能是float類型的,再說,如果計算結果是short類型的,我返回為值float或者int也是沒有問題的,java會幫你做隱式的轉換為相應的類型,因為short的精度沒有float和int高.所以答案是D
4.B 只要return score;在花括號里面就是對的(不知道lz打題目的時候打對了沒有),否則是錯的. 別以為錯,題目在定義一個內部類而已.
5.B 樓上的只是想用japplet而已,要用applet應該要應用java.applet.*包
用japplet用 javax.swing.JApplet包
6.A java大小寫敏感所以a不是關鍵字,其他的this代表當前對象,void修飾為無返回值函數,都是關鍵字,const為保留字,在c++中用于定義常量.
7.C 對于類的變量是基本類型來說,默認值都是0,boolean類型都為false.如果是數值數組的話,默認的都是0.所以是c.
java面試題集及答案解析
lmx8757921 整理 更新:2006-06-02 17:10:44 版本: 1.0
基礎知識:
1.Java中的異常處理機制的簡單原理和應用。
當JAVA程序違反了JAVA的語義規則時,JAVA虛擬機就會將發生的錯誤表示為一個異常。違反語義規則包括2種情況。一種是JAVA類庫內置的語義檢查。例如數組下標越界,會引發IndexOutOfBoundsException;訪問null的對象時會引發NullPointerException。另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創建自己的異常,并自由選擇在何時用throw關鍵字引發異常。所有的異常都是java.lang.Thowable的子類。
2. Java的接口和C++的虛類的相同和不同處。
由于Java不支持多繼承,而有可能某個類或對象要使用分別在幾個類或對象里面的方法或屬性,現有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈活性,因為接口中沒有任何實現代碼。當一個類實現了接口以后,該類要實現接口里面所有的方法和屬性,并且接口里面的屬性在默認狀態下面都是public static,所有方法默認情況下是public.一個類可以實現多個接口。
3. 垃圾回收的優點和原理。并考慮2種回收機制。
Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程序員最頭疼的內存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內存管理。由于有個垃圾回收機制,Java中的對象不再有“作用域”的概念,只有對象的引用才有“作用域”。垃圾回收可以有效的防止內存泄露,有效的使用可以使用的內存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收。回收機制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收。
4. 請說出你所知道的線程同步的方法。
wait():使一個線程處于等待狀態,并且釋放所持有的對象的lock。
sleep():使一個正在運行的線程處于睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。
notify():喚醒一個處于等待狀態的線程,注意的是在調用此方法的時候,并不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先級。
Allnotity():喚醒所有處入等待狀態的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。
5. 請講一講析構函數和虛函數的用法和作用。
6. Error與Exception有什么區別?
Error表示系統級的錯誤和程序不必處理的異常,
Exception表示需要捕捉或者需要程序進行處理的異常。
7. 在java中一個類被聲明為final類型,表示了什么意思?
表示該類不能被繼承,是頂級類。
8. 描述一下你最常用的編程風格。
9. heap和stack有什么區別。
棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧按照后進先出的方式進行處理。
堆是棧的一個組成元素
10. 如果系統要使用超大整數(超過long長度范圍),請你設計一個數據結構來存儲這種超大型數字以及設計一種算法來實現超大整數加法運算)。
public class BigInt()
{
int[] ArrOne = new ArrOne[1000];
String intString="";
public int[] Arr(String s)
{
intString = s;
for(int i=0;i<ArrOne.leght;i++)
{
11. 如果要設計一個圖形系統,請你設計基本的圖形元件(Point,Line,Rectangle,Triangle)的簡單實現
12,談談final, finally, finalize的區別。
final?修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。
finally?再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執行,然后控制就會進入 finally 塊(如果有的話)。
finalize?方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。
13,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)?
匿名的內部類是沒有名字的內部類。不能extends(繼承) 其它類,但一個內部類可以作為一個接口,由另一個內部類實現。
14,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。
Nested Class (一般是C++的說法),Inner Class (一般是JAVA的說法)。Java內部類與C++嵌套類最大的不同就在于是否有指向外部的引用上。具體可見http: //www.frontfree.net/articles/services/view.ASP?id=704&page=1
注: 靜態內部類(Inner Class)意味著1創建一個static內部類的對象,不需要一個外部類對象,2不能從一個static內部類的一個對象訪問一個外部類對象
第四,&和&&的區別。
&是位運算符。&&是布爾邏輯運算符。
15,HashMap和Hashtable的區別。
都屬于Map接口的類,實現了將惟一鍵映射到特定的值上。
HashMap 類沒有分類或者排序。它允許一個 null 鍵和多個 null 值。
Hashtable 類似于 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因為它是同步的。
16,Collection 和 Collections的區別。
Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。
Collection是個java.util下的接口,它是各種集合結構的父接口。
17,什么時候用assert。
斷言是一個包含布爾表達式的語句,在執行這個語句時假定該表達式為 true。如果表達式計算為 false,那么系統會報告一個 Assertionerror。它用于調試目的:
assert(a > 0); // throws an Assertionerror if a <= 0
斷言可以有兩種形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 應該總是產生一個布爾值。
Expression2 可以是得出一個值的任意表達式。這個值用于生成顯示更多調試信息的 String 消息。
斷言在默認情況下是禁用的。要在編譯時啟用斷言,需要使用 source 1.4 標記:
javac -source 1.4 Test.java
要在運行時啟用斷言,可使用 -enableassertions 或者 -ea 標記。
要在運行時選擇禁用斷言,可使用 -da 或者 -disableassertions 標記。
要系統類中啟用斷言,可使用 -esa 或者 -dsa 標記。還可以在包的基礎上啟用或者禁用斷言。
可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用于驗證傳遞給私有方法的參數。不過,斷言不應該用于驗證傳遞給公有方法的參數,因為不管是否啟用了斷言,公有方法都必須檢查其參數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試后置條件。另外,斷言不應該以任何方式改變程序的狀態。
18,GC是什么? 為什么要有GC? (基礎)。
GC是垃圾收集器。Java 程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
19,String s = new String("xyz");創建了幾個String Object?
兩個對象,一個是“xyx”,一個是指向“xyx”的引用對象s。
20,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
21,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化為short型。可修改為s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。
22,sleep() 和 wait() 有什么區別? 搞線程的最愛
sleep()方法是使線程停止一段時間的方法。在sleep 時間間隔期滿后,線程不一定立即恢復執行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調度為放棄執行,除非(a)“醒來”的線程具有更高的優先級 (b)正在運行的線程因為其它原因而阻塞。
wait()是線程交互時,如果線程對一個同步對象x 發出一個wait()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。
23,Java有沒有goto?
Goto?java中的保留字,現在沒有在java中使用。
24,數組有沒有length()這個方法? String有沒有length()這個方法?
數組沒有length()這個方法,有length的屬性。
String有有length()這個方法。
25,Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。
26,Set里的元素是不能重復的,那么用什么方法來區分重復與否呢? 是用==還是equals()? 它們有何區別?
Set里的元素是不能重復的,那么用iterator()方法來區分重復與否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -