Java基礎試題


 

1.使用Java語言編寫的源程序保存時的文件擴展名是( B )。

(A).class          (B).java            (C).cpp            (D).txt

【注】java語言的源文件擴展名是.java,編譯后會生成.class文件,就是代碼文件。

2.設int a=-2,則表達式a>>>3的值為( D )。

(A)0  (B)3   (C)8   (D)很大的一個數

【注】測試的結果是536870911。涉及補碼:正數的補碼是自身,負數的補碼為取反+1。

3.設有數組的定義int[] a = new int[3],則下面對數組元素的引用錯誤的是( C )。

(A)a[0];           (B)a[a.length-1];  

(C)a[3];           (D)int i=1; a[i];

4.在類的定義中可以有兩個同名函數,這種現象稱為函數( D )。

(A)封裝            (B)繼承            

(C)覆蓋            (D)重載

【注】可以存在同名的方法,但是參數類型和參數不能相同,這樣的關系體現了Java中的多態(重載)。

5.在類的定義中構造函數的作用是( D )。

(A)保護成員變量    (B)讀取類的成員變量

(C)描述類的特征    (D)初始化成員變量

【注】構造函數通常用於在實例化對象時自動對內部數據成員初始化,設置初始值、分配內存空間等。

而析構函數則用於刪除對象時做收尾工作,比如釋放申請的空間等。

  要創建一個對象,就得調用構造函數。

要銷毀一個對象,就會被迫的調用析構函數。

如果成員函數聲明稱static,不創建對象也能調用 靜態成員函數。

6.下面關鍵字中,哪一個不是用於異常處理語句( B )。

(A)try             (B)break            

(C)catch           (D)finally

7.類與對象的關系是( A )。

(A)類是對象的抽象  (B)對象是類的抽象   

(C)對象是類的子類  (D)類是對象的具體實例

【注】對象是對客觀事物的抽象,類是對對象的抽象。類是一種抽象的數據類型,其定義為:class 類名{ }

它們的關系是,對象是類的實例,類是對象的模板。

8.下面哪一個是Java中不合法的標識符(D)

(A)$persons        (B)twoNum           

(C)_myVar          (D)*point

【注】Java的標識符必須以 '$','_',或者字母'a'~'z','A'~'Z'開頭,接下來可以是 '$','_',字母'a'~'z','A'~'Z',數字'0'~'9'的任意組成。標識符的長度沒有限制。
標識符中不能含有其他符號,當然也不允許插入空格。

9.為AB類的一個無形式參數無返回值的方法method書寫方法頭,使得使用類名AB作為前綴就可以調用它,該方法頭的形式為( A )。

(A)static  void  method( )               

(B)public  void  method( )       

(C)final  void  method( )                

(D)abstract  void  method( )

【注】

A是靜態方法,可以直接用如下形式調用Test.method();

B是普通public函數,必須實例化類,Test test = new Test(); test.method();

C是final方法,不能被重載,用法同B

D是抽象方法,必須被子類繼承並重寫,然后調用的方式同B。

10.欲構造ArrayList類的一個實例,此類繼承了List接口,下列哪個方法是正確的(B)。

(A)ArrayList myList=new Object( )       

(B)List myList=new ArrayList( )

(C)ArrayList myList=new List( )          

(D)List myList=new List( )

注】是B不是C。

這個稱之為面向接口編程,是java語言的一大優點。ArrayList雖然是一個具體的類,按照ArrayList myList=new ArrayList();的確可以生成一個myList對象,而且編譯也不會報錯。但是在實際開發中時不采用這樣的方式即實際開發時都是 接口名 xxx=new 接口某實現類()。這樣便於

1.便於程序規范化設計

2.便與團隊協同開發

3.便於轉換為組件

4.方便的代碼復用,無需了解技術細節。

11.Java源文件和編譯后的文件擴展名分別為( B)

(A).class和.java 

(B).java和.class       

(C).class和.class           

(D).java和.java

