選擇題
答題要求:單選題,每題只有一個正確答案,選擇正確給分,不正確不給分。
1、 下面( A )數據類型可用於main()方法中傳遞的參數
A、String B、Integer C、Boolean D、Variant
2、以下的選項中能正確表示Java語言中的一個整型常量的是( B )
A、12. B、-20 C、1,000 D、4 5 6
3、下列的變量定義中,正確的是( D )
A、boolean b1="true"; B、float x=6.6;
C、byte i=200; D、double y;
4、在屏幕上顯示的消息正確的語句是( A )
A、System.out.println("I am Java Expert");
B、system.out.println("I am Java Expert");
C、System.Out.Println("I am Java Expert");
D、System.out.println('I am Java Expert');
5、下面( B )命令可用於編譯Java程序
A、java B、javac C、appletviewer D、javadoc
6、Java編譯器會將Java程序轉換為( A )
A、字節碼 B、可執行代碼
C、機器代碼 D、以上所有選項都不正確
7、以下字符常量中不合法的是( C )
A、'@' B、'&' C、"k" D、'整'
8、以下的選項中能正確表示Java語言中的一個double型常量的是( C )
A、Float.MIN_VALUE B、1.8e-6F
C、2.0 D、'abc'
9、以下的變量定義語句中,合法的是( C )。
A、float $_*5= 3.4F; B、byte b1= 15678;
C、int $abc=5; D、int class="5";
10、在一個類中定義的成員變量和成員方法時,不允許( A )。
A. 兩個成員變量名相同.
B. 成員變量與成員方法名相同.
C. 兩個成員方法名相同
D. 成員方法中的參數與成員變量名相同
11、下列敘述正確的是 ( B )
A. 在類中的構造方法的名字與類的名字相同, 而且不能重載
B. 在類中的構造方法的名字與類的名字相同,但沒有返回類型.
C. 在類中的構造方法的名字與類的名字相同,而且有返回類型.
D. 在類中的構造方法的名字與類的名字相同,而且不能初始化.
12、Java application中的主類需包含main方法,main方法的返回類型是什么?( D )
A、int B、float C、double D、void
13、給出如下代碼:
class Test{
private int m;
public static void fun() {
// some code...
}
}
如何使成員變量m 被函數fun()直接訪問?( C )
A、將private int m 改為protected int m
B、將private int m 改為 public int m
C、將private int m 改為 static int m
D、將private int m 改為 int m
14、在Java中,一個類可同時定義許多同名的方法,這些方法的形式參數個數、類型或順序各不相同,傳回的值也可以不相同。這種面向對象程序的特性稱為(C )。
A、隱藏 B、覆蓋 C、重載 D、Java不支持此特性
15、執行下面的程序,輸出結果是( B )。
public class Test {
int x= 12;
public void method(int x) {
x+=x;
System.out.println(x);
}
public static void main(String[] args){
Test t = new Test();
t.method(5);
}}
A. 5 B. 10 C. 12 D. 17 E. 24
16、若在某一個類定義中定義有如下的方法: final void aFinalFunction( );
則該方法屬於( C)。 。
A. 本地方法. B. 解態方法. C. 最終方法 D. 抽象方法
17、下列敘述正確的是 ( D )
A. 子類可以繼承父類的所有成員。
B.. 除了繼承父類的成員以外,子類不可以創建自己的成員。
C. 當實例化子類時,父類的構造方法不被調用。
D. 子類只能繼承父類的非私有成員。.
18、某java程序的類定義如下: public class MyClass extends BaseClass{ }
則該java源文件在存盤時的源文件名應為如下哪一種:( D )
A. myclass.java B. Myclass.java C. MYCLASS.java D. MyClass.java
19、給出如下代碼:
class A{
public A(){
System.out.print("A");
}
}
public class B extends A{
public B(){
System.out.print("B");
}
public static void main(String[ ] args){
new B( );
}
}
程序的輸出結果( A )
A、AB B、A C、B D、BA
20、以下哪個接口的定義是正確的?( D )。
A、 interface A
{ void print() { } ;}
B、 abstract interface A
{ void print() ;}
C、 abstract interface A extends I1, I2 //I1、I2為已定義的接口
{ abstract void print(){ };}
D、 interface A
{ void print();}
21、下面選項中能把字符串轉換成float類型的是?(B)
A. float value = new Float(str);
B. float value = Float.parseFloat(str);
C. float value = Float.floatValue(str);
D. float value = (new Float()).parseFloat(str)
22、在某個類中存在一個方法:void getSort(int x),以下能作為這個方法的重載的聲明的是( C )
A. public get (float x)
B. int getSort(int y)
C. double getSort(int x,int y)
D. void get(int x,int y)
23、下邊程序運行的輸出結果是( B )
class Base{
Base(){System.out.print("Base");}
}
public class Alpha extends Base {
public static void main(String[] args){
new Alpha();
new Base();
}
}
A、Base B、BaseBase C、程序編譯失敗 D、程序運行但沒有任何輸出
24、下列說法正確的是( C )。
A. 一個子類可以有多個父類,一個父類也可以有多個子類
B. 一個子類可以有多個父類,但一個父類只可以有一個子類
C. 一個子類可以有一個父類,但一個父類可以有多個子類
D. 上述說法都不對
25、關於下面程序片段,(B )的結論是正確的。
String a = "Java"; String b = "Java";
String x = "Ja"; String y = "va";
String c = x + y;
A、a和b指向同一個實例對象,a和c指向同一個實例對象
B、a和b指向同一個實例對象,a和c不指向同一個實例對象
C、a和b不指向同一個實例對象,a和c指向同一個實例對象
D、a和b不指向同一個實例對象,a和c不指向同一個實例對象
26、下面這段代碼會產生(C )個String對象。
String s1 = "hello"; String s2 = s1.substring(2, 3);
String s3 = s1.toString(); String s4 = new StringBuffer(s1).toString();
A、1 B、2 C、3 D、4
27、設有定義:String s=”World”;,下列語句錯誤的是( D )。
A、int m=s.indexOf(‘r’); B、char c=s.charAt(0); C、int n=s.length(); D、String str=s.append();
28、已知int i = 2147483647; ++i; 則i的值等於( A )。
A、-2147483648 B、2147483647 C、2147483648 D、-1
29、若x = 5,y = 8,則表達式x|y的值為( B )。
A、3 B、13 C、0 D、5
30、執行String[ ] s=new String[10];語句后,哪個結論是正確的?(B )
A、s[0] 為 未定義 B、s.length 為10 C、s.length 為11 D、s[10] 為 ""
31、下列說法不正確的是( D )。
A、表達式“1+2>3”的值是false B、表達式“1+2||3”是非法的表達式
C、表達式“i+j=1”是非法的表達式 D、表達式“1+2>3”的值是true
32、若String s = "hello"; String t = "hello"; char c[] = {'h','e','l','l','o'} ; 則下列哪個表達式返回false?( C )
A、s.equals(t); B、t.equals(new String("hello")); C、t.equals(c); D、s==t;
33、執行完下面程序片段后,( B)的結論是正確的。
int a, b, c; a = 1; b = 2; c = (a + b > 3 ? a++ : b++);
A、a的值是2,b的值是3 B、a的值是1,b的值是3
C、a的值是1,b的值是2 D、c的值是false
34、下面程序片段輸出的是( D )。
int i = 0, j = 9;
do {
if(i++ > --j) break;
} while(i < 4);
System.out.println("i = " + i + " and j = " + j);
A、i = 4 and j = 4 B、i = 5 and j = 5 C、i = 5 and j = 4 D、i = 4 and j = 5
35、設有定義“int k=3;”,語法正確且值為true的表達式是(D )。
A、k=3; B、k++>3; C、k--==3&&k++==3; D、k++==3||++k>3;
36、若有定義int a = 2;則執行完語句 a -= a * a; 后,a的值是(C )。
A、 0 B)、4 C、 -2 D、 –4
37、下列語句序列執行后,j 的值是(A )。 int j=1;
for( int i=5; i>0; i-=2 ) j*=i;
A、 15 B、1 C、 60 D、 0
38、以下由 for 語句構成的循環執行的次數是( B )。
for ( int i = 0; true ; i++) ;
A、有語法錯,不能執行 B、無限次 C、執行1次 D、一次也不執行
39、下列語句序列執行后,j 的值是(B )。
int j=9, i=6;
while( i-- >3 ) --j;
A) 5 B) 6 C) 7 D) 8
40. 若有循環:
int x=5,y=20;
do { y-=x; x+=2; }while(x<y);
則循環體將被執行(A )。
A) 2次 B) 1次 C) 0次 D) 3次
41. 下列語句序列執行后,i的值是( A)。
int i=10;
do { i/=2; } while( i>1 );
A) 1 B) 5 C) 2 D) 0
42. 以下語句中能構成多分支的語句是( C )。
A) for 語句 B) while 語句
C) switch 語句 D) do - while 語句
43. 能從循環語句的循環體中跳出的語句是(B )。
A)for語句 B)break語句 C) continue語句 D)return語句
44.字符流與字節流的區別是( A )。
A、每次讀入的字節數不同 B、前者帶有緩沖,后者沒有
C、前者是塊讀寫,后者是字節讀寫 D、二者沒有區別,可以互換使用
45.下面關於使用throw關鍵字拋出的對象說法正確的是( A )。
A、它必須被聲明為Throwable類型 B、它必須被聲明為error類型
C、它必須被聲明為Exception類型 D、它必須被聲明為String類型
46.在oneMethod()方法運行正常的情況下,程序段將輸出什么? ( D)
public void test(){
try{
oneMethod();
System.out.println("condition1");
} catch (ArrayIndexOutOfBoundsExceptione){
System.out.println("condition2");
} catch(Exceptione){
System.out.println("condition3");
} finally{
System.out.println("finally");
}
}
A、condition1 B、condition2 C、condition3 D、condition1finally
47.下列常見的系統定義的異常中,哪個是輸入、輸出異常? (B )
A、ClassNotFoundException B、IOException
C、NumberFormatException D、UnknownHostException
48.下列InputStream類中哪個方法可以用於關閉流? (B )
A、skip() B、close() C、mark() D、reset()
49.下面關於try-catch-finally語句塊中有關finally說法正確的是( C )
A、它只會在catch語句塊執行結束后才會執行
B、它只有在catch語句塊不被執行的情況下才會被執行
C、不管有沒有異常產生它總會被執行
D、只有在有異常產生的情況下它才會被執行
50.關於異常的應用,下列說法恰當的是( B )
A、在java中,使用異常很方便、很有效,因而,只要能使用異常的地方應盡量使用異常
B、在程序中過多的使用異常,會使程序的執行效率降低
C、異常產生后,我們只需捕獲它,至於是否對異常給與處理,無所謂
D、Java中的異常全部都被預先定義好了,程序員無需自行定義異常類
51.如果一個程序段中有多個catch,則程序會按如下哪種情況執行( C )
A.找到適合的例外類型后繼續執行后面的catch
B.找到每個符合條件的catch都執行一次
C.找到適合的例外類型后就不再執行后面的catch
D.對每個catch都執行一次
52.屬於Java輸入輸出流的、且處理的是char類型的類是( A )
A、Reader類 B、InputStream類 C、OutputStream類 D、File類
53. 下列不屬於面向對象編程的三個特征的是( B )。
A. 封裝 B. 指針操作 C. 多態 D. 繼承
54. 以下字符串常量中不合法的是( B )。
A. "q" B. ‘&’ C. "k" D. "整數"
55. public int getGameScore(),getGameScore這個方法的返回值類型是( A )。
A. int B. void C. INT D. short
56. 在java中語句:37.2%10的運算結果為( C )。
A. 37 B. 2 C. 7.2 D. "0"
57. 若已定義 x 和 y為double 類型,則表達式 x=1,y=x+3/2 的值是( C ) 。
A. 1 B. 2 C. 2.0 D. 2.5
58. 關於while和do-while循環,下列說法正確的是:( D ) 。
A. 兩種循環除了格式不同外,功能完全相同
B. 與do-while語句不通的是,while語句的循環至少執行一次
C. do-while語句首先計算終止條件,當條件滿足時,才去執行循環體中的語句
D. 以上都不對
59. 下面( C )表達式是聲明一個含有10個String對象的數組。
A. char str[ ]; B. char str[ ][ ];
C. String str[ ]=new String[10]; D. String str[10];
60. 多分支語句switch(表達式){}中,表達式可以返回哪種類型的值( B )。
A. 實型 B. 字符型 C. 數組 D. 布爾型
61. 下列不屬於條件語句關鍵字的是: ( A )。
A. for B. if C.else D. switch
62. 下列類的定義,錯誤的是( D )。
A. public class test extends Object{
…… }
B. final class operators{
……}
C. class Point{
…… }
D. void class Point{
…… }
63. 下面表達式中,用來訪問數組a中第一個元素的是( A )。
A. a[0] B. a[1] C. a.0 D. a.1
64. a為true時,值為“真”的表達式是( A )。
A. a B.!(++a) C. a=true D. a==0
65. 下面命令中( A )可用於解釋Java程序。
A. java B. javac C. javaapplview D. javadoc
66. 方法的形參是( A )。
A. 可以沒有 B. 至少有一個
C. 方法必須都含有 D. 一個方法中可以有多個return
67. 有一個類A,對於其構造函數的聲明正確的是( B )。
A. void A(int x){…} B. public A(int x){…}
C. A A(int x) {…} D. int A(int x) {…}
68. 設Test為已定義的類,下面聲明類Test對象a的語句正確的是( C )。
A. Test a=Test(); B. public Test a;
C. Test a=new Test(); D. public Test a=new Test();
69. 如下哪個是Java中的正確的標識符( D )。
A. public B. super C. 3number D. width
70. 定義一個類,必須使用的關鍵字是( B )。
A. public B. class C. interface D. static
71. 下列數組聲明語句錯誤的是:( C )。
A. int [] a; B. int a[]; C. int a[5]; D. int[]a=new int[5];
72. Java語言屬於下列哪一種語言( B )。
A. 面向過程語言 B.面向對象語言
C. 面向機器語言 D. 面向操作系統語言
73. 現有一個整型數組a [4],它的所有元素是( B )。
A. a0.a1,a2.a3 B. a[0],a[1],a[2],a[3]
C. a [1],a [2],a[2],a[4] D. a [0],a[1],a [2],a[3],a[4]
填空題
答題要求:每空只有一個正確答案,填對給分,填不對不給分。
1. 若有定義 int[ ] a = new int[8]; 則a的數組元素中第7個元素和第8個元素的下標分別是( 6 )和( 7 )。
2. Scanner類在( java.util )包下面。
3. JVM是指( java虛擬機)。
4. 假設有一個JAVA應用程序,其源程序文件名是Morning.java,則編譯該源程序時應該在命令提示符窗口中輸( javac Morning.java )命令,運行該程序時應該在命令提示符窗口中輸入(java Morning)命令。
5. 要聲明整型數組a,應該用語句( int a[ ]; )。
6. 要定義x為int類型的數組,並且數組元素的初值是1、2、3、4、5,則可以用一條語句( int[ ]x={1,2,3,4,5}; )。
7. 在Java語言中,所有的數組都有一個( length )屬性,這個屬性存儲了該數組的元素的個數或者說數組長度。
8. 面向對象程序設計的四個特性是:抽象性、(繼承性)、(封裝性)、(多態性)。
9. Java中類成員的限定詞有以下幾種:private 缺省, ( public ), (protected )。其中(public)的限定的范圍最大。
10. 用於創建類實例對象的運算符是(new), Java中所有類都是類(Object)的子類。
11. 構造方法的方法名與(類名)相同,若類中沒有定義任何的構造方法,則運行時系統會自動為該類生成一個沒有參數的構造的方法。
12. java中用關鍵字(extends)指明繼承關系、用關鍵字(implements)指明接口實現。
13. this代表了(當前對象 )的引用,super表示的是當前對象的(父類)對象。
14. java中提供了兩種用於多態的機制( 重載)、( 覆蓋)。
15.關鍵字(final)表示一個對象或變量在初始化后不能被修改。
16. 下面方法的功能是判斷一個整數是否為偶數,將程序補充完整。
public( boolean ) isEven(int a)
{ if(a%2==0)
return ( true );
else
return false;
}
17. this和super 關鍵字只能在(非靜態)方法中使用。
18. java中用關鍵字(abstract)指明抽象類,用關鍵字( interface )指明接口。
19. 執行下列代碼后的結果是什么? int x,a=8,b=4,c=5; x=++a+b+++c++;
x = ( 18 ), a = (9 ),b = ( 5 ), c = ( 6 )
20. 在Java語言中,字符串直接量是用雙引號括起來的字符序列,字符串不是字符數組,而是類 ( String ) 的實例對象。
21. 當String對象用= = 比較時,如果String包括相同的地址,則結果為( true ) 。
22. 對於下列描述,各寫出一條語句完成要求的任務
(1)比較s1中的串和s2中的串的內容的相等性; ( s1.equals(s2) ; )
(2)用+=向串s1附加串; ( s1+=s2; )
(3)判斷s1中串的長度; (s1.length(); )
23. 設x,y,max,min均為int型變量,x、y已賦值。用三目條件運算符求x、y的最大值和
最小值,並分別賦給變量max和min,這兩個賦值語句分別是(max=a>b?a:b)和( min=a<b?a:b)。
24. “當整型變量n的值不能被13除盡時其值為 false” 的Java語言表達式是(n%13==0)。
25. 執行以下程序段后:x = ( 6 ), y =( 24 )。
int x = 5, y=5;
y = ++x * - -y;
26. 在Java程序運行時,系統自動通過System類創建三個靜態的I/O對象,它們是標准輸入流對象( System.in )、標准輸出流對象( System.out ) 和標准錯誤流對象( System.err )。
27. java中的異常處理通過5個關鍵字來實現:它們是try、catch、throw、throws和finally。進行異常監測的代碼要放在try子句內:捕獲異常需要使 ( catch )子句;在方法中宣布可能產生的異常應使用( throw)關鍵字。
28. 異常是一種運行時錯誤,在java中,異常是以對象的方法表示的,任何異常對象都是(Throwable)類或其子類的對象。
29. Java中,InputStream和OutputStream是以( 字節 )為數據讀寫單位的輸入輸出流的基類;Reader和Writer是以( 字符 )為數據讀寫單位的輸入輸出流的基類。
30. Java的異常處理模型以3種操作為基礎:聲明異常、拋出異常和捕捉異常。當程序語句導致錯誤時,包含語句的方法將創建異常對象並把它傳遞到系統,這個過程稱為( 拋出異常 ),查找異常處理程序的過程稱為( 捕捉異常 )。
31.一般用( System.in)創建InputStream對象,表示從標准輸入中獲取數據。用( System.out)創建OutputStream對象,表示輸出到標准輸出設備中。
32.java把它能夠識別的異常分為兩大類:檢查的和非檢查的異常。非檢查的異常是(Error)類和RuntimeException類的實例,它代表程序不必處理嚴重系統錯誤;檢查異常是(Exception)類的子類,它代表程序應該而且能夠處理的錯誤。
33. 將以( .java )為擴展名的Java源文件編譯成字節碼文件,字節碼文件的擴展名為 (.class) 。
34. Java語言中的浮點數默認類型是(double或者雙精度浮點型)。
35. Java語言以(類)為程序的基本單位,它是具有某些共同特性實體的集合,是一種抽象的概念。
36. 代碼System.out.println(076)的輸出結果是(62)。
37. 數組初始化分為(動態數組)和(靜態數組)兩種。
39. 類中的(構造)方法是一個特殊的方法,其名稱與類名相同。
40. 在面向對象方法中,類的實例被稱為(對象)。
問答題
答題要求:按采分點給分,語言能符合采分點表達的含義。
1. 什么是變量?什么是常量?變量名和變量的數據類型各有什么意義?
答:常量是一個某種基本數據類型的數值(1分),變量是內存中一個存放數據的存儲單元(1分)。變量名表示存放該變量的存儲單元地址(1分),變量的數據類型表示該變量占用內存的大小(2分)。
2. 怎樣構成一個合法的Java變量名?
答:Java要求變量名只能由英文字母、美元符號$或下划線_構成,且不能以數字開頭,中間也不能有空格。(3分)不能以關鍵字作為變量名(1分)區分大小寫(1分)。
3、簡述構造方法的特殊性以及它的主要作用
答:構造方法的特殊性在於:該方法沒有返回數據類型,創建對象時系統自動調用。該方法的作用(3分):為創建的對象分配存儲空間,為對象的屬性賦初始值。(2分)
4、類的主要修飾符有哪些?類的成員變量的修飾符有哪些?
答:類的修飾符有缺省、public、abstract、final等;(2分)成員變量的修飾符有public、private、缺省、protected、static、final等。(3分)
5、類包括哪些部分?類體包括哪些部分?方法定義包括哪些部分?方法聲明包括哪些部分?
答:類包括類聲明和類體兩部分(2分)。類體包括變量定義和方法定義兩部分(1分)。
方法定義包括方法聲明和方法體兩部分(1分)。方法聲明包括方法名和返回類型兩部分(1分)。
6.類和接口有什么不同
答:一個類只能有一個父類,但是可以有多個接口。接口中只能聲明方法,不允許給出方法體,方法體要在實現接口的類中給出。(3分)在默認狀態下接口中所有變量和方法都是public。所以當一個類實現了某個接口以后,便可以使用接口的所有變量和方法。(2分)
7.能不能將一個類既聲明為abstract又聲明為final?
答:不能。abstract類可能包含抽象方法,抽象方法只有方面聲明,沒有方法體。所以抽象類不能直接使用,只能通過繼承,在子類中給出抽象方法的方法體。final類不能被繼承,沒有子類。所以,他們是矛盾的。
8.如果某子類和它的父類不在同一個包中,采用什么權限修飾符才能訪問父類的成員?不加任何修飾符行不行?
答:需要用public或protected修飾(3分)。不行,不加任何修飾符的成員只能在同一個包中訪問(2分)。
9.Java 是否支持多重繼承,如何實現多重繼承關系?
答:在Java程序中,通過類的定義只能實現單重繼承(3分),但通過接口的定義可以實現多重繼承關系。(2分)
10、字符串類String 和StringBuffer類有何不同?
答:從根本上來說應該是stringBuffer在做字符長度變動的時候將繼續使用原來的內存空間,不新分配.(2分)而String的長度一旦變動,就如上面的例子一樣,其內部將分配新的內存空間。(3分)
11.流是指數據的流動。輸入流的數據從哪里流到哪里?輸出流中的數據從哪里流到哪里?
答:對於輸入流,數據從文件或輸入設備流動到程序。(2分)對於輸出流,數據從程序流動到文件或輸出設備。(3分)
程序分析題
1. 如果程序代碼為:
public class Demo{
public static void main (String[ ] args){
String a=args[1];
System.out.println(a);
}
}
進行編譯后,執行以下命令將得到什么結果?java Demo a1 a2 a3
答:a2 (5分)
2、現有一個類定義如下,請回答問題:
class Employee{
String name;
int age;
double wage;
static int No=0;
Employee(String a1,int a2,double a3){
name=a1; age=a2; wage=a3;
No++;
}
}
在使用該類時,已使用下面語句生成了該類的對象:
Employee e1,e2;
e1=new Employee("王勁",26,6300);
e2=new Employee("張山",30,3800);
問題:
1)e2.name,e2.age,e2.wage的值各是什么 ?
2)生成對象e1,e2后,e1.No值為多少 能否通過類名做前綴引用屬性No和age?
答:1)(張山;30;3800.0) ;(3分)
2)(2; 可以訪問No,不能訪問age)(2分)
3、閱讀以下程序,寫出運行結果 。
class Q1{
public static void main(String args[ ]){
double d=1.23;
Dec dec=new Dec( );
dec.decrement(d);
System.out.println(d);
}
classs Dec{
public void decrement(double decMe){
decMe = decMe - 0.1;
}
}
答:1.23 (5分)
4、分析下列程序的執行結果:
class Value{
public int i = 15;
}
public class Test{
public static void main(String argv[]){
Test t = new Test(); t.first();
}
public void first(){
int i = 5;
Value v = new Value();
v.i = 25; second(v, i);
System.out.println(v.i);
}
public void second(Value v, int i){
i = 0; v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
}
答: 15 0 20
5、分析下列程序的執行結果:
public class Test{
public static void main(){
int i = 1, j = 10;
do{
if(i++ > --j)
continue;
}while(i < 5);
System.out.println("i=" + i + " j=" + j);
}
}
結果是:
答:i=5,j=6
6、閱讀程序后回答問題 。
public class ContinueTest
{
public static void main( String args[])
{
char c='i';
for (int n=6; n < 11; n++ )
{
if ( n == 8 ) continue;
System.out.print("\t"+(c++));
}
}
}
問題:1)程序的輸出結果是什么?
2)若將if中的continue語句替換為break語句,輸出結果是什么?
答:1)i j k l;(2分)
2)i j(3分)
7.分析下列程序的功能是:
import java.io.File;
public class FileExercise{
public static void main(String[] args){
File fileObject = new File("Sally.txt");
if(fileObject.exists()){
System.out.println("There is a file named Sally.txt");
}else{
System.out.println("There is no file named Sally.txt");
}
}
}
答:測試程序所在的目錄是否包含一個名為Sally.txt的文件。如果存在則輸出There is a file named Sally.txt;如果不存在則輸出There is no file named Sally.txt。
8. 下面程序輸出結果為:
姓名:張三 性別:女 年齡:20
姓名:李四 性別:女 年齡:33
class Person{
String name;
char sex;
int age;
Person(String pName,char pSex,int pAge){//以下代碼完成類屬性賦值
;
;
;
}
public String toString(){
String s = ("姓名:" + name + " 性別:" + sex + " 年齡:" +age);
; /返回s的值
}
}
public class CreatePerson{
public static void main(String[] args){
Person p1 = new Person("張三",'男',20);
以下代碼完成定義對象p2,各參數值分別為:李四,女,28
;
p1.sex = '女'; //將p1的sex屬性改為女
System.out.println(p1.toString()); //輸出p1的各個屬性
//以下代碼將p2的age改為33
;
//以下代碼輸出p2的各個屬性
;
}
}
答:1、name=pName(2分)
sex=pSex(2分)
age=pAge(2分)
2、return s(2分)
3、Person p2=new Person(“李四”,’女’,28) (2分)
4、p2.age=33(2分)
5、p2.toString( ) (2分)
9.分析程序的運行結果
public class Course{
private String cNumber;
private String cName;
private int cUnit;
public Course(String number,String name,int unit){
cNumber=number;cName=name;cUnit=unit;
}
public void printCourseInfo(){
System.out.println ("課程號:"+cNumber+" 課程名:"+cName+" 學分:"+cUnit);
}
}
class CourseTest{
public static void main(String[]args){
Course c;
c=new Course("001","Java",3);
c.printCourseInfo();
}
}
答:課程號:001 課程名:Java 學分:3(5分)
10. 下面的程序運行結果如下,請將代碼填充完整:
name:Tom
salary:5000
name:Jerry
salary:3000
public class Employee{
String name;
int salary;
Employee(String n,int s){
__ __; //給變量name賦值
__ __; //給變量salary賦值
}
Employee(String n){
name = n; //給變量name賦值
}
void print(){
System.out.println("name:" + name);
System.out.println("salary:" + salary);
}
void setSalary(int s){
__ __; 給變量salary賦值
}
public static void main(String[] args){
Employee e1 = new Employee("Tom",5000);
Employee e2 = new Employee("Jerry");
e1.print();
e2.setSalary(3000);
e2.print();
}
}
答: 1、 name=n; //給變量name賦值
salary=s;
2、 salary=s;
11.分析程序的運行結果
public class Father{
String name,address,tel;
int age;
public Father(String name,int age){
this.name=name;this.age=age;
}
void out(){
System.out.print("姓名:"+name);
System.out.print(" 年齡:"+age);
}
void outOther(){
System.out.print(" 家庭住址:"+address);
System.out.print(" 電話:"+tel);
}
}
class Son extends Father{
String school;
public Son(String name,int age){
super(name,age);
}
void out(){
super.out();
super.outOther();
System.out.println (" 學校:"+school);
}
public static void main(String args[]){
Son son=new Son("Tom",15);
son.address="金水區";
son.school="九中";
son.tel="66123456";
son.out();
}
}
答:姓名:Tom 年齡:15 家庭住址:金水區 電話:66123456 學校:九中 (5分)
12.閱讀如下所示的3個JAVA類,分析它們之間的關系,寫出運行結果。
class SuperClass{
int x;
SuperClass(){
x = 3;
System.out.println("in SuperClass:x=" + x);
}
void doSomething(){
System.out.println("in SuperClass.doSomething()");
}
}
class SubClass extends SuperClass{
int x;
SubClass(){
super();
x = 5;
System.out.println("in SubClass:x=" + x);
}
void doSomething(){
super.doSomething();
System.out.println("in SubClass.doSomething()");
System.out.println("super.x=" + super.x + " sub.x=" + x);
}
}
public class Inheritance{
public static void main(String[] args){
SubClass subC = new SubClass();
subC.doSomething();
}
}
答:運行結果:
in SuperClass:x=3(2分)
in SubClass:x=5(2分)
in SuperClass.doSomething()(2分)
in SubClass.doSomething()(2分)
super.x=3 sub.x=5(2分)
13.閱讀如下程序,寫出運行結果。
class StaticDemo
{
static int x;
int y;
public static int getX()
{ return x; }
public static void setX(int newX)
{ x=newX; }
public int getY()
{return y;}
public void setY(int newY)
{y=newY; }
}
public class MainDemo {
public static void main(String[] args)
{
System.out.println("靜態變量x="+StaticDemo.getX());
StaticDemo a=new StaticDemo();
StaticDemo b=new StaticDemo();
a.setX(1);
a.setY(2);
b.setX(3);
b.setY(4);
System.out.println("靜態變量a.x="+a.getX());
System.out.println("實例變量a.y="+a.getY());
System.out.println("靜態變量a.x="+b.getX());
System.out.println("實例變量a.y="+b.getY());
}
}
答:運行結果:
靜態變量x=0(2分)
靜態變量a.x=3(2分)
實例變量a.y=2(2分)
靜態變量a.x=3(2分)
實例變量a.y=4(2分)
14. 觀察下面程序的運行結果,注意try語句中產生的異常與catch參數的匹配。
public class Test2{
static int a = 3,b = 0;
static String c[] = {"數組元素c[0]"};
public static void main(String[] args){
try{
System.out.println(a);
System.out.println(a/b);
System.out.println(c[b]);//若上條語句產生異常,本語句將不被運行
}
catch(ArithmeticException e){
System.out.println("捕捉到一個算術異常");
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("捕捉到一個數組下標越界異常");
}
catch(Exception e){
System.out.println("捕捉到一個系統異常");
}
finally{
System.out.println("程序結束");
}
}
}
答:運行結果:
3(2分)
捕捉到一個算術異常(2分)
程序結束(2分)
編程題
答題要求:按采分點給分,要求代碼編寫有一定的規范性,完成采分點功能區代碼則給分,未完成該采分點的,不給分。
1. 編寫出一個程序,其中創建了數組abc,該數組的五個元素分別為“北京奧運會”五個漢字。要求程序運行后,能將五個元素顯示在同一行上,並顯示該數組的長度。(共10分)
編碼規范2分;類和主方法的定義2分;數組的聲明和賦值2分,漢字輸出2分(注意:字符輸出時一定要轉為字符串后輸出,沒有轉換的扣1分),數組長度輸出2分。
答:
public class ShowChar{
public static void main (String[ ] args){
char abc[] = {'北','京','奧','運','會'};
System.out.println("" + ch[0] + ch[1] + ch[2] + ch[3] + ch[4]);
System.out.println(abc.length);
}
}
2. 設計一個動物類,它包含動物的基本屬性。例如名稱、大小、重量等,並設計相應的動作,例如跑、跳、走等。
編碼規范2分;類定義2分;成員變量定義3分,成員函數定義3分。
答:public class Animal{
private String name;
private double weight;
private int length;
privateString sex;
public void run(){
System.out.println("the animal is running!");來源:考試大
}
public void jump(){
System.out.println("the animal is jumping!");
}
public void walk(){
System.out.println("the animal is walking!");
}
}
3. 定義一個環形類Ring,包含屬性外半徑outerRadius,內半徑innerRadius,顏色,生成Get和Set方法,並定義一個方法求環形的面積getArea,定義一個含有三個參數的構造方法和一個參數為0的構造方法。
編碼規范2分;類的成員變量的定義3分;類的成員函數的定義5分;
答:public class Ring {
private double outerRaduis;
private double innerRaduis;
private String Color;
public double getArea()
{
return Math.PI*this.outerRaduis*this.outerRaduis-
Math.PI*this.innerRaduis*this.innerRaduis;
}
public Ring(double r1,double r2,String c)
{
this.outerRaduis=r1;
this.innerRaduis=r2;
this.Color=c;
}
public Ring()
{
this.outerRaduis=50;
this.innerRaduis=40;
this.Color="green";
}
}
4. 設計一個三角形類,它包含三角形基本屬性底和高,以及求三角形面積的方法。要求從鍵盤接收三角形的底和高的值,然后輸出三角形的面積。(提示:可以使用鍵盤掃描類Scanner或命令行參數接收三角形的底和高的值)
編碼規范2分;類的成員變量的定義2分;類的成員函數的定義3分;主方法的實現3分。
答:import java.util.*;
class Reta {
private double di;
private double high;
public Reta(double di, double high) {
this.di = di;
this.high = high;
}
public double area() {
try {
return 0.5 * this.di * this.high;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
}
public class Ret{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
double x = sc.nextDouble();
double y = sc.nextDouble();
Reta reta = new Reta(x,y);
double area = reta.area() ;
System.out.print(area);
}
}
5. 有三個字符串String s1= "Hello Java"; String s2= "Java Applet"; String s3= "Java";,編寫程序找出其中最大者。
編碼規范2分;類定義2分;主方法的實現6分。
答:
public class max1
{
public static void main(String args[])
{
String s1= "Hello Java";
String s2= "Java Applet";
String s3= "Java";
String s;
if(s1.compareTo(s2)<0)
s=s2;
else s=s1;
if(s.compareTo(s3)<0)
s=s3;
Systrm.out.println("big="+s);
}
}
6. 編寫一個程序,設定一個有大小寫字母的字符串String s1= "Hello Java";,先將字符串的大寫字符輸出,再將字符串中的小寫字符輸出。注:利用StringBuffer完成。
編碼規范2分;類定義2分;主方法的實現6分。
答:
public class out
{
public static void main(String args[])
{
String str="Hello Java";
StringBuffer bufup=new StringBuffer();
StringBuffer buflow=new StringBuffer();
for(int i=0; i<str.length();i++)
{
if(str.charAt(i)<97)
{
bufup.append(str.charAt(i));
bufup.append(' ');
}
else
{
buflow.append(str.charAt(i));
buflow.append(' ');
}
}
System.out.println("str= "+str);
System.out.println("uppercase="+bufup);
System.out.println(" lowercase= "+buflow);
}
}
7. 設定一個有大小寫字母的字符串String s1="abcdefghi";和一個查找字符,使用類 String方法IndexOf()來判斷在該字符串中該字符出現的次數。
編碼規范2分;類定義2分;主方法的實現6分。
答:
import java.util.*;
public class StringNum{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.println("請輸入一個字符串:");
String s1 = input.nextLine();
System.out.println("請輸入一個字符:");
String c1 = input.nextLine();
char[] cArr = c1.toCharArray();
char c = cArr[0];
int num = 0;
int index;
int i = 0;
while(i < s1.length()){
index = s1.indexOf(c, i);
if(index == -1){
break;
}else{
i = index+1;
num++;
}
}
System.out.print("字符" + c + "的個數為" + num );
}
}
8. 編寫一個程序,要求:
1)在當前目錄下創建目錄Personal
2)將自己的學號、姓名、性別寫入到目錄Personal下的文件Info.txt中
3)將文件中的數據顯示在屏幕上
編碼規范2分;類定義2分;主方法的實現6分(其中題目要求的每個功能實現各2分)。
答:
import java.io.*;
import java.util.*;
public class FileExercise3{
public static void main(String[] args){
//create folder
String folderName = "Personal";
String fileName = "Info.txt";
File f=new File(folderName);
f.mkdir();
//write file
PrintWriter outputStream = null;
try{
outputStream = new PrintWriter(new FileOutputStream(folderName + "\\" + fileName));
}catch(FileNotFoundException e){
System.out.println("Error opening the file Info.txt.");
System.exit(0);
}
outputStream.println("學號:0921404");
outputStream.println("姓名:安文琪");
outputStream.println("性別:男");
outputStream.close( );
//read file
Scanner inputStream = null;
try{
inputStream = new Scanner(new FileInputStream(folderName + "\\" + fileName));
}catch(FileNotFoundException e){
System.out.println("File " + fileName + " was not found");
System.out.println("or could not be opened.");
System.exit(0);
}
while(inputStream.hasNextLine()){
System.out.println(inputStream.nextLine());
}
inputStream.close( );
}
}
9. 編寫一個程序,將一維數組中元素順序倒置。例如:若數組元素的順序原來是1、2、3,則倒置后的順序變為3、2、1。(要求使用循環語句)
編碼規范2分;類定義2分;主方法的實現6分。
public class LianXi {
public static void main(String[] args) {
int a[]={1,2,3,4};
int temp;
for(int i=0;i<=(a.length/2);i++){
temp=a[i];
a[i]=a[a.length-1-i];
a[a.length-1-i]=temp;
}
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
}
}
}
10. 設計一個矩形類,包括屬性:長、寬及方法,再通過主類調用其矩形類輸出相應的面積。(注:長寬自己給定任意的值就可以)
編碼規范2分;類定義2分;主方法的實現6分。
class JuXing{
private double length;
private double weight;
public JuXing(double length,double weight){
this.length=length;
this.weight=weight;
}
public double Area(){
double area=length*weight;
return area;
}
}
public class LianXi {
public static void main(String[] args) {
JuXing ju=new JuXing(1.2,3.4);
System.out.print(ju.Area());
}
}
11. 創建一個Table類,該類中有桌子名稱(name)、重量(weight)、桌面寬度(width)、長度(length)和桌子高度(height)等私有的屬性,以及以下幾個方法
構造方法:初始化所有成員變量
area():計算桌面的面積。
display():在屏幕上輸出所有成員變量的值
changeWeight(int w):改變桌子的重量
在MainTable類main()方法中實現創建一個桌子對象,計算機桌面的面積,改變桌子的重量,並在屏幕上輸出桌子屬性的值。
編碼規范2分;類定義2分;主方法的實現6分(其中題目要求的每個功能實現各1分)。
12. 定義一個人類(Person),包括屬性:姓名(name)、性別(sex)、年齡(age);包括方法:吃飯(eat)、睡覺(sleep)、工作(work)。
(1)根據人類,派生一個學生類(Student),增加屬性:學校(school)、學號(s_number);重寫工作方法(學生的工作是學習)。
(2)根據人類,派生一個工人類(Worker),增加屬性:單位,工齡;重寫工作方法(工人的工作是……自己想想吧)。
(3)根據學生類,派生一個學生干部類(StudentLeading),增加屬性:職務(job);增加方法:開會(meeting)。
(4)編寫主類分別對上述3類具體人物進行測試。
編碼規范2分;類定義2分;其他8分(其中題目要求的每個功能實現各2分)。
