java期末考试试卷及答案文库_JAVA期末考试试题及答案.docx
x[j+1])
{ w=x[j]; x[j]=x[j+1]; x[j+1]=w; }
/* if(i==1||i==2) ShowArray(x); if(i==2) break; */
}
}
public static void ShowArray(int b[])
{
for(int i=0; iy; System.out.println("x>y=="+flag); flag=z>w; System.out.println("z>w=="+flag);
}
}
四、問答題:(每題 5 分,)
1. Java的接口和 C++ 的虛類的相同和不同處。
由于 Java 不支持多繼承,而有可能某個類或對象要使用分別在幾個類或對象里面的方法或屬性, 現有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈活性, 因為接口中沒有任何實現代碼。 當一個類實現了接口以后, 該類要實現接口里
面所有的方法和屬性,并且接口里面的屬性在默認狀態下面都是public static ,所有方法默認情況下是 public.一個類可以實現多個接口。
2. 垃圾回收的優點和原理。并考慮2 種回收機制。
Java語言中一個顯著的特點就是引入了垃圾回收機制,使 c++ 程序員最頭疼的存管理的問題迎刃而解,它使得Java 程序員在編寫程序的時候不再需要考慮存管理。由于有個垃圾回收機制, Java中的對象不再有 "作用域" 的概念,只有對象的引用才有 "作用域"。垃圾回收可以有效的防止存泄露,有效的使用可以使用的存。垃圾回收器 通常是作為一個單獨的低級別的線程運行,不可預知的情況下對存堆中已經死亡的或 者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個
對象或所有對象進行垃圾回收。 回收機制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收。
3,談談 final, finally, finalize 的區別。
Final-修飾符(關鍵字) 如果一個類被聲明為final,意味著它不能再派生出新的 子類,不能作為父類被繼承。因此一個類不能既被聲明為abstract 的,又被聲明為final 的。將變量或方法聲明為 final,可以保證它們在使用中不被改變。被聲明為 final 的變量必須在聲明時給定初值, 而在以后的引用中只能讀取, 不可修改。被聲明為 final 的方法也同樣只能使用,不能重載。
Finally-再異常處理時提供finally 塊來執行任何清除操作。如果拋出一個異常, 那么相匹配的catch 子句就會執行,然后控制就會進入finally 塊(如果有的話)。
Finalize-方法名。 Java 技術允許使用finalize()方法在垃圾收集器將對象從存 中清除出去之前做必要的清理工作。 這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize()方法是在垃圾收集器刪除對象之前對這個對象調用的。
4,數組有沒有 length ()這個方法?String 有沒有 length ()這個方法?舉例說明使用方法?
數組沒有 length ()這個方法,有 length 的屬性。
String 有有 length ()這個方法。
5. Java中的異常處理機制的簡單原理和應用。
當 JAVA程序違反了 JAVA的語義規則時, JAVA 虛擬機就會將發生的錯誤表示為一個異常。違反語義規則包括2 種情況。一種是 JAVA類庫置的語義檢查。例如數組下標 越界 , 會 引 發 IndexOutOfBoundsException ; 訪問 null 的 對象 時會 引發NullPointerException. 另一種情況就是 JAVA允許程序員擴展這種語義檢查, 程序員可以創建自己的異常,并自由選擇在何時用throw 關鍵字引發異常。所有的異常都是java.lang.Thowable 的子類。
五、程序設計:(每題 11 分,共 33 分)
1、編程:編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節
截取的字符串。但是要保證漢字不被截半個,如 "我 ABC"4,應該截為 "我 AB",輸入 "我 ABC 漢 DEF",6,應該輸出為 "我 ABC"而不是"我 ABC+漢的半個 "。
2、編程求解:所有兩位整數能被3 整除的數的和,以及不能被3 整除的數的各位數字之和。
3、設計一個程序求解e 的值。精度達到 1.0e-6,
4、請設計一個對 N 個數進行排序的程序
一、選擇題(每道題只有一個正確答案,每小題2 分,共 30 分) 15 道題
1、關于 Java語言敘述錯誤的是: ( C )
A. Java語言具有跨平臺性
B. Java是一種面向對象的語言
C. Java語言中的類可以多繼承
D. Java的垃圾收集機制自動回收程序已不再使用的對象2、以下敘述正確的是: ( B )的確臺 a A.構造方法必須是 public 方法
B.main 方法必須是 public 方法
C. Java應用程序的文件名可以是任意的D.構造方法應該聲明為void 類型
3、關于 Java中數據類型敘述正確的是: ( B )
A、整型數據在不同平臺下長度不同
B.boolean 類型數據只有 2 個值, true 和 false C.數組屬于簡單數據類型
D. Java中的指針類型和 C 語言的一樣
4、設 int x=1,float y=2 ,則表達式 x / y 的值是:( D )
A.0 B.1 C.2
D.以上都不是
5、以下語句有語法錯的是: ( A )
A.int x=1 ;y=2 ;z=3
B.for (int x=10,y=0 ;x>0;x++);
C.while (x>5);
D.for(; ;);
6、關于類和對象的敘述正確的是: ( A )
A. Java的類分為兩大部分:系統定義的類和用戶自定義的類B.類的靜態屬性和全局變量的概念完全一樣,只是表達形式不同C.類的成員至少有一個屬性和一個方法
D.類是對象的實例化
7、以下有關構造方法的說法,正確的是: ( A )
A.一個類的構造方法可以有多個 B.構造方法在類定義時被調用 C.構造方法只能由對象中的其它方法調用 D.構造方法可以和類同名,也可以和類名不同
8、以下有關類的繼承的敘述中,正確的是: ( D ) A.子類能直接繼承父類所有的非私有屬性,也可通過接口繼承父類的私有屬性B.子類只能繼承父類的方法,不能繼承父類的屬性 C.子類只能繼承父類的非私有屬性,不能繼承父類的方法 D.子類不能繼承父類的私有屬性
9、下列屬于容器的組件有: ( B )
A.JButton B.JPane C.Canvas D.JTextArea
10、void 的含義:( C ) A.方法體為空 B.定義的方法沒有形參 C.定義的方法沒有返回值 D.方法的返回值不能參加算術運算
11、關于 Java中異常的敘述正確的是: ( D ) A.異常是程序編寫過程中代碼的語法錯誤 B.異常是程序編寫過程中代碼的邏輯錯誤 C.異常出現后程序的運行馬上中止 D.異常是可以捕獲和處理的
12、所有的異常類皆繼承哪一個類?(C ) A.java.io.Exception B.java.lang.Throwable C.java.lang.Exception
D.java.lang.Error
13、下面哪個不是 java 語言中的關鍵字?(B )
A.long B.sizeof C.instanceof D.const
14、為實現進程之間的通信,需要使用下列那種流才合適?(D) A.Data stream
B.File stream C.Buffered stream D.Piped stream
15、在復選框中移動鼠標, 然后單擊一選項, 要捕獲所選項必需實現哪個接口?(D)
A.ActionListener B.MouseListener C.MouseMotionListern D.ItemListener
二、填空題(每空 1 分,共 20 分)
1、面向對象程序設計所具有的基本特征是:
_多態性
2、數組 x 定義如下
int x[ ][ ]=new int[3][2]
則 x..length 的 值為 3 ,
x[0].length 的 值為 2 。
抽象性 ,_封裝性 ,_繼承性 ,
3、Java中實現多線程一般使用兩種方法, 一是 繼承 Thread 類 ,二是 實現 Runnable 方法
4、Java的圖形用戶界面設計中,有很多布局管理器用來擺放組件的位置,一般用到
的 布 局 管理 器 有 ( 列 出 四 種 即 可 ) FlowLayout , GridLayout ,
BorderLayout ,CardLayout
5、Applet 常用的方法是: init()_、 run() 、 stop() 和 destroy()。三、閱讀程序,寫出程序的輸出結果(每題5 分,共 20 分)
1、class A{
private int privateVar;
A(int _privateVar){
privateVar=_privateVar;
}
boolean isEqualTo(A anotherA){ if(this.privateVar == anotherA.privateVar) return true;
else
return false;
}
}
public class B{
public static void main(String args[]){ A a = new A(1);
A b = new A(2);
System.out.println(a.isEqualTo(b));
}
}
程序的輸出結果為: false 2、class A {
double f(double x, double y) { return x * y;
}
}
class B extends A {
double f(double x, double y) { return x + y;
}
public class Test {
public static void main(String args[]) { B obj = new B();
System.out.println("The program output is " + obj.f(4, 6));
}
}
程序的輸出結果為: The program output is 10_ 3、public class Unchecked {
public static void main(String[] args) { try {
method();
} catch (Exception e) { System.out.println("A");
} finally { System.out.println("B");
}
}
static void method() { try {
wrench();
System.out.println("C");
} catch (ArithmeticException e) { System.out.println("D");
} finally { System.out.println("E");
}
System.out.println("F");
static void wrench() {
throw new NullPointerException();
}
}
程序的輸出結果為:
E A B
4、public class Test {
public static void main(String[] args) { int x;
int a[] = { 0, 0, 0, 0, 0, 0 };
calculate(a, a[5]);
System.out.println("the value of a[0] is " + a[0]); System.out.println("the value is a[5] is " + a[5]);
}
static int calculate(int x[], int y) { for (int i = 1; i < x.length; i++)
if (y < x.length) x[i] = x[i - 1] + 1;
return x[0];
}
}
程序的輸出結果為: the value of a[0] is 0 the value is a[5] is 5
1. 下面哪些是 short 型的取值圍[C]
A. -27 –27-1
B. 0 –216-1
C. -215 –215-1
D. -231 –231-1
2. 下面哪些是合法的標識符[ABE]
A. $persons
B. TwoUsers
C. *point
D. this
E. _endline
3. 哪些是將一個十六進制值賦值給一個long 型變量 [D]
A. long number = 345L;
B. long number = 0345;
C. long number = 0345L;
D. long number = 0x345L;
4. 下面的哪些程序片斷可能導致錯誤。[BD] A.
String s = "Gone with the wind"; String t = " good ";
String k = s + t;
B.
String s = "Gone with the wind"; String t;
t = s[3] + "one";
C.
String s = "Gone with the wind"; String standard = s.toUpperCase();
D.
String s = "home directory";
String t = s - "directory";
5. 在// point x 處的哪些聲明是合法的[DE] class Person {
private int a;
public int change(int m){ return m; }
}
public class Teacher extends Person { public int b;
public static void main(String arg[]){ Person p = new Person(); Teacher t = new Teacher();
int i;
// point x
}
}
A. i = m;
B. i = b;
C. i = p.a;
D. i = p.change(30);
E. i = t.b;
6. 當 Frame 的大小被改變時 , Frame 中的按鈕的位置也可能被改變, 請問此時使用的是什么布局管理器[B]
A. BorderLayout
B. FlowLayout
C. CardLayout
D. GridLayout
7. 給出下面的代碼片斷
1 public void create() {
2 Vector myVect;
3 myVect = new Vector(); 4 }
下面的哪些述是正確的 ? [ADE]
A. 第二行的聲明不會為變量myVect 分配存空間。// 指的是堆空間 ,只是在棧中分配;這里不用較真 .自己理解就好 ;
B. 第二行的聲明分配一個到Vector 對象的引用的存空間。
C. 第二行語句創建一個Vector 類對象。
D. 第三行語句創建一個 Vector 類對象。
E. 第三行語句為一個 Vector 類對象分配存空間。
// 分配棧空間 ,相當于指針 ,但是不分配 "到 Vector 對象的引用的空間 ";選項二的意思是分配了堆空間 ;
8. 下面的哪些答案可以用以表示八進制值8? [A]
A. 010
B. 0x10
C. 08
D. 0x8
9. 哪些不是 Java關鍵字 [AB]
A. TRUE
B. sizeof
C. const
D. super
E. void
10. 下面的哪些敘述為真。[AD]
A. equals()方法判定引用值是否指向同一對象。// 不說是誰的就是默認的
B. == 操作符判定兩個分立的對象的容和類型是否一致。
C. equals()方法只有在兩個對象的容一致時返回true。
D. 類 File 重寫方法 equals()在兩個分立的對象的容和類型一致時返回true。 // 當兩個獨立的對象的容和類型一致;
11. 下面關于繼承的哪些敘述是正確的。[AD]
A. 在 java 中只允許單一繼承。
B. 在 java 中一個類只能實現一個接口。
C. 在 java 中一個類不能同時繼承一個類和實現一個接口。
D. java 的單一繼承使代碼更可靠。
12. 第十行的聲明將調用哪些方法. [D] 1 class Person {
2 public void printValue(int i, int j) { }
3 public void printValue(int i){ } 4 }
5 public class Teacher extends Person {
6 public void printValue() { }
7 public void printValue(int i) {}
8 public static void main(String args[]){
9 Person t = new Teacher();
10 t.printValue(10); 11}
12 }
A. 第 2 行的方法
B. 第 3 行的方法
C. 第 6 行的方法
D. 第 7 行的方法
13. 下面哪些不是 java 的原始數據類型[BC]
A. short
B. Boolean
C. unit
D. float
14. 下面的哪些關鍵字通常用來對對象的加鎖,該標記使得對對象的訪問是排他的?
[B]
A. transient
B. synchronized
C. serialize
D. static
15. main()方法的返回類型是什么?[B]
A. int
B. void
C. boolean
D. static
16. 給出以下關于一個使用適當的字符間距的字體的TextField 的表達式TextField t = new TextField("they are good",40);//40指的是像素
哪些敘述是對的?[D]
A. 被顯示的字符串可以使用多種字體。
B. 一行中最大的字符數是40
C. 顯示的寬度正好是 40 個字符寬。
D. 用戶可以編輯字符。
17. 關于垃圾收集的哪些敘述是對的?[B]
A. 程序開發者必須自己創建一個線程進行存釋放的工作。
B. 垃圾收集將檢查并釋放不再使用的存。
C. 垃圾收集允許程序開發者明確指定并立即釋放該存。
D. 垃圾收集能夠在期望的時間釋放被java 對象使用的存。
18. 給出下面的代碼
1 public class Test {
2 int m, n;
3 public Test() {}
4 public Test(int a) { m=a; }
5 public static void main(String arg[]) {
6
Test t1,t2;
7
int j,k;
8
j=0; k=0;
9
t1=new Test();
10
t2=new Test(j,k);
11
}
12 }
在編譯時哪行將導致一個錯誤?
總結
以上是生活随笔為你收集整理的java期末考试试卷及答案文库_JAVA期末考试试题及答案.docx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特斯拉司机被 Autopilot 警告
- 下一篇: 微服务升级优点_微服务–——定义, 原则