【注】java語言的源文件擴展名是.java,編譯后會生成.class文件,就是代碼文件。

13.對於一個Java源文件,import, class定義以及package正確的順序是: (A)

(A) package,import,class   

(B) class,import,package

(C) import,package,class 

(D) package,class,import

14.下面哪個是非法的:(B)

(A) int I = 32;      (B) float f = 45.0;      

(C) double d = 45.0;

(D) char c = ‘u’; //符號錯

【注】應該為float f = 45.0f;

 

15.Java語言使用的字符碼集是(D)
(A) ASCII          (B) BCD                  

(C) DCB            (D) Unicode

【注】Java語言所使用的字符集是16位Unicode編碼。

16. 如果一個類的成員變量只能在所在類中使用,則該成員變量必須使用的修飾是(C)

(A) public           (B) protected           

(C) private          (D) static

【注】

private同一個類可以訪問;

public 是全局都可以訪問,子類,同一個包,同一個類都可以訪問);

protected是同一類,同一個包,子類可以訪問;

無修飾符號是缺省類型--default,可以在同一個類,同一個包內訪問。

Static修飾狀態,以上前三個是修飾權限。

17.下面關於main方法說明正確的是(B)

(A) public main(String args[ ])                   

(B) public static void main(String args[ ])

(C) private static void main(String args[ ])       

(D) void main()

【注】如下

 

18.哪個關鍵字可以對對象加互斥鎖?( B )

(A) transient              (B) synchronized        

(C) serialize              (D) static

【注】synchronized 線程安全與同步。

19.關於抽象方法的說法正確的是( C )

(A)可以有方法體    (B) 可以出現在非抽象類中

(C) 是沒有方法體的方法

(D) 抽象類中的方法都是抽象方法

【注】抽象方法指一些只有方法聲明,而沒有具體方法體的方法。抽象方法一般存在於抽象類或接口中。所以正確的是C(沒有方法體的方法)。

 

20.java.io包的File類是(B)選擇D
 (A)字符流類          (B) 字節流類             

(C) 對象流類(無此流)  (D) 非流類

 

21.Java application中的主類需包含main方法,以下哪項是main方法的正確形參?(B)

A、String  args    B、String  args[] 

C、Char  arg       D、StringBuffer args[]

22.以下代碼段執行后的輸出結果為(  A  )

     int  x=-3; int  y=-10;

     System.out.println(y%x);

A、  -1   B、2     C、1     D、3

【注】取模符號與被除數一致!求余數,也就是整除之后剩余值,其中-9被整除了,還余下-1.。

 

 

23.以下關於繼承的敘述正確的是( A )。

A、在Java中類只允許單一繼承

B、在Java中一個類只能實現一個接口(多個)

C、在Java中一個類不能同時繼承一個類和實現一個接口(可以)

D、在Java中接口只允許單一繼承(可多重繼承)

24. 若有定義:byte[] x={11,22,33,-66};

其中0≤k≤3,則對x數組元素錯誤的引用是( C )

A)x[5-3]

B)x[k]

C)x[k+5]

D)x[0]

 

26.以下哪個不是Java的原始數據類型( B )

A、int   B、Boolean    C、float D、char

【注】首字母大寫的說明是boolean的封裝類,繼承自Object。就像Integer對應int一類,同一個包,子類可以訪問。

27.在Java中,一個類可同時定義許多同名的方法,這些方法的形式參數的個數、類型或順序各不相同,傳回的值也可以不相同。這種面向對象程序特性稱為( C )

A) 隱藏

B) 重寫

C) 重載

D) Java不支持此特性

28. 以下有關構造方法的說法,正確的是:( A  )

A. 一個類的構造方法可以有多個

B. 構造方法在類定義時被調用

C. 構造方法只能由對象中的其它方法調用。

D. 構造方法可以和類同名,也可以和類名不同

【注】構造方法在生成實例對象的時候被調用;構造方法不能被對象的其他方法調用;構造方法必須和類同名。

