java基礎知識練習題
前段時間學習Java,做了幾道基礎題。題都還是面向基礎的一些題。分享給大家一起學習
#答案在底部
選擇題(共50題,每題2分,滿分100分)
1) 在Java類中,使用以下( )聲明語句來定義公有的int型常量MAX。
A. public int MAX = 100;
B. final int MAX = 100;
C. public static int MAX = 100;
D. public static final int MAX = 100;
2) 在Java中,下列關於方法重載的說法中錯誤的是( )(多選)。
A. 方法重載要求方法名稱必須相同
B. 重載方法的參數列表必須不一致
C. 重載方法的返回類型必須一致
D. 一個方法在所屬的類中只能被重載一次
3) 給定Java代碼如下所示,在橫線處新增下列( )方法,是對cal方法的重載。(多選)
public class Test{
public void cal(int x, int y, int z) {}
________________
}
A. public int cal(int x, int y, float z){ return 0; }
B. public int cal(int x, int y, int z){ return 0; }
C. public void cal(int x, int z){ }
D. public void cal(int z, int y, int x){ }
4) 在Java中,下面對於構造函數的描述正確的是( )。
A. 類必須顯式定義構造函數
B. 構造函數的返回類型是void
C. 構造函數和類有相同的名稱,並且不能帶任何參數
D. 一個類可以定義多個構造函數
5) 下面Java代碼的運行結果是( )。
class Penguin {
private String name=null; // 名字
private int health=0; // 健康值
private String sex=null; // 性別
public void Penguin() {
health = 10;
sex = "雄";
System.out.println("執行構造方法。");
}
public void print() {
System.out.println("企鵝的名字是" + name +
",健康值是" + health + ",性別是" + sex+ "。");
}
public static void main(String[] args) {
Penguin pgn = new Penguin();
pgn.print();
}
}
A. 企鵝的名字是null,健康值是10,性別是雄。
B. 執行構造方法。
企鵝的名字是null,健康值是0,性別是null。
C. 企鵝的名字是null,健康值是0,性別是null。
D. 執行構造方法。
企鵝的名字是null,健康值是10,性別是雄。
6) 下列選項中關於Java中封裝的說法錯誤的是( )。
A. 封裝就是將屬性私有化,提供公有的方法訪問私有屬性
B. 屬性的訪問方法包括setter方法和getter方法
C. setter方法用於賦值、getter方法用於取值
D. 類的屬性必須進行封裝,否則無法通過編譯
7) 使用Java實現封裝,第一步是修改屬性可見性來限制對屬性的訪問,第二步是創建賦值和取值方法,用於對屬性的訪問,第三步應該是( )。
A. 使用賦值和取值方法訪問屬性
B. 編寫常規方法訪問屬性
C. 在賦值和取值方法中,加入對屬性的存取限制
D. 編寫main方法創建對象,調用賦值和取值方法訪問屬性
8) 分析如下所示的Java代碼,其中this關鍵字的意思是( )。
public class Test {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name; //this關鍵字所在的行
}
}
A. name屬性
B. Test類的內部指代自身的引用
C. Test類的對象引用Test類的其他對象
D. 指所在的方法
9) 在Java中,以下程序編譯運行後的輸出結果為( )。
public class Test {
int x, y;
Test(int x, int y) {
this.x = x;
this.y = y;
}
public static void main(String[] args) {
Test pt1, pt2;
pt1 = new Test(3, 3);
pt2 = new Test(4, 4);
System.out.print(pt1.x + pt2.x);
}
}
A. 6
B. 3 4
C. 8
D. 7
10) 在Java語言中,下列關於類的繼承的描述,正確的是( )。
A. 一個類可以繼承多個父類
B. 一個類可以具有多個子類
C. 子類可以使用父類的所有方法
D. 子類一定比父類有更多的成員方法
11) Java中,如果類C是類B的子類,類B是類A的子類,那麽下面描述正確的是( )。
A. C不僅繼承了B中的公有成員,同樣也繼承了A中的公有成員
B. C只繼承了B中的成員
C. C只繼承了A中的成員
D. C不能繼承A或B中的成員
12) 給定一個Java程序Test.java的代碼如下所示,編譯時,會出現以下( )情況。
class Parent {
public int count() { // 第1行
return 0;
}
}
public class Test extends Parent {
private int i;
public int count() { // 第2行
return i % 9; // 第3行
}
}
A. 編譯通過
B. 在第1行引發編譯錯誤
C. 在第2行引發編譯錯誤
D. 在第3行引發編譯錯誤
13) 給定如下一個Java源文件Child.java,編譯並運行Child.java,以下結果正確的是( )。
class Parent1 {
Parent1(String s){
System.out.println(s);
}
}
class Parent2 extends Parent1{
Parent2(){
System.out.println("parent2");
}
}
public class Child extends Parent2 {
public static void main(String[] args) {
Child child = new Child();
}
}
A. 編譯錯誤:沒有找到構造器Child()
B. 編譯錯誤:沒有找到構造器Parent1()
C. 正確運行,沒有輸出值
D. 正確運行,輸出結果為:parent2
14) 給定Java程序Child.java的代碼如下所示,則編譯運行該類的結果是( )。
class Parent {
Parent() {
System.out.println("parent");
}
}
public class Child extends Parent {
Child(String s) {
System.out.println(s);
}
public static void main(String[] args) {
Child child = new Child("child");
}
}
A. 輸出:child
B. 輸出:child
parent
C. 輸出:parent
child
D. 編譯錯誤
15) 下列選項中關於Java中super關鍵字的說法錯誤的是( )。
A. super關鍵字是在子類對象內部指代其父類對象的引用
B. super關鍵字不僅可以指代子類的直接父類,還可以指代父類的父類
C. 子類可以通過super關鍵字調用父類的方法
D. 子類可以通過super關鍵字調用父類的屬性
16) 分析如下所示的Java代碼,則選項中的說法正確的是( )(多選)。
class Parent{
public String name;
public Parent(String pName){
this.name = pName;
}
}
public class Test extends Parent { //1
public Test(String Name){ //2
name="hello"; //3
super("kitty"); //4
}
}
A. 第2行錯誤,Test類的構造函數中參數名稱應與其父類構造函數中的參數名相同
B. 第3行錯誤,應使用super關鍵字調用父類的name屬性,改為super.name="hello";
C. 第4行錯誤,調用父類構造方法的語句必須放在子類構造方法中的第一行
D. 程序編譯通過,無錯誤
17) 以下關於Object類說法錯誤的是( )。
A. 一切類都直接或間接繼承自Object類
B. 接口亦繼承Object類
C. Object類中定義了toString()方法
D. Object類在java.lang包中
18) 在Java中,多態的實現不僅能減少編碼的工作量,還能大大提高程序的可維護性及可擴展性,那麽實現多態的步驟包括以下幾個方面除了( )。
A. 子類重寫父類的方法
B. 子類重載同一個方法
C. 定義方法時,把父類類型作為參數類型;調用方法時,把父類或子類的對象作為參數傳入方法
D. 運行時,根據實際創建的對象類型動態決定使用哪個方法
19) 給定Java代碼如下所示,則編譯運行後,輸出結果是( )。
class Parent {
public void count() {
System.out.println(10%3);
}
}
public class Child extends Parent{
public void count() {
System.out.println(10/3);
}
public static void main(String args[]) {
Parent p = new Child();
p.count();
}
}
A. 1
B. 1.0
C. 3
D. 3.3333333333333335
20) 分析如下Java代碼,如果想在控制臺上輸出“B類的test()方法”,則在橫線處應填入( )(多選)。
class A {
public void test() {
System.out.println("A類的test()方法");
}
}
class B extends A {
public void test() {
System.out.println("B類的test()方法");
}
public static void main(String args[]) {
________________________
}
}
A. A a = new B();
a.test();
B. A a = new A();
a.test();
C. B b = new A();
b.test();
D. B b = new B();
b.test();
21) 編譯運行如下Java代碼,輸出結果是( )。
class Base {
public void method(){
System.out.print ("Base method");
}
}
class Child extends Base{
public void methodB(){
System.out.print ("Child methodB");
}
}
class Sample {
public static void main(String[] args) {
Base base= new Child();
base.methodB();
}
}
A. Base method
B. Child methodB
C. Base method Child MethodB
D. 編譯錯誤
22) 下面關於Java接口的說法錯誤的是( )。
A. 一個Java接口是一些方法特征的集合,但沒有方法的實現
B. Java接口中定義的方法在不同的地方被實現,可以具有完全不同的行為
C. Java接口中可以聲明私有成員
D. Java接口不能被實例化
23) 在Java接口中定義常量,下面語法錯誤的是( )。
A. static int MALE = 1;
B. final int MALE = 1;
C. int MALE = 1;
D. private int MALE = 1;
24) 在Java接口中,下列選項中屬於有效的方法聲明是( )(多選)。
A. public void aMethod();
B. void aMethod();
C. void aMethod(){}
D. private void aMethod();
25) 給定如下Java程序代碼,在橫線處加入( )語句,可以使這段代碼編譯通過(多選)。
interface Parent{
public int count(int i);
}
public class Test implements Parent {
public int count(int i){
return i % 9;
}
public static void main(String[] args){
________________
int i = p.count(20);
}
}
A. Test p = new Test();
B. Parent p = new Test();
C. Parent p = new Parent();
D. Test p = new Parent();
26) 下列選項中關於Java中ArrayList、LinkedList、HashMap三個類的描述錯誤的是( )。
A. ArrayList和LinkedList均實現了List接口
B. ArrayList的訪問速度比LinkedList快
C. 添加和刪除元素時,ArrayList的表現更佳
D. HashMap實現Map接口,它允許任何類型的鍵和值對象,允許將null用作鍵或值
27) 關於Java中的集合實現類,下列說法描述錯誤的是( )。
A. HashMap是Map接口的實現類
B. ArrayList對象是長度可變的對象引用數組
C. 集合框架都包含三大塊內容:對外的接口、接口的實現和對集合運算的算法
D. Set中存儲一組不允許重復、有序的對象
28) 對於Java中的集合類java.util.ArrayList,以下說法正確的是( )。
A. 這個集合中的元素是無序的
B. 可以通過鍵來獲取這個集合中的元素
C. 在對這個集合的元素執行遍歷操作時,效率比較高
D. 可以通過addFirst()方法,在列表的首部插入元素
29) 給定如下Java代碼,其中第( )行代碼有錯誤。
import java.util.*;
public class MapTest {
public static void main(String[] args) {
List pList = new ArrayList();
pList.add("A"); //第五行
pList.add("B"); //第六行
for (int i = 0; i < pList.size(); i++) { //第七行
String str = pList.get(i); //第八行
System.out.print(str);
}
}
}
A. 五
B. 六
C. 七
D. 八
30) 給定如下Java代碼,可以填入橫線處的代碼是( )。
import java.util.*;
public class Test {
public static void main(String[] args) {
________
list.addLast("001");
}
}
A. List list = new ArrayList();
B. List list = new List();
C. ArrayList list = new ArrayList();
D. LinkedList list = new LinkedList();
31) 在Java中,( )類的對象可被用作堆棧或者隊列。
A. LinkedList
B. ArrayList
C. Collection
D. HashMap
32) 在Java中,關於HashMap類的描述,以下說法錯誤的是( )。
A. HashMap使用鍵/值的形式保存數據
B. HashMap能夠保證其中元素的順序
C. HashMap的存儲方式是哈希表,查詢指定元素效率高
D. HashMap通過get( key)獲取對應的值
33) 閱讀下面的Java代碼,運行結果描述正確的是( )。
import java.util.*;
public class TestMap{
public static void main(String[] args){
Map map=new HashMap( );
map.put(“first”,”football”);
map.put(“first”,”basketball”);
System.out.print(map.get(“first”));
}
}
A. 編譯時發生錯誤
B. 編譯通過,運行時發生錯誤
C. 正確運行,顯示basketball
D. 正確運行,顯示football
34) 在Java中,集合框架 API定義了一組用於批量操作數據的接口和類,它們包括在( )包中。
A. java.lang
B. java.sql
C. java.util
D. java.math
35) 以下選項中關於XML文檔的說法正確的是( )(多選)。
A. XML文檔中使用用戶自定義標簽,標簽名不區分大小寫
B. 可以使用DTD或者XSD定義XML文檔結構
C. XML文檔的作用是數據存儲、數據交換、數據顯示
D. XML文檔總是以一個XML聲明開始
36) 以下選項中關於DOM和SAX的說法錯誤的是( )。
A. DOM和SAX都是目前常用的XML解析技術
B. DOM把XML文檔映射成一個倒掛的樹狀結構
C. DOM模型內存消耗小,DOM解析器能提供更好的性能優勢
D. SAX讀取文檔時會激活一系列事件,推給事件處理器,由事件處理器來訪問文檔
37) 以下選項中關於Java中文件輸入輸出的說法正確的是( )(多選)。
A. 在Java中,文件的輸入輸出功能是通過流來實現的
B. 如果要把數據寫入到一個文件中,需要創建一個輸入流對象
C. 字符流在某些方面比如漢字的處理,比字節流更高效
D. 可以通過Reader r=new Reader("c:\\pet.txt")來創建一個輸入流對象
38) 給定如下Java代碼,實現文件復制功能,其中第( )行代碼有錯誤。
public class TestIO {
public static void main(String[] args) throws Exception {
Reader fr = new FileReader("c:\\source.txt");
Writer fw = new FileWriter("c:\\target.txt");
char[] ch = new char[1024];
int length = fr.read(ch);//第六行
while (length != -1) {
fw.write(ch); //第八行
length = fr.read(ch);
}
if (null != fr)
fr.close(); //第十三行
if (null != fw)
fw.close();
}
}
A. 沒有錯誤
B. 六
C. 八
D. 十三
39)給定下面的類定義
public class Upton{
public static void main(String argv[]){
}
//Here
}
下面哪一個在替換//Here後是合法的(多選)?
A. public int amethod(int z){}
B. public int amethod(int i,int j){return 99;}
C. protected void amethod(long l){ }
D. private void anothermethod(){}
40)給定下面的類定義
class Base{
public void amethod(){
System.out.println("Base");
}
}
public class Hay extends Base{
public static void main(String argv[]){
Hay h = new Hay();
h.amethod();
}
下面在類Hay中的哪一個方法將會編譯並使程序打印出字符串"Hay"?
A. public int amethod(){ System.out.println("Hay");}
B. public void amethod(long l){ System.out.println("Hay");}
C. public void amethod(){ System.out.println("Hay");}
D. public void amethod(void){ System.out.println("Hay");}
41)給定下面的類定義
public class ShrubHill{
public void foregate(String sName){}
//Here
}
下面的哪一個方法可以合法的直接替換//Here(多選)?
A. public int foregate(String sName){}
B. public void foregate(StringBuffer sName){}
C. public void foreGate(String sName){}
D. private void foregate(String sType){}
42) 給定下面的類定義
class Base{
Base(int i){}
}
class DefCon extends Base{
DefCon(int i){
//XX
}
}
如果將標記//XX的地方替換為下面的行,哪一行是獨立合法的?
A. super();
B. this();
C. this(99);
D. super(99);
43)給定下面的類
public class Crowle{
public static void main(String argv[]){
Crowle c = new Crowle();
}
Crowle(){
System.out.println("Greetings from Crowle");
}
}
構造方法會返回哪一種數據類型?
A. null
B. integer
C. String
D. no datatype is returned
44)當你試著編譯運行下面的代碼的時候,可能會發生什麽?
public class Crowle{
public static void main(String argv[]){
Crowle c = new Crowle();
}
void Crowle(){
System.out.println("Greetings from Crowle");
}
}
A. 輸出 "Greetings from Crowle"
B. 系統報錯
C. 輸出 "void"
D. 沒有輸出
45)當你試著編譯運行下面的類的時候,可能會發生什麽?
class Base{
Base(int i){
System.out.println("Base");
}
}
class Severn extends Base{
public static void main(String argv[]){
Severn s = new Severn();
}
void Severn(){
System.out.println("Severn");
}
}
A. 編譯完成並運行時輸出字符串"Severn"
B. 編譯錯誤
C. 編譯完成但運行時沒有輸出
D. 編譯完成並運行時輸出字符串"Base"
46)怎樣通過一個語句改變數組大小同時保持原值不變?
A. 使用Array類的setSize()方法
B. 使用Util.setSize(int iNewSize)
C. 使用 size() 操作
D. 以上沒有一個是對的。
47)你想用下面的代碼查找數組最後一個元素的值,當你編譯並運行它的時候,會發生什麽?
public class MyAr{
public static void main(String argv[]){
int[]i = new int[5];
System.out.println(i[5]);
}
}
A. 編譯完成並輸出 0
B. 編譯完成並輸出null
C. 編譯完成但運行時異常
D. 編譯錯誤
48)作為一個好的Java程序員,你已忘記了曾經在C/C++中知道的關於數組大小信息的知識。如果你想遍歷一個數組並停止在最後一個元素處。你會使用下面的哪一個?
A. myarray.length();
B. myarray.length;
C. myarray.size
D. myarray.size();
49)你的老板為了你寫出了HelloWorld而很高興地為你升職了,現在她給你分配了一個新任務,去做一個踢踏舞遊戲(或者我小時候玩的曲棍球遊戲)。你認為你需要一個多維數組,下面哪一個能做這個工作?
A. int i =new int[3][3];
B. int[] i =new int[3][3];
C. int[][] i =new int[3][3];
D. int i[3][3]=new int[][];
50)你希望找到一個更優雅的方式給你的數組賦值而不使用for 循環語句,下面的哪一個能做到?
A. myArray{
[1]="One";
[2]="Two";
[3]="Three";
}
B. String s[5]=new String[]{"Zero","One","Two","Three","Four"};
C. String s[]=new String[]{"Zero","One","Two","Three","Four"};
D. String s[]=new String[]={"Zero","One","Two","Three","Four"};
#答案:
1.D 2.CD 3.AC 4.D 5.C 6.D 7.C 8.B 9.D10.B
11.A 12.A 13.B 14.C 15.B 16.AC 17.B 18.B 19.C 20.AD
21.D 22.C 23.D 24.AB 25.AB 26.C 27.D 28.C 29.D 30.D
31.A 32.B 33.C 34.C 35.BCD 36.C 37.AC 38.A 39.BCD40.C
41.BC 42.D 43.D 44.D 45.B 46.D 47.C 48.B 49.C 50.C
java基礎知識練習題