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