30.給出下面代碼,關於該程序以下哪個說法是正確的?( B錯 )應該選擇C。。靜態的方法只能調用靜態的成員。Math.abs()

public class Person{

static int arr[] = new int[5];

public static void main(String a[])

{

  System.out.println(arr[0]); }

}

A、編譯時將產生錯誤        

B、編譯時正確,運行時將產生錯誤

C、輸出零    

D、輸出空

 

 

31、有以下方法的定義,請選擇該方法的返回類型(  C  錯)。應該選擇D

     ReturnType  method(byte x, double y)

     {

         return  (short)x/y*2;

     }

A、byte  B、short C、int   D、double

32.下列類定義中哪些是合法的抽象類的定義?(   C)

A.abstract Animal{abstract void growl();}   

B.class abstract Animal{abstract void growl();}        

C.abstract class Animal{abstract void growl();}       

D.abstract class Animal{abstract void growl(){System.out.println(“growl”);};}

 

33.有以下程序片段,下列哪個選項不能插入到行1。(   D   )

1.

2.public  class  Interesting{

3.//do sth 此處內部類,就不能寫public了 

4. }

A、import java.awt.*;      

B、package mypackage;      

C、class OtherClass{   }  

D、public class MyClass{}一個類不能有兩個public

【注】不能有兩個public類,A是引用包,B是創建包,C是一個普通類。

34. 設有下面兩個賦值語句:

 a = Integer.parseInt(“12”);

   b = Integer.valueOf(“12”).intValue();

  下述說法正確的是(   D  )。

A、a是整數類型變量,b是整數類對象。

B、a是整數類對象,b是整數類型變量。

C、a和b都是整數類對象並且值相等。  

D、a和b都是整數類型變量並且值相等。

【注】Integer,是int類型的封裝。java中有一些基本類型,如boolean byte char short int long float double

這些類型是沒有封裝的裸類型,其余的所有類,都是繼承自Objcet類。裸類型游離於類的繼承樹之外,不過java為所有這些簡單類型都做了封裝,其中對int的封裝就是Integer

parseInte和intValue這兩個方法的返回值都是int。

a和b都是整數類型變量,而非integer對象。

 

37. 為了使包ch4在當前程序中可見,可以使用的語句是(  A )。

A)import ch4.*;    B)package ch4.*;

C)ch4 import;      D)ch4 package;

38. 請問所有的異常類皆繼承哪一個類?( B )。

A)java.io.Exception    

B)java.lang.Throwable

C)java.lang.Exception  

D)java.lang.Error

39.進行Java基本的GUI設計需要用到的包是(  C )。

A)java.io    B)java.sql    

C)java.awt   D)java.rmi

40. 當點擊鼠標或者拖動鼠標時,觸發的事件是下列的哪一個?( D )

A)KeyEvent    B)ActionEvent  

C)ItemEvent   D)MouseEvent

填空題:

1.數組x定義:String x[ ][ ]=new int[3][2];  x[0 ][0 ]=”abc”, x[0 ][1]=”12345”;

則 x.length 的值為__3__,x[0][1].length( ) 的值為__5__。

2、Java語言的變量由變量名、_修飾符_、變量屬性、_初值___組成。

3、當程序中需要拋出異常時,應該使用_catch_子句,當需要在方法中聲明可能拋出的異常類型,應該使用_ throws XXXException _子句。

6、Java源程序文件和字節碼文件的擴展名分別為_.java__和__.class__。

7、Java語言的類型檢查機制要求對於沒有返回值的方法,在其前面必須加__void____進行說明。

8、  在Java語言中,所有的對象均通過_____new____運算符分配內存,並對內存進行自動管理。

10、每個Java Application程序可以包括許多方法,但是必須有且只能有一個__main_方法,統一格式為_public static void main(String[]args){} _,它是程序執行的入口。

