《JAVA程序設計》期末考試試題
與傳統(tǒng)程序不同,Sun 公司在推出 Java 之際就將其作為一種開放的技術。Java 編程語言是個簡單、面向?qū)ο、分布式、解釋性、健壯、安全與系統(tǒng)無關、可移植、高性能、多線程和靜態(tài)的語言。下面一起來看看《JAVA程序設計》期末考試試題,希望對同學們的復習有所幫助!
《JAVA程序設計》期末考試試題 1
Java語言程序設計考試通常包括各種類型的問題,從基礎的語法和概念到復雜的編程問題。以下是一些可能出現(xiàn)在考試中的試題示例:
一、選擇題
1. Java中用于定義類的關鍵字是什么?
A. class
B. define
C. declare
D. function
2. 下列哪個是Java中的訪問修飾符?
A. public
B. global
C. native
D. external
3. 在Java中,用于打印輸出到控制臺的類是?
A. System.out
B. Console
C. PrintWriter
D. System.print
二、填空題
1. 在Java中,用來結(jié)束當前運行的方法是xxxxxxxxxx。
2. Java程序的主入口點是方法名xxxxxxxxxx。
三、簡答題
1. 解釋Java中的繼承以及它如何工作。
2. 描述接口與抽象類的區(qū)別。
四、編程題
1. 編寫一個Java程序,該程序定義一個名為`Person`的類,包含兩個私有屬性`name`和`age`,以及相應的構(gòu)造函數(shù)和getter/setter方法。
2. 創(chuàng)建一個Java程序,該程序能夠計算并輸出一個整數(shù)數(shù)組的所有元素的平均值。
3. 實現(xiàn)一個Java方法,該方法接受一個字符串參數(shù),并返回一個新的字符串,其中原字符串的'所有元音字母都被替換為字符*。
五、錯誤識別題
給定一段Java代碼,要求考生找出代碼中的錯誤,并解釋錯誤的原因以及如何修正。
六、案例分析題
描述一個實際問題(例如,銀行賬戶管理、圖書管理系統(tǒng)等),要求考生設計并實現(xiàn)相應的Java類來解決該問題。
七、算法題
編寫一個Java方法,使用遞歸方式計算給定正整數(shù)的階乘。
八、OOP設計題
設計一個簡單的在線商店系統(tǒng),包括產(chǎn)品類、購物車類和用戶類,展示對象之間的交互和類的繼承關系。
這些題目涵蓋了Java程序設計的多個方面,包括基本概念、語法、面向?qū)ο缶幊獭惓L幚、算法和?shù)據(jù)結(jié)構(gòu)等。考試的難度和具體內(nèi)容會根據(jù)課程的教學大綱和目標而有所不同。
《JAVA程序設計》期末考試試題 2
一、選擇題
1、結(jié)構(gòu)化程序設計主要強調(diào)的是______。
A、程序的規(guī)模
B、程序的易讀性
C、程序的執(zhí)行效率
D、程序的可移植性
結(jié)構(gòu)化程序設計主要強調(diào)的是結(jié)構(gòu)化程序清晰易讀,可理解性好,程序員能夠進行逐步求精、程序證明和測試,以保證程序的正確性。
本題答案為B。
2、數(shù)據(jù)庫設計包括兩個方面的設計內(nèi)容,它們是______。
A、概念設計和邏輯設計
B、模式設計和內(nèi)模式設計
C、內(nèi)模式設計和物理設計
D、結(jié)構(gòu)特性設計和行為特性設計
數(shù)據(jù)庫設計可分為概念設計與邏輯設計。
數(shù)據(jù)庫概念設計的目的是分析數(shù)據(jù)間內(nèi)在語義關聯(lián),在此基礎上建立一個數(shù)據(jù)的抽象模型。
數(shù)據(jù)庫邏輯設計的主要工作是將ER圖轉(zhuǎn)換為指定的RDBMS中的關系模型。
本題答案是A。
3、為AB類的一個無形式參數(shù)無返回值的方法method書寫方法頭,使得使用類名AB作為前綴就可以調(diào)用它,該方法頭的形式為______。
A、static void method( )
B、public void method( )
C、final void method( )
D、abstract void method( )
本題考查的是修飾符的含義。
1、public修飾的方法可被其它類訪問或引用。
2、abstract修飾的方法是抽象方法,抽象方法沒有方法體,要使用抽象方法,必須先實現(xiàn)此抽象方法。
3、final修飾的方法不能被繼承。
4、static修飾的.方法為靜態(tài)方法,靜態(tài)方法不需要類的實例化就可以被類直接調(diào)用。
故要使得類名AB可以直接調(diào)用method()方法,則必須在method()前用static來修飾。
故本題答案為A。
4、監(jiān)測器接口的方法返回值的類型是______。
A、int
B、String
C、void
D、Object
本題考查的是監(jiān)測器。
每個事件都有自己的監(jiān)測器,監(jiān)測器本身是一種接口,該接口中的方法,返回值是void類型。當要為指定的類注冊監(jiān)測器時,就可以通過定在實現(xiàn)該接口的類中定義該方法,這樣可以在某個事件發(fā)生后,將會自動執(zhí)行相應方法中的代碼。
故本題答案為C。
5、outer: for(int i=0;i<3; i++)
inner: for(int j=0;j<2;j++)
{
if(j==1) continue outer;
System.out.println(j+ "and "+i+";");
}
以上代碼輸出是 。
A、0 and 0;0 and 1;0 and 2;
B、0 and 0;1 and 0;2 and 0;
C、1 and 0;1 and 1;1 and 2;
D、2 and 0;2 and 1;2 and 2;
本題考查的是多重循環(huán)。
首先介紹一下continue語句的功能:continue語句是跳過循環(huán)體中下面尚未執(zhí)行的語句,回到循環(huán)體的開始,繼續(xù)下一輪的循環(huán)。
本題程序運行過程如下:
i=0:
j=0 條件j==1不成立,輸出j和i,即0 and 0;
j=1 條件j==1成立,執(zhí)行continue,跳過System.out.println(j+ "and "+i+";");執(zhí)行下一輪循環(huán)j=2;
j=2 條件j<2不滿足,退出內(nèi)層循環(huán),繼續(xù)外層循環(huán)。
i=1:
j=0 條件j==1不成立,輸出j和i,即0 and 1;
j=1 條件j==1成立,執(zhí)行continue,跳過System.out.println(j+ "and "+i+";");執(zhí)行下一輪循環(huán)j=2;
j=2 條件j<2不滿足,退出內(nèi)層循環(huán),繼續(xù)外層循環(huán)。
i=2:
j=0 條件j==1不成立,輸出j和i,即0 and 2;
j=1 條件j==1成立,執(zhí)行continue,跳過System.out.println(j+ "and "+i+";");執(zhí)行下一輪循環(huán)j=2;
j=2 條件j<2不滿足,退出內(nèi)層循環(huán),繼續(xù)外層循環(huán)。
i=3:條件i<3不滿足,結(jié)束。
故本題答案為A。
二、選擇題
編程題
1、 編寫一個Java Application 程序App.java,main程序輸入10個整數(shù)給數(shù)組,通過函數(shù)getMinAndMax(int a[])得到這10個整數(shù)的最大值和最小值并輸出結(jié)果。
class App {
static void getMinAndMax(int a[]) {
int min,max;
min = max = a[0];
for(int i=1;i if(a[i]>max)
max=a[i];
if(a[i] min=a[i]; }
System.out.println(“Array’Max Value:”+max);
System.out.println(“Array’Min Value:”+min);
}
public static void main(String[] args) {
int arr[] = {4,6,72,9,14,3,8,23,56,32};
getMinAndMax(arr); } }
2、編寫一個完整的Java Application 程序。包含接口ShapeArea, Rectangle
類,Triangle類及Test類,具體要求如下:
、沤涌赟hapeArea:
double getArea( ):
求一個形狀的面積
double getPerimeter ( ):
求一個形狀的周長
⑵類 Rectangle:實現(xiàn)ShapeArea接口,并有以下屬性和方法:
① 屬性
width: double類型,表示矩形的長 height: double類型,表示矩形的高
、 方法
Rectangle(double w, double h):構(gòu)造函數(shù)
toString( )
方法 :輸出矩形的描述信息,如“width=1.0,height=2.0, perimeter=6.0, area=2.0”
、穷怲riangle:實現(xiàn)ShapeArea接口,并有以下屬性和方法:
、 屬性
x,y,z: double型,表示三角形的三條邊
s: 周長的1/2(注:求三角形面積公式為))( )((zsysxss,s=(x+y+z)/2 ,開方可用Math.sqrt(double)方法)
、 方法
Triangle(double x, double y, double z):
構(gòu)造函數(shù),給三條邊和s賦初值。
toString( ):
輸出矩形的描述信息,如“three sides:3.0,4.0,5.0,perimeter=12.0,area=6.0”
、萒est類作為主類要完成測試功能
① 生成Rectangle對象
、
調(diào)用對象的toString方法,輸出對象的描述信息
interface ShapeArea { double getArea( );
double getPerimeter( );
}
class Rectangle implements ShapeArea { double width,height;
Rectangle(double w,double h) {ko width =w;
height=h;
}
public void toString( )
{
System.out.println("width="+width+",height="+height+", perimeter="+ getPerimeter( )+", area="+ getArea( ));
}
public double getArea( )
{ return width*height;
}
public double getPerimeter( )
{ return 2*(width+height);
} }
class Triangle implements ShapeArea { double x,y,z,s; Triangle(double x, double y, double z) { this.x =x; this.y=y;
this.z=z; s = (x+y+z)/2; }
public void toString( )
{
System.out.println("Three Sides:"+x+","+y+","+z+",Perimeter="+ getPerimeter( )+", area="+ getArea( ));
}
public double getArea( )
{
return Math.sqrt(s*(s-x)*(s-y)*(s-z));
}
public double getPerimeter( )
{ return x+y+z;
} }
class test { public static void main(String[] args) { Rectangle rct = new Rectangle(4,5);
rct.to_String( );
} }
《JAVA程序設計》期末考試試題 3
1). 下面( )是合法的標識符。
A.$persons
B.2Users
C.*poi nt
D.this
正確答案:A
答案解析:本題考查Java 標識符的命名,屬于考試重點內(nèi)容,應該掌握。Java 中標識符的命名規(guī)則是:標識符以字母、下畫線或美元符作為首字符的字符串序列;標識符是區(qū)分大小寫的;標識符的字符數(shù)沒有限制。由此可見,Java 中標識符不能以數(shù)字開頭,所以選項B錯誤;不能以“*”開頭,選項C錯誤;this 是專用標識符,具有專門的意義和用途,選項D 錯誤,只有選項A 正確。
2). 設有一個已按各元素的值排好序的順序表(長度大于2),現(xiàn)分別用順序查找法和二分查找法查找與給定值k相等的元素,比較的次數(shù)分別是s和b,在查找不成功情況下s和b的關系是( )。
A.s =b
B.s>b
C.s
D.s>=b
正確答案:B
答案解析:順序查找的基本思想是:從表的一端開始,順序掃描線性表,依次將掃描到結(jié)點的關鍵字和給定值k進行比較,若當前掃描到結(jié)點的關鍵字與k相等,則查找成功;若掃描結(jié)束后,仍未找到關鍵字等于k的結(jié)點,則查找失敗。二分查找法是一種效率較高的查找方法,要求線性表是有序表。基本思想是:首先將待查的k值和有序表R[O]~R[n -1]的中間位置mid上的結(jié)點的關鍵字進行比較,若相等,則查找完成;否則,若R[mi d]. key>k,則說明待查找的結(jié)點只可能在左子表R[O]~R[mi d -1]中,我們只需在左子表中繼續(xù)進行折半查找,若R[mi d]. key
3). 定義一個表示10個值為null的字符串數(shù)組,下面選項正確的是( )。
A.String []a;
B.String a[];
C.char a[10][];
D.String a[]=new String[10];
正確答案:D
答案解析:本題考查字符串數(shù)組變量的聲明。選項A和選項B的效果是一樣的,都是用來定義一個字符串數(shù)組,但沒有指明數(shù)組個數(shù),不滿足題目要求;選項C是一個二維的字符數(shù)組,在C語言中,一個二維的字符數(shù)組就可以表示一個一維的字符串數(shù)組,而在Java中,字符char是基本類型,字符串String則是以對象的形式來表示的;選項D正確,它定義了一個含有10個元素的字符串數(shù)組,如果沒有給字符串數(shù)組賦值,則默認為null。
4). Thread類中能運行線程的方法是( )。
A.resume()
B.start()
C.run()
D.init()
正確答案:C
答案解析:resume()是Thread類提供的用于線程控制的方法;start()是Thread類中的方法,新建的線程不會自動運行,必須調(diào)用線程的start()方法才能運行該線程;run()是Thread類中的方法,在該方法中定義了線程的具體行為,線程開始執(zhí)行時,就是從它的run()方法開始執(zhí)行的,就像Java應用程序從main()開始、Applet從init()開始一樣;init()不是Thread類中的方法。
5). 在面向?qū)ο蟮?方法中,一個對象請求另一個對象為其服務的方式是通過發(fā)送
A.調(diào)用語句
B.命令
C.口令
D.消息
正確答案:D
6). 下列的( )原始類型在使用流時可以互換。
A.byte和boolean
B.char和int
C.byte和char
D.String和char
正確答案:B
答案解析:本題考查Java語言中字節(jié)類型的概念。在Java語言中,byte是字節(jié)類型,用1字節(jié)表示.boolean是布爾類型,用true和false表示,它們的表示方法并不一樣,也不提供它們之間的轉(zhuǎn)換,選項A錯誤。Java內(nèi)部用整數(shù)來表示char,通常可以在方法調(diào)用和其他語句中互換使用char和int,選項B正確。char用2字節(jié)表示,byte字節(jié)類型用l字節(jié)表示,Java內(nèi)部也不允許互換使用它們,選項C錯誤。String在Java語言中是一個類,它提供對字符串的一系列操作,而char是Java語言中的一個基本類型,它不是一個類,兩者有本質(zhì)的區(qū)別,故而它們是不能互換使用的,選項D錯誤。需要注意的是,在Java語言中提供的類都是以大寫字母開頭,基本類型都用小寫字母表示。
7). 下列說法中,不屬于數(shù)據(jù)模型所描述的內(nèi)容是( )。
A.數(shù)據(jù)結(jié)構(gòu)
B.數(shù)據(jù)操作
C.數(shù)據(jù)查詢
D.數(shù)據(jù)約束
正確答案:C
答案解析:數(shù)據(jù)模型所描述的內(nèi)容包括三個部分
《JAVA程序設計》期末考試試題 4
一、單選題:(每題1分)下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項的標記寫在題干后的括號內(nèi)。
1.下列語句序列執(zhí)行后,k 的值是( B )。
int m=3, n=6, k=0;
while( (m++) < ( -- n) ) ++k;
A) 0 B) 1 C) 2 D) 3
2.設 i、j 為int型變量名,a 為int型數(shù)組名,以下選項中,正確的賦值語句是( B )。
A) i = i + 2 B) a[0] = 7;
C) i++ - --j; D) a(0) = 66;
3.Java語言的類間的繼承關系是( B )。
A) 多重的 B) 單重的 C) 線程的 D) 不能繼承
4.設有定義 int i = 6 ;,則執(zhí)行以下語句后,i 的值為( C )。
i += i - 1;
A) 10 B) 121 C) 11 D) 100
5.下列選項中,用于在定義子類時聲明父類名的關鍵字是( C )。
A)interface B) package C) extends D) class
6.若已定義 byte[ ] x= {11,22,33,-66} ;
其中0≤k≤3,則對x數(shù)組元素錯誤的引用是( C )。
A) x[5-3] B) x[k] C) x[k+5] D) x[0]
7.下列語句序列執(zhí)行后,ch1 的值是( B )。
char ch1=A,ch2=W;
if(ch1 + 2 < ch2 ) ++ch1;
A) A B) B C) C D) B
8.下列語句序列執(zhí)行后,i 的值是( D )。
int i=8, j=16;
if( i-1 > j ) i--; else j--;
A) 15 B) 16 C) 7 D) 8
9.下列語句序列執(zhí)行后,k 的值是( C )。
int i=10, j=18, k=30;
switch( j - i )
{ case 8 : k++;
case 9 : k+=2;
case 10: k+=3;
default : k/=j;
}
A) 31 B) 32 C) 2 D) 33
10.下面語句執(zhí)行后,i 的值是( B )。
for( int i=0, j=1; j < 5; j+=3 ) i=i+j;
A) 4 B) 5 C) 6 D) 7
二、填空題:(每空1分)
1. 構(gòu)造函數(shù)x沒xx有返回值。
2. Java語言中的浮點型數(shù)據(jù)根據(jù)數(shù)據(jù)存儲長度和數(shù)值精度的不同,進一步分為float和 xxx double xxxxxxx兩種具體類型。
3. 創(chuàng)建類對象的運算符是xx new。
4. 當整型變量n的值不能被13除盡時,其值為 false 的Java語言表達式是xxn%13==0xxxxxxxxxxx 。
5. 在Java語言中,所有的數(shù)組都有一個lenght屬性,這個屬性存儲了該數(shù)組的xx元素個數(shù)。
6. 定義類就是定義一種抽象的xxxxxx父類xxxxxx,它是所有具有一定共性的對象的抽象描述。
7. 在Java語言中,使用xx平臺無關xxx、xxxjava虛擬機xxx等技術,實現(xiàn)軟件重用。
8. 表達式3/6 * 5的計算結(jié)果是xxxx0xxxx 。
三、程序分析:(每題4分)
1. 下面是一個排序的程序:
import java.io.*;
public class Test56xSort
{
public static void main(String args[ ])
{
int[] a={42,99,5,63,95,36,2,69,200,96};
System.out.println(排序前的數(shù)據(jù)序列:);
ShowArray(a);
Sort(a);
System.out.println(排序后的`數(shù)據(jù)序列:);
ShowArray(a);
}
public static void Sort(int[] x)
{
int w;
for(int i=1; i
{
for(int j=0; j
if(x[j]>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; i
System.out.print("b[i"+i+"]=" +b[i]);
System.out.println( );
}
}
問題: 如果將方法Sort( )中的一對注釋符(/* */)去掉,程序輸出的結(jié)果是什么?
排序前的數(shù)據(jù)序列:
b[0]=42b[1]=99b[2]=5b[3]=63b[4]=95b[5]=36b[6]=2b[7]=69b[8]=200b[9]=96
b[0]=42b[1]=5b[2]=63b[3]=95b[4]=36b[5]=2b[6]=69b[7]=99b[8]=96b[9]=200
b[0]=5b[1]=42b[2]=63b[3]=36b[4]=2b[5]=69b[6]=95b[7]=96b[8]=99b[9]=200
排序后的數(shù)據(jù)序列:
b[0]=5b[1]=42b[2]=63b[3]=36b[4]=2b[5]=69b[6]=95b[7]=96b[8]=99b[9]=200
2. 請寫下程序的輸出結(jié)果:
public class Test52
{
String str1="Hello, Java world! ";
String str2="Hello, students!" ;
public static void main(String args[])
{
System.out.print(str1);
System.out.println(str2);
}
}
輸出結(jié)果:
四、問答題:(每題5分,)
1. Java的接口和C++的虛類的相同和不同處。
由于Java不支持多繼承,而有可能某個類或?qū)ο笠褂梅謩e在幾個類或?qū)ο罄锩娴姆椒ɑ驅(qū)傩裕F(xiàn)有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈活性,因為接口中沒有任何實現(xiàn)代碼。當一個類實現(xiàn)了接口以后,該類要實現(xiàn)接口里面所有的方法和屬性,并且接口里面的屬性在默認狀態(tài)下面都是 public static,所有方法默認情況下是public.一個類可以實現(xiàn)多個接口。
2. 垃圾回收的優(yōu)點和原理。并考慮2種回收機制。
Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程序員最頭疼的內(nèi)存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內(nèi)存管理。由于有個垃圾回收機制,Java中的對象不再有"作用域"的概念,只有對象的引用才有"作用域"。垃圾回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預知的情況下對內(nèi)存堆中已經(jīng)死亡的或者長時間沒有使用的'對象進行清楚和回收,程序員不能實時的調(diào)用垃圾回收器對某個對象或所有對象進行垃圾回收;厥諜C制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收。
3,談談final, finally, finalize的區(qū)別。
Final-修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。
Finally-再異常處理時提供 finally 塊來執(zhí)行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執(zhí)行,然后控制就會進入 finally 塊(如果有的話)。
Finalize-方法名。Java 技術允許使用 finalize()方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調(diào)用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize()方法是在垃圾收集器刪除對象之前對這個對象調(diào)用的。
4,數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法?舉例說明使用方法?
數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。
String有有l(wèi)ength()這個方法。
5. Java中的異常處理機制的簡單原理和應用。
當JAVA程序違反了JAVA的語義規(guī)則時,JAVA虛擬機就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括2種情況。一種是JAVA類庫內(nèi)置的語義檢查。例如數(shù)組下標越界,會引發(fā)IndexOutOfBoundsException;訪問null的對象時會引發(fā) NullPointerException.另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用 throw關鍵字引發(fā)異常。所有的異常都是java.lang.Thowable的子類。
五、程序設計:(每題11分,共33分)
1、編程:編寫一個截取字符串的函數(shù),輸入為一個字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 但是要保證漢字不被截半個,如"我ABC"4,應該截為"我AB",輸入"我ABC漢DEF",6,應該輸出為"我ABC"而不是"我ABC+漢的半個"。
2、編程求解:所有兩位整數(shù)能被3整除的數(shù)的和,以及不能被3整除的數(shù)的各位數(shù)字之和。
3、設計一個程序求解e的值。精度達到1.0e-6,4、請設計一個對N個數(shù)進行排序的程序
《JAVA程序設計》期末考試試題 5
一、 單選題
1、當某一線程正處于休眠狀態(tài),而另一個線程用 Thread 類中的interrupt() 方法中斷它時,拋出的異常類型是( )。
A) IOException B) RuntimeException
C) InterruptedException D)ClassNotFoundException
2、下面的程序段的功能是( )。
File file1=new File("d:\\xxx\\yyy\\zzz");
file1.mkdirs();
A)在當前目錄下生成子目錄:\xxx\yyy\zzz B)生成目錄:e:\xxx\yyy\zzz
C)在當前目錄下生成文件xxx.yyy.zzz D)以上說法都不對
3、應用程序的main方法中有以下語句,則輸出的結(jié)果是 ( )。
Strings = "xxxxxxxxxxxxxxx#123#456#zzzzz";
intn = s.indexOf("#");
int k = s.indexOf("#", n+1);
Strings2 = s.substring(n+1, k);
System.out.println(s2);
A) 123456 B) 123 C)xxxxxxxxxxxxxxx D) zzzzz
4、關于下面的程序Test.java說法正確的是( )。
public class Test {
Stringx="1";
int y;
publicstatic void main(String args[]) {
intz=2;
System.out.println(x+y+z);
}
}
A)3 B)102 C)12 D)程序有編譯錯誤
5、應用程序的main方法中有以下語句,則輸出的結(jié)果是 ( )。
int b[][]={{1, 1, 1}, {2,2}, {3}};
int sum=0;
for(int i=0; i
for(int j=0; j
sum+=b[i][j];
}
}
System.out.println("sum="+sum);
A) 10 B)6 C) 9 D) 13
6、應用程序的main方法中有以下語句,則執(zhí)行后輸出的結(jié)果是 ( )。
int[] x = {125,21,5,168,98};
int min = x[0];
for (int i=1; i
if(x[i]
min =x[i];
}
System.out.println(min);
A) 125 B) 5 C) 98 D) 168
7、應用程序的main方法中有以下語句,則輸出的結(jié)果是 ( )。
Hashtable hashtable=new Hashtable();
hashtable.put("100","aaa");
hashtable.put("200","bbb");
hashtable.put("300","ccc");
System.out.println(hashtable.get("300").toString()
+hashtable.get("200").toString()
+ hashtable.get("100").toString());
A)aaa B) bbb C) ccc D) cccbbbaaa
8、以下關于java異常說法不正確的是( )。
A) Throwable 類是 Java 語言中Error類和Exception類的父類。
B)當異常對象是Exception類(或其子類)的實例時,能通過 Java 虛擬機或者 throw語句拋出該異常對象,并能通過try…catch…finally處理。
C)如果只用一個catch塊捕捉多個異常對象,則catch 子句中的參數(shù)類型應是所有異常對象的父類。
D)以上說法都不對。
9、下面的程序創(chuàng)建了一個文件輸出流對象,用來向文件test.txt中輸出數(shù)據(jù),假設程序當前目錄下不存在文件test.txt,編譯下面的程序Test.java后,將該程序運行3次,則文件test.txt 的內(nèi)容是( )。
import java.io.*;
public class Test {
publicstatic void main(String args[]) {
try{
Strings="ABCDE";
byteb[]=s.getBytes();
FileOutputStreamfile=new FileOutputStream("test.txt", true);
file.write(b);
file.close();
}
catch(IOExceptione) {
System.out.println(e.toString());
}
}
}
A) ABCABC B) ABCDE C)Test D) ABCDE ABCDE ABCDE
10、下面說法不正確的是( )?
A)列表(List)、集合(Set)和映射(Map)都是java.util包中的接口。
B)List接口是可以包含重復元素的有序集合。
C)Set接口是不包含重復元素的集合。
D)Map接口將鍵映射到值,鍵可以重復,但每個鍵最多只能映射一個值。
二、多選題
1、下面哪些關鍵字能用來控制對類成員的訪問( )?
A) public B) protected C) private D) default
2、下面關于Java中異常處理try塊的說法正確的是( )?
A) try塊后通常應有一個catch 塊,用來處理try塊中拋出的異常。
B) catch 塊后必須有finally塊。
C)可能拋出異常的方法調(diào)用應放在try塊中。
D)對拋出的異常的處理必須放在try塊中
3、線程對象的生命周期中,通常經(jīng)歷下面哪些狀態(tài)( )。
A)新建 B)運行 C)就緒 D)死亡
4、定義如下的二維數(shù)組b,下面的說法正確的是( )。
int b[][]={{1, 2, 3}, {4, 5},{6, 7, 8}}};
A)b.length的值是3。 B)b[1].length的值是3。
C)b[1][1]的值是5。 D) 二維數(shù)組b的第一行有3個元素
5、類B是一個抽象類,類C是類B的非抽象子類,下列創(chuàng)建對象x1的語句中正確的是( )。
A) B x1= new B( ); B) B x1= newC( );
C) C x1=new C(); D) C x1= new B( );
6、下面關于進程、線程的說法正確的是( )。
A)進程是程序的.一次動態(tài)執(zhí)行過程。一個進程在其執(zhí)行過程中,可以產(chǎn)生多個線程——多線程,形成多條執(zhí)行線索。
B)線程是比進程更小的執(zhí)行單位,是在一個進程中獨立的控制流,即程序內(nèi)部的控制流。線程本身不能自動運行,棲身于某個進程之中,由進程啟動執(zhí)行。
C)Java多線程的運行與平臺相關。
D)對于單處理器系統(tǒng),多個線程分時間片獲取CPU或其他系統(tǒng)資源來運行。對于多處理器系統(tǒng),線程可以分配到多個處理器中,從而真正的并發(fā)執(zhí)行多任務。
7、下面關于外部類和內(nèi)部類成員的相互訪問的規(guī)則中,正確的選項是( )。
A)內(nèi)部類可以直接訪問外部類的成員
B)外部類可以直接訪問內(nèi)部類的成員
C)外部類不能訪問內(nèi)部類的成員
D)外部類可通過創(chuàng)建內(nèi)部類的實例來訪問內(nèi)部類的成員
三、程序閱讀題
1、閱讀下面的程序代碼,并回答問題(u問3分,v問3分,共6分)。
String s1 = new String("abcde");
Strings2 = new String("abcde");
booleanb1= s1.equals(s2);
booleanb2 = s1== s2;
System.out.print(b1+" "+b2);
u程序段執(zhí)行后,在命令行的輸出結(jié)果如何?
v解釋輸出(1)的結(jié)果的原因?
答案:
u true false
vequals方法比較兩個字符串的內(nèi)容是否相等;運算符“==”判斷兩個對象是否指向同一個引用,即是否為同一個對象。
2、閱讀下面的程序,并回答問題(u問3分,v問3分,共6分)。
import java.io.*;
public class Test {
public static void main(String args[]) throws IOException {
BufferedReader buf=new BufferedReader(
newInputStreamReader(System.in));
while(true) {
String str = buf.readLine();
if(str.equals("quit"))
break;
int x=Integer.parseInt(str);
System.out.println(x*x);
}
}
}
編譯運行上面的程序:
u從鍵盤輸入10,回車后輸出的結(jié)果如何?
v從鍵盤輸入exit,回車后程序能正確執(zhí)行嗎?為什么?
答案:
u100
v不能;因為方法Integer.parseInt(str)不能將字符串“exit”轉(zhuǎn)化為整數(shù),拋出異常。
3、寫出下面的程序編譯、運行后的結(jié)果(6分)。
public class Test{
public static void main(String args[]) {
new Student("Tom", m, 90, 88);
new Student("Jack", m, 66,89);
new Student("Mary", f, 76,86);
System.out.println("name\tsex\tchinese\tenglish");
Student.print();
}
}
class Student {
protected String name;
protected char sex;
protected int chinese;
protected int english;
protected Student next;
static Student list;
Student (String name, char sex, int chinese,int english) {
this.name=name;
this.sex=sex;
this.chinese=chinese;
this.english=english;
this.next=list;
list=this;
}
static void print() {
Student friend=list;
if (friend==null)
System.out.println("The listis empty.");
else {
do{
System.out.println(friend.toString());
friend=friend.next;
}while(friend!=null);
}
}
public String toString() {
return newString(name+"\t"+sex+"\t"+chinese+"\t"+english);
}
}
答案:
name sex chinese english
Mary f 76 86
Jack m 66 89
Tom m 90 88
【《JAVA程序設計》期末考試試題】相關文章:
《JAVA程序設計》期末考試試題06-01
sun認證:java程序設計考試試題07-25
大學java期末考試試題08-18
2017年java期末考試試題10-20
計算機二級Java語言程序設計試題11-01
2016年java期末考試試題及答案10-11
java試題及答案07-04
2017java期末考試參考試題07-31