- 相關(guān)推薦
2017年java筆試練習題
Java 技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用于PC、數據中心、游戲控制臺、科學(xué)超級計算機、移動(dòng)電話(huà)和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開(kāi)發(fā)者專(zhuān)業(yè)社群。下面是小編收集的關(guān)于java筆試練習題,希望大家認真閱讀!
選擇題(共50題,每題1.5分,共75分。多選題選不全或選錯都不得分。)
1. 以下屬于面向對象的特征的是(C,D)。(兩項)
A) 重載
B) 重寫(xiě)
C) 封裝
D) 繼承
2. 以下代碼運行輸出是(C)
public class Person{
private String name=”Person”;
int age=0;
}
public class Child extends Person{
public String grade;
public static void main(String[] args){
Person p = new Child();
System.out.println(p.name);
}
}
A) 輸出:Person
B) 沒(méi)有輸出
C) 編譯出錯
D) 運行出錯
3. 在使用super 和this關(guān)鍵字時(shí),以下描述正確的是(A)
A) 在子類(lèi)構造方法中使用super()顯示調用父類(lèi)的構造方法,super()必須寫(xiě)在子類(lèi)構造方法的第一行,否則編譯不通過(guò)
B) super()和this()不一定要放在構造方法內第一行
C) this()和super()可以同時(shí)出現在一個(gè)構造函數中
D) this()和super()可以在static環(huán)境中使用,包括static方法和static語(yǔ)句塊
4. 以下對封裝的描述正確的是(D)
A) 只能對一個(gè)類(lèi)中的方法進(jìn)行封裝,不能對屬性進(jìn)行封裝
B) 如果子類(lèi)繼承了父類(lèi),對于父類(lèi)中進(jìn)行封裝的方法,子類(lèi)仍然可以直接調用
C) 封裝的意義不大,因此在編碼時(shí)盡量不要使用
D) 封裝的主要作用在于對外隱藏內部實(shí)現細節,增強程序的安全性
5. 以下對繼承的描述錯誤的是(A)
A) Java中的繼承允許一個(gè)子類(lèi)繼承多個(gè)父類(lèi)
B) 父類(lèi)更具有通用性,子類(lèi)更具體
C) Java中的繼承存在著(zhù)傳遞性
D) 當實(shí)例化子類(lèi)時(shí)會(huì )遞歸調用父類(lèi)中的構造方法
6. 以下程序的運行結果是(D)
class Person{
public Person(){
System.out.println(“this is a Person”);
}
}
public class Teacher extends Person{
private String name=”tom”;
public Teacher(){
System.out.println(“this is a teacher”);
super();
}
public static void main(String[] args){
Teacher teacher = new Teacher();
System.out.println(this.name);
}
}
A) this is a Person
this is a teacher
tom
B) this is a teacher
this is a Person
tom
C) 運行出錯
D) 編譯有兩處錯誤
7. 以下說(shuō)法錯誤的是()
A) super.方法()可以調用父類(lèi)的所有非私有方法
B) super()可以調用父類(lèi)的所有非私有構造函數
C) super.屬性可以調用父類(lèi)的所有非私有屬性
D) this和super關(guān)鍵字可以出現在同一個(gè)構造函數中
8. 以下關(guān)于final關(guān)鍵字說(shuō)法錯誤的是(A,C)(兩項)
A) final是java中的修飾符,可以修飾類(lèi)、接口、抽象類(lèi)、方法和屬性
B) final修飾的類(lèi)肯定不能被繼承
C) final修飾的方法不能被重載
D) final修飾的變量不允許被再次賦值
9. 訪(fǎng)問(wèn)修飾符作用范圍由大到小是(D)
A) private-default-protected-public
B) public-default-protected-private
C) private-protected-default-public
D) public-protected-default-private
10. 以下(D)不是Object類(lèi)的方法
A) clone()
B) finalize()
C) toString()
D) hasNext()
11. 多態(tài)的表現形式有(A)
A) 重寫(xiě)
B) 抽象
C) 繼承
D) 封裝
12. 以下對重載描述錯誤的是(B)
A) 方法重載只能發(fā)生在一個(gè)類(lèi)的內部
B) 構造方法不能重載
C) 重載要求方法名相同,參數列表不同
D) 方法的返回值類(lèi)型不是區分方法重載的條件
13. 以下(D)添加到ComputerBook中不會(huì )出錯
class Book{
protected int getPrice(){
return 30;
}
}
public class ComputerBook extends Book{
}
A) protected float getPrice(){}
B) protected int getPrice(int page){}
C) int getPrice(){}
D) public int getPrice(){return 10;}
14. 以下對抽象類(lèi)的描述正確的是(C)
A) 抽象類(lèi)沒(méi)有構造方法
B) 抽象類(lèi)必須提供抽象方法
C) 有抽象方法的類(lèi)一定是抽象類(lèi)
D) 抽象類(lèi)可以通過(guò)new關(guān)鍵字直接實(shí)例化
15. 以下對接口描述錯誤的有(D)
A) 接口沒(méi)有提供構造方法
B) 接口中的方法默認使用public、abstract修飾
C) 接口中的屬性默認使用public、static、final修飾
D) 接口不允許多繼承
16. 以下代碼,描述正確的有(A)
interface IDemo{
public static final String name;1
void print();2
public void getInfo();3
}
abstract class Person implements IDemo{4
public void print(){
}
}
A) 第1行錯誤,沒(méi)有給變量賦值
B) 第2行錯誤,方法沒(méi)有修飾符
C) 第4行錯誤,沒(méi)有實(shí)現接口的全部方法
D) 第3行錯誤,沒(méi)有方法的實(shí)現
17. 接口和抽象類(lèi)描述正確的有(B,C)(兩項)
A) 抽象類(lèi)沒(méi)有構造函數
B) 接口沒(méi)有構造函數
C) 抽象類(lèi)不允許多繼承
D) 接口中的方法可以有方法體
18. 以下描述錯誤的有(C)
A) abstract 可以修飾類(lèi)、接口、方法
B) abstract修飾的類(lèi)主要用于被繼承
C) abstract 可以修飾變量
D) abstract修飾的類(lèi),其子類(lèi)也可以是abstract修飾的
19. 以下描述正確的有(B)
A) 方法的重寫(xiě)應用在一個(gè)類(lèi)的內部
B) 方法的重載與返回值類(lèi)型無(wú)關(guān)
C) 構造方法不能重載
D) 構造方法可以重寫(xiě)
20. 以下程序運行結果是(A)
public class Test extends Father{
private String name=”test”;
public static void main(String[] args){
Test test = new Test();
System.out.println(test.getName());
}
}
class Father{
private String name=”father”;
public String getName() {
return name;
}
}
A) father
B) test
C) 編譯出錯
D) 運行出錯,無(wú)輸出
二、簡(jiǎn)答題(各5分,共25分)
1、在java中如果聲明一個(gè)類(lèi)為final,表示什么意思? (不計分)
答:final是最終的意思,final可用于定義變量、方法和類(lèi)但含義不同,聲明為final的類(lèi)不能被繼承。
1、父類(lèi)的構造方法是否可以被子類(lèi)覆蓋(重寫(xiě))?
答:父類(lèi)的構造方法不可以被子類(lèi)覆蓋,因為父類(lèi)和子類(lèi)的類(lèi)名是不可能一樣的。
2、請講述String 和StringBuffer的區別。
答:String 類(lèi)所定義的對象是用于存放”長(cháng)度固定”的字符串。
StringBuffer類(lèi)所定義的對象是用于存放”長(cháng)度可變動(dòng)”的字符串。
3、如果有兩個(gè)類(lèi)A、B(注意不是接口),你想同時(shí)使用這兩個(gè)類(lèi)的功能,那么你會(huì )如何編寫(xiě)這個(gè)C類(lèi)呢?
答:因為類(lèi)A、B不是接口,所以是不可以直接繼承的,但可以將A、B類(lèi)定義成父子類(lèi),那么C類(lèi)就能實(shí)現A、B類(lèi)的功能了。假如A為B的父類(lèi),B為C的父類(lèi),此時(shí)C就能實(shí)現A、B的功能。
4、結合Java視頻Lesson5(多線(xiàn)程),分析sleep()和wait()方法的區別。
答: Sleeping睡眠的意思 : sleep() 方法用來(lái)暫時(shí)中止執行的線(xiàn)程。在睡眠后,線(xiàn)程將進(jìn)入就緒狀態(tài)。
waiting等待的意思: 如果調用了 wait() 方法,線(xiàn)程將處于等待狀態(tài)。用于在兩個(gè)或多個(gè)線(xiàn)程并發(fā)運行時(shí)。
5、談?wù)勀銓Τ橄箢?lèi)和接口的理解。
答:定義抽象類(lèi)的目的是提供可由其子類(lèi)共享的一般形式、子類(lèi)可以根據自身需要擴展抽象類(lèi)、抽象類(lèi)不能實(shí)例化、抽象方法沒(méi)有函數體、抽象方法必須在子類(lèi)中給出具體實(shí)現。他使用extends來(lái)繼承。
接口:一個(gè)接口允許一個(gè)類(lèi)從幾個(gè)接口繼承而來(lái),Java 程序一次只能繼承一個(gè)類(lèi)但可以實(shí)現幾個(gè)接口,接口不能有任何具體的方法,接口也可用來(lái)定義可由類(lèi)使用的一組常量。其實(shí)現方式是interface來(lái)實(shí)現。
【java筆試練習題】相關(guān)文章:
java基礎筆試題及答案03-03
2016年Java筆試題及答案03-12
2017年Java筆試題及答案03-09
Java考試格林練習題03-23
2016最新Java認證筆試題及答案01-21
JAVA經(jīng)典筆試題目及答案(精選7套)08-03
2016年Java認證筆試題及答案03-03
Java筆試?贾R點(diǎn)錦集03-07