一、 選擇題
下列各題 A )、 B )、 C )、 D )四個選項中,只有一個選項是正確的,請將正確選項的標記寫在題干后的括號內。
1. 下列語句序列執行后, k 的值是 ( ) 。
int m=3, n=6, k=0;
while( (m++) < ( -- n) ) ++k;
A) 0 B)
2. 設 i 、 j 為 int 型變量名, a 為 int 型數組名,以下選項中,正確的賦值語句是 ( ) 。
A) i = i + 2 B) a[0] = 7;
C) i++ - --j; D) a(0) = 66;
3. Java 語言的類間的繼承關系是 ( ) 。
A) 多重的 B) 單重的 C) 線程的 D) 不能繼承
4. 下列選項中,用于在定義子類時聲明父類名的關鍵字是 ( ) 。
A ) interface B) package C) extends D) class
5. 以下由 for 語句構成的循環執行的次數是 ( ) 。
for ( int i = 0; true ; i++) ;
A) 有語法錯,不能執行 B) 無限次
C) 執行 1 次 D) 一次也不執行
6. 定義類頭時能使用的修飾符是 ( ) 。
A) private B) static C) abstract D) protected
7. 設 int 型變量 a 、 b , float 型變量 x 、 y , char 型變量 ch 均已正確定義并賦值,
正確的 switch 語句是 ( ) 。 [switch 語句只允許 int 值、 char 值或枚舉常量 ]
A) switch (x + y) B) switch ( ch + 1 )
{ ...... } { ...... }
C) switch ch D) switch ( a + b );
{ ...... } { ...... }
8. 既能作為類的修飾符 , 也能作為類成員的修飾符的是 ( ) 。
A) public B) extends C) Float D) static
9. 設 i,j 為類 x 中定義的 double 型變量名,下列 x 類的構造函數中不正確的是 ( ) 。
A) double x(double k ){ i=k; return i; }
B) x(double m, double n ){ i=m; j=n; }
C) x( ){i=0;j=0 }
D) x(double k ){ i=k; }
10. 若一個類中對某個方法進行了重載,能夠區分這些重載方法的手段是 ( ) 。
A) 它們的返回值類型的不同 B) 它們的名稱的不同
C) 它們的參數表的不同 D) 它們的修飾符不同
11. 下面是有關子類繼承父類構造函數的描述,其中正確的是 ( ) 。
A) 創建子類的對象時,先調用子類自己的構造函數,然后調用父類的構造函數。
B) 子類無條件地繼承父類不含參數的構造函數。
C) 子類必須通過 super 關鍵字調用父類的構造函數。
D) 子類無法繼承父類的構造函數。
12. 欲構造 ArrayList 類的一個實例,此類繼承了 List 接口,下列哪個方法是正確的? ( ) A) ArrayList myList=new Object (); B) List myList=new ArrayList (); C) ArrayList myList=new List (); D) List myList=new List ();
二、填空題。
1. 聲明并創建類MyClass的一個對象,其名稱為obj,可通過以下語句實現: MyClass obj=new MyClass();。
2.. 設 x, y,max,min 均為 int 型變量, x、y 已賦值。用三目條件運算符,求變量 x 、y的最大值和最小值,并分別賦給變量 max 和min, 這兩個賦值語句分別是 max=x>y?x:y;和min=x<y?x:y;。
3. 結構化程序設計的三種基本流程控制結構是:順序、循環、分支。
4. 若a,b為int型變量且已分別賦值為2,4。表達式!(++a!=b--)的值是false 。
5.在Java語言中,將后綴名為_java_的源代碼編譯后形成后綴名為___class___的字節碼文件。
6. 設有整型數組的定義:int a[]=new int[8]; ,則a.length的值為_8_。
7. 棧是一種先進__后出__的線性數據結構,而隊列是先進__先出__的線性數據結構。
8.如果子類中的某個方法的_方法名_、_參數類型_和_參數個數_與它的父類中的某個方法完全一樣,則稱子類中的這個方法覆蓋了父類的同名方法。
9. 若a,b為int型變量且已分別賦值為2,6。表達式(a++)+(++b) +a*b的值是_30_。
10. 定義數組,需要完成以下三個步驟,即:_確定數組類型_、_確定數組名_和_確定數組長度_。
三、判斷題
1. 類頭定義包含的四個部分分別為:訪問控制修飾符、類名說明、父類名說明和接口名的說明,它們中的任何一個都是不能缺少的。 (F)
2. 在 Applet 的坐標系中,(0,0) 代表輸出窗口左上角的象素點。 (T)
3.應用程序一定要有main()方法,小程序一定要繼承于Applet 類。 (T)
4.java語言中的邏輯變量可以和整型變量相互強制轉換。
5. 面向對象的軟件開發方法用類把數據和基于數據的操作封裝在一起,并且類之間可以存在繼承關系。 (T)
6.方法可以沒有返回值,或有一個返回值,也可以有多個返回值。(T)
7. 一個類中用private 修飾符修飾的屬性成員,可被該類的方法和它的子類的方法訪問。 (F)
8.構造函數能繼承,也能被重載。 (T)
9.Java 源程序的文件名必須和公共類的類名相同。 (T)
10.雙精度數強制轉換成單精度數后,其數值精度會提高。
11. 隊列、鏈表、堆棧和樹都是線性數據結構。 (F)
12.屬性的隱藏是指子類重新定義從父類繼承來的同名變量。
13.用static修飾的方法稱為靜態方法,它不屬于類的一個具體對象,而是整個類的類方法。 (T)
14.java語言中的接口可以繼承,一個接口通過關鍵字extends可以繼承另一個接口。 (T)
15.聲明為final的方法不能在子類中重載。
四、讀程序回答問題
1 .閱讀程序 , 回答以下問題
// InheritTest1.java
public class InheritTest1
{
public static void main (String[] args)
{
A aa;
B bb;
aa=new A( );
bb=new B( );
aa.show( );
bb.show();
}
}
//A.java
public class A
{
int a=1;
double d=2.0;
void show( )
{
System.out.println("Class A: "+"\ta="+a +"\td="+d);
}
}
//B.java
public class B extends A
{
float a=
String d="Java program.";
int b=4;
void show( )
{
System.out.println("Class A: "+"\ta="+super.a +"\td="+super.d);
super.show( );
System.out.println("Class B: "+"\ta="+a +"\td="+d+"\tb="+b);
}
}
問題:
1 ) 這是哪一類java程序?JAVA應用程序,即 J2SE
2) 類A和類B是什么關系?類B繼承類 A
3) 按程序輸出的格式寫出程序運行后的結果.
Class A: a=1d=2.0
Class A: a=1d=2.0
Class A: a=1d=2.0
Class B: a=3.0 d=Java program. b=4
2 .現有類說明如下:
class A
{
int x=10;
int GetA(){return x;}
}
class B extends A
{
int x=100;
int GetB(return x;}
}
問題:
1) 類 B 是否能繼承類 A 的屬性 x ?可以?????
2) 若 b 是類 B 的對象,則 b.GetB() 的返回值是什么? 100
3) 若 b 是類 B 的對象,則 b.GetA() 的返回值是什么? 10
4) 類 A 和類 B 都定義了 x 屬性,這種現象稱為什么?多態
五.簡答題:
1 .談談final, finally, finalize的區別?
對于Final,如果一個類聲明為final,表明它不能再派生出新的子類,不能作為父類被繼承;如果類的屬性或方法聲明為final,則它們在使用中不被改變,且屬性必須在聲明時給定初值,以后的引用中只能讀取,不能修改,而方法只能使用,不能重載。
對于finally,是在異常處理時提供finally塊來執行清除操作。
對于finalize,它是方法名,finalize()用于在垃圾收集器將內存中對象清除出去之前做必要的清理工作。
2 .String s = new String("xyz");創建了幾個String Object?
兩個對象,一個是“xyz”,一個是指向“xyz”的引用對象s。
3 .Set里的元素是不能重復的,那么用什么方法來區分重復與否呢?是用==還是equals()? 它們有何區別?
可以用iterator()方法來區分Set里的元素是否重復;equals()用于判斷兩個Set()是否相等;
4 .說出ArrayList, Vector, LinkedList的存儲性能和特性?
ArrayList 和 Vector 都是使用數組方式存儲數據,此數組元素數大于實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢, Vector 由于使用了 synchronized 方法(線程安全),通常性能上較 ArrayList 差,而 LinkedList 使用雙向鏈表實現存儲,按序號索引數據需要進行前向或后向遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入速度較快。
5 .接口是否可繼承接口? 抽象類是否可實現(implements)接口?抽象類是否可繼承實體類(concrete class)?
可以;可以;可以,但前提是實體類必須有明確的構造函數。
6 . 說出Servlet的生命周期?
1 、裝載Servlet;2、創建Servlet實例;3、調用Servlet的init()方法;4、使用Servlet進行服務;5、銷毀Servlet。
7 .說出JSP的內置對象及方法?
out:print(datatype),println(datatype);
request:getAttribute(String),setAttribute(String,Object);
response:setContentType(String);
session:getAttribute(String),setAttribute(String,Object),isvalidate();
pageContext:getAttribute(String),setAttribute(),getSession(),getRequest(),
getResponse();
application:getAttribute(String),setAttribute(String,Object);
config:
page:
exception:
8. STRUTS 是如何實現MVC框架的?
使用STRUTS實現MVC框架時,模型層是用Java Bean或者EJB組件來實現;視圖層用jsp文件來實現,其中只有一些標簽;控制器用ActionServlet類和Action類來實現。
9 .說出 JAVA 訪問權限修飾詞 public private protected 的區別?
對于一個類的屬性和方法,聲明為 public 時,則當前類,子類,當前包,不同包中的類都可以訪問它;聲明為 private 時,則只能在當前類中被訪問;聲明為 protected 時,則當前類,子類,當前包中的類可以訪問它,其他包要訪問,必須用 import 將其包含進來。
10 . <jsp:useBean> 標簽中 scope 選項總共有幾種作用域?請分別說出每一個作用域的具體含義?
Scope 選項共有 page , request , session , application 四個作用域。
page 能夠在包含 useBean 標簽的 jsp 文件中使用 Bean ,頁面執行完畢或轉到另一個文件為止; request 用于 Bean 在請求的范圍內有效; session 用于在 session 有效范圍內可以使用這個 Bean ; application 用于可以在任何使用相同 application 的 jsp 中使用 Bean 。
11 .在 JSP 開發過程中,對于同一個用戶的會話,要想在不同的頁面之間共享數據,可以有幾種選擇?請一一列舉。
· 把數據保存在Session中;
· 通過Cookie;
· 通過隱含的表單把數據提交到下一個頁面;
· 通過ServletContext對象;
· 通過Application對象;
· 通過文件系統或者數據庫