1 在進行順序查找過程中,如果線性表中被查的元素是線性表中的最后一個,或者被查元素根本不在線性表中,則為了查找這個元素需要與線性表中所有元素進行比較,這是順序查找最壞的情況。
信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。
2 模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。
衡量軟件的模塊獨立性的度量標準是耦合性和內(nèi)聚性。一個模塊的內(nèi)聚性越強,則該模塊的模塊獨立性越強。而內(nèi)聚性是信息隱蔽和局部化概念的自然擴展。
面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的的面向過程的方法有本質(zhì)不同,它的基本原理是,使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它強調(diào)模擬現(xiàn)實世界中的概念而不強調(diào)算法,它鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用應(yīng)用領(lǐng)域的概念去思考。
總體設(shè)計過程通常由兩個主要階段組成:系統(tǒng)設(shè)計,確定系統(tǒng)的具體實現(xiàn)方案;結(jié)構(gòu)設(shè)計,確定軟件結(jié)構(gòu)。為確定軟件結(jié)構(gòu),首先需要從實現(xiàn)角度把復(fù)雜的功能進一步分解。分析員結(jié)合算法描述仔細分析數(shù)據(jù)流圖中的每個處理,如果一個處理的功能過分復(fù)雜,必須把它的功能適當?shù)胤纸獬梢幌盗斜容^簡單的功能。
3 數(shù)據(jù)庫概念設(shè)計的過程中,視圖設(shè)計一般有三種設(shè)計次序,它們是:
1、自頂向下。這種方法是先從抽象級別高且普遍性強的對象開始逐步細化、具體化與特殊化。
2、由底向上。這種設(shè)計方法是先從具體的對象開始,逐步抽象,普遍化與一般化,最后形成一個完整的視圖設(shè)計。
3、由內(nèi)向外。這種設(shè)計方法是先從最基本與最明顯的對象著手逐步擴充至非基本、不明顯的其它對象。
4 在方法中定義的局部變量在方法退出時被自動撤消,只有靜態(tài)變量不會被撤消。如果未對變量指定修釋符,在JAVA中將自動將其設(shè)置為局部變量,局部變量也叫自動變量,對于方法外面的變量,將在對象被創(chuàng)建時一起被創(chuàng)建,其初值可通過構(gòu)造函數(shù)對其進行初始化。如果方法中是一個簡單類型的形參,由于其是按值傳遞,在編譯時會占用存儲空間,直到該對象釋放時為止。如果形參為一個類類型,其參數(shù)是按地址傳遞,編譯時不會為其分配空間,因此該參變量不會存在于方法中。
5 類加載器(class loader)加載程序運行所需要的所有類,它通過區(qū)分本機文件系統(tǒng)的類和網(wǎng)絡(luò)系統(tǒng)導入的類增加安全性,這可以限制任何的特洛伊木馬程序,因為本機類總是先被加載,一旦所有的類被加載完,執(zhí)行文件的內(nèi)存劃分就固定了,在這個時候特定的內(nèi)存地址被分配給對應(yīng)的符號引用,查找表(lookup table)也被建立,由于內(nèi)存劃分發(fā)生在運行時,解釋器在受限制的代碼區(qū)增加保護防止未授權(quán)的訪問;然后字節(jié)碼校驗器(byte code verifier)進行校驗,主要執(zhí)行下面的檢查:類符合JVM規(guī)范的類文件格式,沒有違反訪問限制,代碼沒有造成堆棧的上溢或者下溢,所有操作代碼的參數(shù)類型都是正確的,沒有非法的數(shù)據(jù)類型轉(zhuǎn)換(例如將整型數(shù)轉(zhuǎn)換成對象類型)發(fā)生;校驗通過的字節(jié)碼被解釋器(interpreter)執(zhí)行,解釋器在必要時通過運行時系統(tǒng)執(zhí)行對底層硬件的合適調(diào)用。
7 public class Parent {
public int addValue( int a, int b) {
int s;
s = a+b;
return s;
}
}
class Child extends Parent {
}
選項中__B____方法可以正確加入類Child中且父類的方法不會被覆蓋。
A、int addValue( int a, int b ){// do something...}
B、public void addValue (){// do something...}
C、public int addValue( int a, int b )throws MyException {//do something...}
D、public float addValue ( int a ,int b, float b=1.0 ){// do something...}
解析:此題涉及方法重載(overload),方法重寫(override)以及類派生時方法重寫的規(guī)則。方法重載的規(guī)則是:
一、參數(shù)列表必須不同,個數(shù)的不同完全可以,如果個數(shù)相同,則參數(shù)類型的不同不會引起歧意,例如int和long,float和double就不能作為的類型不同;
二、返回值可以不同,但是不能是重載時的不同點(這點和c++中不同,c++中返回類型必須一致)。
方法重寫發(fā)生在類繼承時,子類可以重寫一個父類中已有的方法,必須在返回類型和參數(shù)列表一樣時才能說是重寫,否則就是重載,java中方法重寫的一個重要而且容易被忽略的規(guī)則是重寫的方法的訪問權(quán)限不能比被重寫的方法的訪問權(quán)限低!
重寫的另一個規(guī)則是重寫的方法不能比被重寫的方法拋棄(throws)更多種類的異常,其拋棄的異常只能少,或者是其子類,不能以拋棄異常的個數(shù)來判斷種類,而應(yīng)該是異常類層次結(jié)果上的種類。
此題中選取項A的錯誤就是重寫的訪問權(quán)限比被重寫的方法的低,而B屬于重載,選項C的錯誤在于比被重寫的方法拋棄了更多種類的異常。選項D中,當只傳遞兩個變量的值的時候,那系統(tǒng)就不知道倒底調(diào)用哪個方法了,因為b為常量,可以不指定,所以只有選項B是符合題意的。
8 假設(shè)有以下代碼
String s= "hello";
String t = "hello";
char c[] = {’h’,’e’,’l’,’l’,’o’} ;
下列選項中返回false的語句是 B 。
A、s.equals(t); B、t.equals(c); C、s==t; D、t.equals(new String("hello"));
解析:==操作符比較的是操作符兩端的操作數(shù)是否是同一個對象,而String的equals()方法比較的是兩個String對象的內(nèi)容是否一樣,其參數(shù)是一個String對象時才有可能返回true,其它對象都返回假。需要指出的是由于s和t并非使用new創(chuàng)建的,他們指向內(nèi)存池中的同一個字符串常量,因此其地址實際上是相同的(這個可以從反編譯一個簡單的測試程序的結(jié)果得到,限于篇幅不列出測試代碼和反編譯的分析),因此答案C也是正確的。
9 欲構(gòu)造ArrayList類的一個實例,此類實現(xiàn)了List接口,下列____B__方法是正確的。
A、ArrayList myList=new Object( ); B、List myList=new ArrayList( );
C、ArrayList myList=new List( ); D、List myList=new List( );
解析:不能直接建立接口的實例,只能通過實現(xiàn)接口的相應(yīng)的類來實現(xiàn)接口。
10 下列程序運行的結(jié)果是__B____。
public class Example{
String str=new String("good");
char[]ch={’a’,’b’,’c’};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
A、good and abc B、good and gbc C、test ok and abc D、test ok and gbc
11 Java語言中,原始數(shù)據(jù)類型變量是按值傳遞的,引用類型變量是按地址傳遞的。
12 要從文件"file.dat"文件中讀出第10個字節(jié)到變量C中,下列__A____方法適合。
A、FileInputStream in=new FileInputStream("file.dat"); in.skip(9); int c=in.read();
B、FileInputStream in=new FileInputStream("file.dat"); in.skip(10); int c=in.read();
C、FileInputStream in=new FileInputStream("file.dat"); int c=in.read();
D、RandomAccessFile in=new RandomAccessFile("file.dat"); in.skip(9); int c=in.readByte();
解析:Java提供FileInputStream是將文件作為流的方式讀取,它是按照文件的順序從0位置開始進行讀取,RandomAccessFile是隨機讀取數(shù)據(jù),讀取的位置不一定是從0開始,可以使用skip(n)方法來跳過n個字符,通過readByte()讀取一個字符,通過read()可以讀取輸入流中的一個字符。
13 下列代碼___C___會出錯。
1) public void modify() {
2) int i,j,k;
3) i=100;
4) while (i>0) {
5) j=i*2;
6) System.out.println (" The value of j is " +j );
7) k=k+1;
8) i--;
A、line 4 B、line 6 C、line 7 D、line 8
解析:由于Java中聲明變量并沒有分配內(nèi)存空間,必須通過初始化才能使用變量。
14 下面關(guān)于Applet的說法正確的是__B____。
A、Applet也需要main方法 B、Applet繼承自java.awt.Applet或javax.swing.JApplet
C、Applet能訪問本地文件 D、Applet程序不需要編譯
解析:Java Applet的字節(jié)碼文件必須嵌入HTML的文件中并由負責解釋HTML文件的WWW瀏覽器充當解釋器來解釋運行。因此Applet不需要main方法,但必須繼承java.awt.Applet類或javax.swing.JApplet,因為這兩個類實現(xiàn)了Applet程序于瀏覽器的通訊。
15 為了系統(tǒng)的安全,一般情況下Applet程序不能訪問本地文件,只有通過授權(quán)后才能讀寫。
16 下列關(guān)于for循環(huán)和while循環(huán)的說法中___A___是正確的。
A、while循環(huán)能實現(xiàn)的操作,for循環(huán)也都能實現(xiàn)
B、while循環(huán)判斷條件一般是程序結(jié)果,for循環(huán)判斷條件一般是非程序結(jié)果
C、兩種循環(huán)任何時候都可替換 D、兩種循環(huán)結(jié)構(gòu)中循環(huán)體都不可以為空
解析:
for循環(huán)的一般形式為:
for(<初始化>; <條件表過式>; <增量>)
語句;
初始化總是一個賦值語句,它用來給循環(huán)控制變量賦初值;條件表達式是一個關(guān)系表達式,它決定什么時候退出循環(huán);增量定義循環(huán)控制變量每循環(huán)一次后按什么方式變化。這三個部分之間用";"分開。
例如:
for(i=1; i<=10; i++)
語句;
上例中先給i賦初值1,判斷i是否小于等于10,若是則執(zhí)行語句,之后值增加1。再重新判斷,直到條件為假,即i>10時,結(jié)束循環(huán)。
注意:
1、for循環(huán)中語句可以為語句體,但要用"{"和"}"將參加循環(huán)的語句括起來。
2、for循環(huán)中的"初始化"、"條件表達式"和"增量"都是選擇項,即可以缺省,但";"不能缺省。省略了初始化,表示不對循環(huán)控制變量賦初值。省略了條件表達式,則不做其它處理時便成為死循環(huán)。省略了增量,則不對循環(huán)控制變量進行操作,這時可在語句體中加入修改循環(huán)控制變量的語句。與for循環(huán)一樣,while循環(huán)總是在循環(huán)的頭部檢驗條件,這就意味著循環(huán)可能什么也不執(zhí)行就退出。
17 下列關(guān)于Java Application與Java Applet程序的差別描述正確的是 D 。
A、運行方式不同,程序結(jié)構(gòu)相同,運行工具不同,受到的限制相同
B、運行方式相同,程序結(jié)構(gòu)不同,運行工具不同,受到的限制相同
C、運行方式相同,程序結(jié)構(gòu)相同,運行工具不同,受到的限制也不同
D、運行方式不同,程序結(jié)構(gòu)不同,運行工具不同,受到的限制也不同
解析:
Application和Java Applet的區(qū)別。
Java語言是一種半編譯半解釋的語言。Java的用戶程序分為兩類:Java Application和Java Applet。這兩類程序在組成結(jié)構(gòu)和執(zhí)行機制上都有一定的差異,主要體現(xiàn)在以下幾方面:
(1)運行方式不同。Java Application是完整的程序,可以獨立運行;Java Applet程序不能單獨運行,它必須嵌入到用HTML語言編寫的Web頁面中,通過與Java兼容的瀏覽器來控制執(zhí)行。
(2)運行工具不同。Java Application程序被編譯以后,用普通的Java解釋器就可以使其邊解釋邊執(zhí)行,而Java Applet必須通過網(wǎng)絡(luò)瀏覽器或者Applet觀察器才能執(zhí)行。
(3)程序結(jié)構(gòu)不同。每個Java Application程序必定含有一個并且只有一個main方法,程序執(zhí)行時,首先尋找main方法,并以此為入口點開始運行。含有main方法的那個類,常被稱為主類,也就是說,Java Application程序都含有一個主類。而Applet程序則沒有含main方法的主類,這也正是Applet程序不能獨立運行的原因。盡管Applet沒有含main方法的主類,但Applet一定有一個從java.applet.Applet派生的類,它是由Java系統(tǒng)提供的。
(4)受到的限制不同。Java Application程序可以設(shè)計成能進行各種操作的程序,包括讀/寫文件的操作,但是 Java Applet 對站點的磁盤文件既不能進行讀操作,也不能進行寫 操作。然而,由于Applet的引入,使Web頁面具有動態(tài)多媒體效果和可交互性能,這使由名為超文本、實為純文本的HTML語言編寫成的Web頁面真正具有了超文本功能,不但可以顯示文本信息,而且還可以有各種圖片效果和動態(tài)圖形效果,從而使頁面顯得生動美麗;另外,Applet使Web頁面增加了按鈕等功能,從而增加了交互性。
故本題答案為D。
18 在java.applet、java.awt、java.awt.image包中,包含了許多圖象支持的類和方法。在程序中圖像由一個java.Image類的對象來表示。目前Java所支持的圖像格式有:GIF、JPEG、和PNG3種。其中PNG格式是JDK1.3以上版本支持的一種光柵圖像格式,它的顯示方法與其他兩格式相同。
19 假設(shè)有String a="A";char b=’A’;int c=65,下面選項中__B____是正確的。
A、if(a==b) {System.out.print("Equal")}
B、if(c==b) {System.out.print("Equal")}
C、if(a==c) {System.out.print("Equal")}
D、if(c=b) {System.out.print("Equal")}
解析:
由于Java是強類型語言,String不能和char,int類型變量直接進行對比。但如果char和int兩類型在同一個表達式中運算,系統(tǒng)是可以進行自動類型轉(zhuǎn)換的,因此這兩個類型的變量可以比較。
軟件工程的基本原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。
信息隱蔽是指采用封裝技術(shù),將程序模塊的實現(xiàn)細節(jié)隱藏起來,使模塊接口盡量簡單。
典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。
變換型:是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換為內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。
事務(wù)型:在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。
java.awt包是Java語言用來構(gòu)建圖形用戶界面(GUI)的類庫,它包括了許多界面元素和資源,主要在低級繪圖操作、圖形界面組件和布局管理、以及界面用戶交互控制和事件響應(yīng)三個方面支持界面設(shè)計。
信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。
2 模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。
衡量軟件的模塊獨立性的度量標準是耦合性和內(nèi)聚性。一個模塊的內(nèi)聚性越強,則該模塊的模塊獨立性越強。而內(nèi)聚性是信息隱蔽和局部化概念的自然擴展。
面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的的面向過程的方法有本質(zhì)不同,它的基本原理是,使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它強調(diào)模擬現(xiàn)實世界中的概念而不強調(diào)算法,它鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用應(yīng)用領(lǐng)域的概念去思考。
總體設(shè)計過程通常由兩個主要階段組成:系統(tǒng)設(shè)計,確定系統(tǒng)的具體實現(xiàn)方案;結(jié)構(gòu)設(shè)計,確定軟件結(jié)構(gòu)。為確定軟件結(jié)構(gòu),首先需要從實現(xiàn)角度把復(fù)雜的功能進一步分解。分析員結(jié)合算法描述仔細分析數(shù)據(jù)流圖中的每個處理,如果一個處理的功能過分復(fù)雜,必須把它的功能適當?shù)胤纸獬梢幌盗斜容^簡單的功能。
3 數(shù)據(jù)庫概念設(shè)計的過程中,視圖設(shè)計一般有三種設(shè)計次序,它們是:
1、自頂向下。這種方法是先從抽象級別高且普遍性強的對象開始逐步細化、具體化與特殊化。
2、由底向上。這種設(shè)計方法是先從具體的對象開始,逐步抽象,普遍化與一般化,最后形成一個完整的視圖設(shè)計。
3、由內(nèi)向外。這種設(shè)計方法是先從最基本與最明顯的對象著手逐步擴充至非基本、不明顯的其它對象。
4 在方法中定義的局部變量在方法退出時被自動撤消,只有靜態(tài)變量不會被撤消。如果未對變量指定修釋符,在JAVA中將自動將其設(shè)置為局部變量,局部變量也叫自動變量,對于方法外面的變量,將在對象被創(chuàng)建時一起被創(chuàng)建,其初值可通過構(gòu)造函數(shù)對其進行初始化。如果方法中是一個簡單類型的形參,由于其是按值傳遞,在編譯時會占用存儲空間,直到該對象釋放時為止。如果形參為一個類類型,其參數(shù)是按地址傳遞,編譯時不會為其分配空間,因此該參變量不會存在于方法中。
5 類加載器(class loader)加載程序運行所需要的所有類,它通過區(qū)分本機文件系統(tǒng)的類和網(wǎng)絡(luò)系統(tǒng)導入的類增加安全性,這可以限制任何的特洛伊木馬程序,因為本機類總是先被加載,一旦所有的類被加載完,執(zhí)行文件的內(nèi)存劃分就固定了,在這個時候特定的內(nèi)存地址被分配給對應(yīng)的符號引用,查找表(lookup table)也被建立,由于內(nèi)存劃分發(fā)生在運行時,解釋器在受限制的代碼區(qū)增加保護防止未授權(quán)的訪問;然后字節(jié)碼校驗器(byte code verifier)進行校驗,主要執(zhí)行下面的檢查:類符合JVM規(guī)范的類文件格式,沒有違反訪問限制,代碼沒有造成堆棧的上溢或者下溢,所有操作代碼的參數(shù)類型都是正確的,沒有非法的數(shù)據(jù)類型轉(zhuǎn)換(例如將整型數(shù)轉(zhuǎn)換成對象類型)發(fā)生;校驗通過的字節(jié)碼被解釋器(interpreter)執(zhí)行,解釋器在必要時通過運行時系統(tǒng)執(zhí)行對底層硬件的合適調(diào)用。
7 public class Parent {
public int addValue( int a, int b) {
int s;
s = a+b;
return s;
}
}
class Child extends Parent {
}
選項中__B____方法可以正確加入類Child中且父類的方法不會被覆蓋。
A、int addValue( int a, int b ){// do something...}
B、public void addValue (){// do something...}
C、public int addValue( int a, int b )throws MyException {//do something...}
D、public float addValue ( int a ,int b, float b=1.0 ){// do something...}
解析:此題涉及方法重載(overload),方法重寫(override)以及類派生時方法重寫的規(guī)則。方法重載的規(guī)則是:
一、參數(shù)列表必須不同,個數(shù)的不同完全可以,如果個數(shù)相同,則參數(shù)類型的不同不會引起歧意,例如int和long,float和double就不能作為的類型不同;
二、返回值可以不同,但是不能是重載時的不同點(這點和c++中不同,c++中返回類型必須一致)。
方法重寫發(fā)生在類繼承時,子類可以重寫一個父類中已有的方法,必須在返回類型和參數(shù)列表一樣時才能說是重寫,否則就是重載,java中方法重寫的一個重要而且容易被忽略的規(guī)則是重寫的方法的訪問權(quán)限不能比被重寫的方法的訪問權(quán)限低!
重寫的另一個規(guī)則是重寫的方法不能比被重寫的方法拋棄(throws)更多種類的異常,其拋棄的異常只能少,或者是其子類,不能以拋棄異常的個數(shù)來判斷種類,而應(yīng)該是異常類層次結(jié)果上的種類。
此題中選取項A的錯誤就是重寫的訪問權(quán)限比被重寫的方法的低,而B屬于重載,選項C的錯誤在于比被重寫的方法拋棄了更多種類的異常。選項D中,當只傳遞兩個變量的值的時候,那系統(tǒng)就不知道倒底調(diào)用哪個方法了,因為b為常量,可以不指定,所以只有選項B是符合題意的。
8 假設(shè)有以下代碼
String s= "hello";
String t = "hello";
char c[] = {’h’,’e’,’l’,’l’,’o’} ;
下列選項中返回false的語句是 B 。
A、s.equals(t); B、t.equals(c); C、s==t; D、t.equals(new String("hello"));
解析:==操作符比較的是操作符兩端的操作數(shù)是否是同一個對象,而String的equals()方法比較的是兩個String對象的內(nèi)容是否一樣,其參數(shù)是一個String對象時才有可能返回true,其它對象都返回假。需要指出的是由于s和t并非使用new創(chuàng)建的,他們指向內(nèi)存池中的同一個字符串常量,因此其地址實際上是相同的(這個可以從反編譯一個簡單的測試程序的結(jié)果得到,限于篇幅不列出測試代碼和反編譯的分析),因此答案C也是正確的。
9 欲構(gòu)造ArrayList類的一個實例,此類實現(xiàn)了List接口,下列____B__方法是正確的。
A、ArrayList myList=new Object( ); B、List myList=new ArrayList( );
C、ArrayList myList=new List( ); D、List myList=new List( );
解析:不能直接建立接口的實例,只能通過實現(xiàn)接口的相應(yīng)的類來實現(xiàn)接口。
10 下列程序運行的結(jié)果是__B____。
public class Example{
String str=new String("good");
char[]ch={’a’,’b’,’c’};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
A、good and abc B、good and gbc C、test ok and abc D、test ok and gbc
11 Java語言中,原始數(shù)據(jù)類型變量是按值傳遞的,引用類型變量是按地址傳遞的。
12 要從文件"file.dat"文件中讀出第10個字節(jié)到變量C中,下列__A____方法適合。
A、FileInputStream in=new FileInputStream("file.dat"); in.skip(9); int c=in.read();
B、FileInputStream in=new FileInputStream("file.dat"); in.skip(10); int c=in.read();
C、FileInputStream in=new FileInputStream("file.dat"); int c=in.read();
D、RandomAccessFile in=new RandomAccessFile("file.dat"); in.skip(9); int c=in.readByte();
解析:Java提供FileInputStream是將文件作為流的方式讀取,它是按照文件的順序從0位置開始進行讀取,RandomAccessFile是隨機讀取數(shù)據(jù),讀取的位置不一定是從0開始,可以使用skip(n)方法來跳過n個字符,通過readByte()讀取一個字符,通過read()可以讀取輸入流中的一個字符。
13 下列代碼___C___會出錯。
1) public void modify() {
2) int i,j,k;
3) i=100;
4) while (i>0) {
5) j=i*2;
6) System.out.println (" The value of j is " +j );
7) k=k+1;
8) i--;
A、line 4 B、line 6 C、line 7 D、line 8
解析:由于Java中聲明變量并沒有分配內(nèi)存空間,必須通過初始化才能使用變量。
14 下面關(guān)于Applet的說法正確的是__B____。
A、Applet也需要main方法 B、Applet繼承自java.awt.Applet或javax.swing.JApplet
C、Applet能訪問本地文件 D、Applet程序不需要編譯
解析:Java Applet的字節(jié)碼文件必須嵌入HTML的文件中并由負責解釋HTML文件的WWW瀏覽器充當解釋器來解釋運行。因此Applet不需要main方法,但必須繼承java.awt.Applet類或javax.swing.JApplet,因為這兩個類實現(xiàn)了Applet程序于瀏覽器的通訊。
15 為了系統(tǒng)的安全,一般情況下Applet程序不能訪問本地文件,只有通過授權(quán)后才能讀寫。
16 下列關(guān)于for循環(huán)和while循環(huán)的說法中___A___是正確的。
A、while循環(huán)能實現(xiàn)的操作,for循環(huán)也都能實現(xiàn)
B、while循環(huán)判斷條件一般是程序結(jié)果,for循環(huán)判斷條件一般是非程序結(jié)果
C、兩種循環(huán)任何時候都可替換 D、兩種循環(huán)結(jié)構(gòu)中循環(huán)體都不可以為空
解析:
for循環(huán)的一般形式為:
for(<初始化>; <條件表過式>; <增量>)
語句;
初始化總是一個賦值語句,它用來給循環(huán)控制變量賦初值;條件表達式是一個關(guān)系表達式,它決定什么時候退出循環(huán);增量定義循環(huán)控制變量每循環(huán)一次后按什么方式變化。這三個部分之間用";"分開。
例如:
for(i=1; i<=10; i++)
語句;
上例中先給i賦初值1,判斷i是否小于等于10,若是則執(zhí)行語句,之后值增加1。再重新判斷,直到條件為假,即i>10時,結(jié)束循環(huán)。
注意:
1、for循環(huán)中語句可以為語句體,但要用"{"和"}"將參加循環(huán)的語句括起來。
2、for循環(huán)中的"初始化"、"條件表達式"和"增量"都是選擇項,即可以缺省,但";"不能缺省。省略了初始化,表示不對循環(huán)控制變量賦初值。省略了條件表達式,則不做其它處理時便成為死循環(huán)。省略了增量,則不對循環(huán)控制變量進行操作,這時可在語句體中加入修改循環(huán)控制變量的語句。與for循環(huán)一樣,while循環(huán)總是在循環(huán)的頭部檢驗條件,這就意味著循環(huán)可能什么也不執(zhí)行就退出。
17 下列關(guān)于Java Application與Java Applet程序的差別描述正確的是 D 。
A、運行方式不同,程序結(jié)構(gòu)相同,運行工具不同,受到的限制相同
B、運行方式相同,程序結(jié)構(gòu)不同,運行工具不同,受到的限制相同
C、運行方式相同,程序結(jié)構(gòu)相同,運行工具不同,受到的限制也不同
D、運行方式不同,程序結(jié)構(gòu)不同,運行工具不同,受到的限制也不同
解析:
Application和Java Applet的區(qū)別。
Java語言是一種半編譯半解釋的語言。Java的用戶程序分為兩類:Java Application和Java Applet。這兩類程序在組成結(jié)構(gòu)和執(zhí)行機制上都有一定的差異,主要體現(xiàn)在以下幾方面:
(1)運行方式不同。Java Application是完整的程序,可以獨立運行;Java Applet程序不能單獨運行,它必須嵌入到用HTML語言編寫的Web頁面中,通過與Java兼容的瀏覽器來控制執(zhí)行。
(2)運行工具不同。Java Application程序被編譯以后,用普通的Java解釋器就可以使其邊解釋邊執(zhí)行,而Java Applet必須通過網(wǎng)絡(luò)瀏覽器或者Applet觀察器才能執(zhí)行。
(3)程序結(jié)構(gòu)不同。每個Java Application程序必定含有一個并且只有一個main方法,程序執(zhí)行時,首先尋找main方法,并以此為入口點開始運行。含有main方法的那個類,常被稱為主類,也就是說,Java Application程序都含有一個主類。而Applet程序則沒有含main方法的主類,這也正是Applet程序不能獨立運行的原因。盡管Applet沒有含main方法的主類,但Applet一定有一個從java.applet.Applet派生的類,它是由Java系統(tǒng)提供的。
(4)受到的限制不同。Java Application程序可以設(shè)計成能進行各種操作的程序,包括讀/寫文件的操作,但是 Java Applet 對站點的磁盤文件既不能進行讀操作,也不能進行寫 操作。然而,由于Applet的引入,使Web頁面具有動態(tài)多媒體效果和可交互性能,這使由名為超文本、實為純文本的HTML語言編寫成的Web頁面真正具有了超文本功能,不但可以顯示文本信息,而且還可以有各種圖片效果和動態(tài)圖形效果,從而使頁面顯得生動美麗;另外,Applet使Web頁面增加了按鈕等功能,從而增加了交互性。
故本題答案為D。
18 在java.applet、java.awt、java.awt.image包中,包含了許多圖象支持的類和方法。在程序中圖像由一個java.Image類的對象來表示。目前Java所支持的圖像格式有:GIF、JPEG、和PNG3種。其中PNG格式是JDK1.3以上版本支持的一種光柵圖像格式,它的顯示方法與其他兩格式相同。
19 假設(shè)有String a="A";char b=’A’;int c=65,下面選項中__B____是正確的。
A、if(a==b) {System.out.print("Equal")}
B、if(c==b) {System.out.print("Equal")}
C、if(a==c) {System.out.print("Equal")}
D、if(c=b) {System.out.print("Equal")}
解析:
由于Java是強類型語言,String不能和char,int類型變量直接進行對比。但如果char和int兩類型在同一個表達式中運算,系統(tǒng)是可以進行自動類型轉(zhuǎn)換的,因此這兩個類型的變量可以比較。
軟件工程的基本原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。
信息隱蔽是指采用封裝技術(shù),將程序模塊的實現(xiàn)細節(jié)隱藏起來,使模塊接口盡量簡單。
典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。
變換型:是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換為內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。
事務(wù)型:在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。
java.awt包是Java語言用來構(gòu)建圖形用戶界面(GUI)的類庫,它包括了許多界面元素和資源,主要在低級繪圖操作、圖形界面組件和布局管理、以及界面用戶交互控制和事件響應(yīng)三個方面支持界面設(shè)計。