11、  若要在程序中定義一個公用的int型的類成員變量MAX_LENGTH,且該變量的值保持常數值1000,則定義該變量的語句是_ public final int MAX_LENGTH=100___。

12、  子類必須通過_  super   _關鍵字調用父類有參數的構造函數。

13、  在Java語言中,所有的類都是類__Object   __的子類。

14、  在Java程序中,通過類的定義只能實現單重繼承,但通過__接口  __ 的定義可以實現多重繼承關系。

15、  如果在Java程序中,需要使用java.util包中的所有類,則應該在程序開始處加上語句_  import java.util.*   _。

16、  下列程序的運行結果是___01234_____

public class ex2 {

  public static void main(String[] args)

  {

     for(int cnt=0;cnt<10;cnt++)

     {

         if(cnt==5)

              break;

         System.out.print(cnt);

     }}}

17、  下列程序的運行結果是______4_________

import  java.io.*;

public   class  ATest{

   public  static  void  main(String args[])

{

   SubClass  sb = new  SubClass( );       

   System.out.println(sb.fun( ));

 }}

class  SuperClass{

  int  a =24 , b =5 ; 

}

class  SubClass  extends  SuperClass

{

  int  fun( )

{

 return   a%b; 

}

 }

18、   分析下列程序,填上空白處的語句

class point     //定義坐標類

{   int x,y;

    test(int a,int b)

    {x=a;y=b;}

}

class rec extends point __________//定義長方形類

{

  int length,width;

  rec(int a1,int b1,int l,int w)

  {super(a1,b1);

     length=l;width=w;

  }}

class test

{public static void main(String args[])

  {

    

___test r1=new__rec(0,0,10,20)______

//定義名為r1的對象同時初始化坐標為0,0,長度為10,寬度為20

     r1.print();

     }}

19、Java 源文件中最多只能有_____1________________個公共類,其它類的個數不限。 

20、在 Java 中所有實現的多維數組,實際上是由一維數組構成的_數組的數組      。 

21、設 x =15 ,則表達式 ( x + + )/4 的值是________3_____。

22、___抽象____方法是一種僅有方法頭,沒有具體方法體和操作實現的方法,該方法必須在抽象類之中定義。

23、 ___run()_______方法用於定義線程的執行體. ______start()_____方法用於啟動線程.

24、String str1=”abc”;

String str2=new String(“abc”);

System.out.println(str1==str2);     則程序運行后輸出結果為:____fault__(因為比較的是地址)_____

25、Java語言中,有一個類是所有類或接口的父類,這個類的名稱是 ____Object____。   

26、當啟動 Applet 程序時,首先調用的方法是_______init()______。(初始化組件)

27、Java語言是一種完全的_____面向對象_____程序設計語言。

28. 如果一個Java  Applet源程序文件只定義有一個類,該類的類名為MyApplet,則類MyApplet必須是____Applet_____類的子類並且存儲該源程序文件的文件名為Applet            。

29. 設 int x = 2 ,則表達式 (x++)/3 的值是_______0___________。

30. Java提供的訪問權限修飾符有:public、_private      、protected、友元。

31. Java中有兩種常用的字符串類,一個是String,另一個是_ ,StringBuffer _。

【注】String是每次使用都會生成一個對象,不管你用=還是new都會是新的對象。

StringBuffer就是為了補String的這個問題,它可以使用append,這樣初始化后就不會生成新的對象了,但是她是線程不安全的。

StringBuilder是線程安全的,所以它的速度要比StringBuffer慢點,其他的他們一樣。

32. Java實現多線程的方法有兩種,一種方法是通過創建___ Thread ____類的子類實現多線程,另一種方法是定義一個實現

____ runnable __接口的類。

33. Java不支持多繼承。但它允許一個類同時實現多個___接口___,這就相當於部分實現了多繼承。

34. Java源文件中,________import_____語句位於package語句之后、類定義之前。

35. _FileOutputStream__類是OutputStream類的子類,用來處理以文件作為數據輸出的數據流。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM