50道精選Java筆試題帶答案
JAVA
340已閱讀
2020-04-14 15:30:10
導(dǎo)讀
針對(duì)以下題目,請(qǐng)選擇最符合題目要求的答案,針對(duì)每一道題目,所有答案都選對(duì),則該題得分,所選答案錯(cuò)誤或不能選出所有答案,則該題不得分。
文章介紹
針對(duì)以下題目,請(qǐng)選擇最符合題目要求的答案,針對(duì)每一道題目,所有答案都選對(duì),則該題得分,所選答案錯(cuò)誤或不能選出所有答案,則該題不得分。
1、在Java中,程序員可以在子類的構(gòu)造方法中使用關(guān)鍵字(A)調(diào)用父類的構(gòu)造方法。
a)super
b)this
c)extends
d)implements
2、在Java中,關(guān)于面向?qū)ο螅f法不正確的是(D)
a)現(xiàn)實(shí)世界就是“面向?qū)ο蟮摹?,面向?qū)ο缶褪遣捎谩艾F(xiàn)實(shí)模擬”的方法設(shè)計(jì)和開發(fā)程序
b)面向?qū)ο笤O(shè)計(jì)的過程就是抽象的過程
c)面向?qū)ο蠹夹g(shù)是目前計(jì)算機(jī)軟件開發(fā)中最流行的技術(shù)
d)Java和C語言都是完全面向?qū)ο蟮木幊陶Z言
3、對(duì)于以下Java代碼的運(yùn)行結(jié)果描述正確的是(C)
publicclassTest{
privatestaticfinalintflag=1;
publicstaticvoidmain(String[]args){
for(inti=0;i<100;i++){
System.out.println(flag++);
}
}
}
a)程序運(yùn)行100次,分別輸出0到99
b)程序運(yùn)行101次,分別輸出0至100
c)程序編譯錯(cuò)誤
d)程序可能出現(xiàn)死循環(huán)
4、在Java中,關(guān)于繼承的說法錯(cuò)誤的是(C)
a)使用extends關(guān)鍵字可以實(shí)現(xiàn)一個(gè)類繼承另一個(gè)類
b)所有的Java類都直接或間接地繼承了java.lang.Object類
c)在子類的構(gòu)造方法中,必須顯示調(diào)用父類的構(gòu)造方法
d)在子類的構(gòu)造方法中,可以通過super關(guān)鍵字調(diào)用父類的構(gòu)造方法
5、在Java中,以下關(guān)于static關(guān)鍵字的說法不正確的是(AB)(選擇二項(xiàng))
a)static可以用來修飾方法,但不可以修飾屬性
b)在方法里可以定義static變量
c)static修飾的屬性和方法稱為類屬性、類方法
d)不使用static修飾的屬性和方法,通常稱為實(shí)例屬性、實(shí)例方法
6、運(yùn)行以下Java代碼,正確的輸出結(jié)果是(B)
publicstaticvoidmain(String[]args){
Map<String,String>schools=newHashMap<String,String>();
for(inti=0;i<3;i++){
schools.put(""+i,"stu"+i);
}
System.out.println(schools.get("1"));
}
a)stu0 b)stu1c)stu2 d)stu3
7、以下Java代碼,橫線處應(yīng)填寫(C)
try{
Class.forName(JDBC驅(qū)動(dòng)類);
Connection con=DriverManager.getConnection(JDBC URL,數(shù)據(jù)庫用戶名,密碼);
Statement stmt=con.createStatement();
Result rs=__________________________(“select*from stuinfo”);
while(________________){
//處理結(jié)果
…省略代碼….
}
}catch(Exception ex){
…省略代碼….
}
a)stmt.executeUpdate
rs.hasNext()
b)stmt.executeQuery
rs.hasNext()
c)stmt.executeQuery
rs.next()
d)stmt.executeUpdate
rs.next()
8、在Java中,假設(shè)下列每個(gè)選項(xiàng)中的兩個(gè)方法在同一個(gè)類中,則屬于方法重載的是(AD)(選擇二項(xiàng))
a)public void work()和public void work(String type)
b)public String work(String type)和public void work(String type)
c)public void work1(String type)和public void work2(String type)
d)public void work(Strint type)和public void work(String type,int time)
9、在Java程序中,包含如下代碼:
publicstaticvoidmain(String[]args){
List list=newArrayList();
list.add("Java");
list.add("C#");
list.add("HTML");
list.remove(1);
System.out.println("還有"+list.size()+"個(gè)元素!它們分別是:");
Iterator<String>it=list.iterator();
while(it.hasNext()){
String str=it.next();
System.out.println(str);
}
}
則程序運(yùn)行結(jié)果描述正確的是(B)
a)行編譯錯(cuò)誤
b)還有2個(gè)元素!它們分別是:
Java
HTML
c)還有2個(gè)元素!它們分別是:
C#
HTML
d)還有3個(gè)元素!它們分別是:
Java
C#
HTML
10、閱讀并分析如下的代碼,以下代碼的運(yùn)行結(jié)果是(B)
publicstaticvoidmain(String[]args){
Map map=newHashMap();
map.put("1","張三");
map.put("1","李四");
map.put("2","王五");
map.put("2","李四");
System.out.println(map.size());
}
a)1 b)2c)3 d)4
11、下列Java代碼中,說法正確的是(D)
publicclassAnimal{
protectedString name;
publicAnimal(String name){
this.name=name;
}
publicvoidshow(){
System.out.println("animal...");
}
}
publicclassCat extends Animal{
publicCat(String name){
super(name);
}
publicvoiddisp(){
System.out.println("我的名字是:"+name);
}
publicstaticvoidmain(String[]args){
Cat miQi=newCat();
miQi.disp();
}
}
a)正常運(yùn)行,輸出結(jié)果:animal...
b)正常運(yùn)行,沒有任何輸出
c)正常運(yùn)行,輸出結(jié)果:我的名字是:null
d)編譯錯(cuò)誤
12、閱讀以下Java代碼(A)
publicclassPerson{
publicvoidshow(){
System.out.println("人類!");
}
}
publicclassStudent extends Person{
publicvoidshow(){
System.out.println("學(xué)生!");
}
}
publicclassDoctor extends Person{
publicvoidshow(){
System.out.println("醫(yī)生!");
}
}
publicclassTemp{
publicstaticvoidmain(String[]args){
Person per=newStudent();
Person doc=newDoctor();
per.show();
doc.show();
}
}
當(dāng)程序運(yùn)行后,輸出結(jié)果正確的是(A)
a)學(xué)生!
醫(yī)生!
b)人類!
學(xué)生!
醫(yī)生!
c)編譯錯(cuò)誤
d)運(yùn)行錯(cuò)誤
13、如下Java代碼中,存在錯(cuò)誤的代碼行是(B)
publicabstractclassShape{//1
publicabstractdoublegetArea(){};//2
}
publicclassSquare extends Shape{
privatedoubleheight=0;
publicSquare(double height){
this.height=height;
}
publicdoublegetArea(){//3
return(this.height*this.height);
}
}
publicclassTest01{
publicstaticvoidmain(String[]args){
Shape square=newSquare(3);//4
System.out.println(square.getArea());
}
}
a)1 b)2c)3 d)4
14、閱讀下列Java代碼,選項(xiàng)錯(cuò)誤的是(A)
publicclassStudent{
privateString name;
publicvoidsetName(String name){
this.name=name;
}
publicString getName(){
returnname;
}
}
a)如果去掉setName方法中的this也是正確的
b)這是一個(gè)可以讀寫的屬性
c)采用set、get方法封裝屬性,可以實(shí)現(xiàn)對(duì)屬性的訪問控制
d)this.name=name;中等號(hào)右邊的name表示方法中的參數(shù),等號(hào)左邊的name在這里表示類中的屬性
15、閱讀如下Java代碼,其中錯(cuò)誤的行是(C)
publicclassStudent{
privateString stuId;
publicvoidsetStuId(String stuId)throws Exception{//1
if(stuId.length()!=4){//2
throwsnewException("學(xué)號(hào)必須是4位");//3
}else{
this.stuId=stuId;
}
}
}
a)1
b)2
c)3
d)全部正確
16、以下Java程序的輸出結(jié)果是(B)
publicclassTest{
publicstaticvoidmain(String[]args){
Map<Integer,String>map=newHashMap<Integer,String>();
map.put(1,"JAVA");
map.put(2,"NET");
map.put(4,"Android");
map.remove("Android");
for(Integer key:map.keySet()){
System.out.println(map.get(key));
}
}
}
a)JAVA
.NET
b)JAVA
.NET
Android
c)編譯錯(cuò)誤
d)程序運(yùn)行時(shí)出現(xiàn)空指針異常
17、在Java中,以下關(guān)于DAO模式描述錯(cuò)誤的是(D)
a)DAO位于業(yè)務(wù)邏輯和持久化數(shù)據(jù)之間,實(shí)現(xiàn)對(duì)持久化數(shù)據(jù)的訪問
b)一個(gè)典型的DAO模式主要由DAO接口、DAO實(shí)現(xiàn)類、實(shí)體類、數(shù)據(jù)庫連接和關(guān)閉類組成
c)DAO模式可以隔離不同數(shù)據(jù)庫的實(shí)現(xiàn),提高了代碼擴(kuò)展性和系統(tǒng)的可移植性
d)采用DAO模式,即使使用不同的數(shù)據(jù)庫,數(shù)據(jù)庫連接中的字符串也不需要改變
18、下列對(duì)于抽象類和抽象方法錯(cuò)誤的是(A)
a)抽象類不能是靜態(tài)的,但可以是密封的
b)抽象類不可以被實(shí)例化
c)抽象為中的方法不一定都是抽象方法
d)抽象父類可以在某種程序上起到約束子類行為的作用
19、關(guān)于Java中集合的說法正確的是(A)
a)List和Set接口都屬性Collection接口
b)List和Map接口都屬性Collection接口
c)Map和Set接口都屬于List接口
d)List、Set和Map都屬于Collection接口
20、下列選項(xiàng)中關(guān)于Java中類的繼承的說法錯(cuò)誤的是(B)
a)使用繼承可以有效的實(shí)現(xiàn)復(fù)用代碼
b)在Java中一個(gè)類可以有多個(gè)直接父類,從而繼承更多的功能
c)在創(chuàng)建一個(gè)子類對(duì)象時(shí),會(huì)首先創(chuàng)建父類對(duì)象,再創(chuàng)建子類對(duì)象
d)在定義一個(gè)類時(shí),沒有使用extends關(guān)鍵字,那么這個(gè)類將繼承Object類
21、針對(duì)如下Java程序,下面選項(xiàng)中可以填入下劃線處的是(A)
publicclassPerson{
publicvoideat(){
System.out.println("eating with mouth");
}
}
publicclassChinese extends Person{
publicvoideat(){
System.out.println("eating rice by chopsticks");
}
publicvoidshadowBoxing(){
System.out.println("practice shadowBoxing every morning");
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
____________________________________
}
}
a)Chinese ch=new Chinese();
ch.shadowBoxing();
b)Person person=new Chinese();
person.shadowBoxing();
c)Chinese ch=new Person();
ch.eat();
d)Person person=new Chinese();
person.eat();
22、下面使用JDBC的純Java方式建立數(shù)據(jù)庫連接并關(guān)閉,出現(xiàn)錯(cuò)誤的行是(B)
publicstaticvoidmain(String[]args){
Connection conn=null;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//1
}catch(NotFoundClassException e){//2
System.out.println("找不到驅(qū)動(dòng)類");
}
try{
conn=DriverManager.getConnection("jdbc:sqlserver:localhost:1433;DatabaseName=stu","sa","bdqn");//3
}catch(SQLException e){//4
System.out.println("連接不正確");
}finally{
//關(guān)閉連接
}
}
a)1 b)2 c)3 d)4
23、閱讀如下Java代碼,在控制臺(tái)輸入“-1”,執(zhí)行結(jié)果是(B)
publicclassTest{
publicstaticvoidmain(String[]args){
Scanner input=newScanner(System.in);
System.out.print("請(qǐng)輸入數(shù)字:");
try{
intnum=input.nextInt();
if(num<1||num>4){
thrownewException("必須在1-4之間");
}
}catch(InputMismatchException e){
System.out.println("InputMismatchException");
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
a)輸出InputMismatchException
b)輸出:必須在1-4之間!
c)什么也沒輸出
d)編譯錯(cuò)誤
24、閱讀下列Java代碼,共有(B)處錯(cuò)誤。
String str="文件寫入練習(xí)";
FileWriter fw=null;//1
try{
fw=newFileWriter("c:/text.txt");//2
fw.writeToEnd(str);//3
}catch(IOException e){//4
e.printStackTrace();
}finally{
//此處省略關(guān)閉流
}
A.0
B.1
C.2
D.3
25、在java中有關(guān)接口的說法錯(cuò)誤的有(BD)(選擇二項(xiàng))
26、以下在Java數(shù)據(jù)庫連接用來執(zhí)行Sql語句的對(duì)象是(D)
a)java.sql.Statement類的對(duì)象
b)java.sql.ResultSet類的對(duì)象
c)java.sql.Connection類的對(duì)象
d)java.sql.PreparedStatement類的對(duì)象
27、在Java中,定義抽象類和抽象方法的關(guān)鍵字是(A)
a)abstract
b)final
c)virtual
d)interface
28、在Java中,com包中某類的方法使用下列(B)訪問修飾符修飾后,可以被com.db包中的子類訪問,但不能被com.db中其他類訪問
a)private b)protected c)public d)friendly
29、以下關(guān)于Java中構(gòu)造方法描述正確的是(C)
a)構(gòu)造方法的名字和類名相同,返回值類型為void
b)在沒有給類提供任何構(gòu)造方法時(shí),系統(tǒng)會(huì)提供一個(gè)有參數(shù)的、方法體為空的默認(rèn)構(gòu)造方法
c)構(gòu)造方法的作用主要是在創(chuàng)建對(duì)象時(shí)執(zhí)行一些初時(shí)化操作,可以通過重載實(shí)現(xiàn)多種初始化行為
d)構(gòu)造方法被子類繼承后可進(jìn)行重寫
30、在Java中,下列(D)類不能派生出子類
a)public class Myclass{}
b)class MyClass{}
c)abstract class MyClass{}
d)final class MyClass{}
31、以下程序的運(yùn)行結(jié)果是(C)。
class Person
{
public Person()
{
System.out.println("this is a Person");
}
}
public classTeacher 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)編譯出錯(cuò)
d)以上說法都不正確
32、以下對(duì)封裝的描述正確的是(D)
a)只能對(duì)一個(gè)類中的方法進(jìn)行封裝,不能對(duì)屬性進(jìn)行封裝
b)如果子類繼承了父類,對(duì)于父類中進(jìn)行封裝的方法,子類仍然可以直接調(diào)用
c)封裝的意義并不大,因此在編碼時(shí)盡量不要使用封裝
d)封裝的主要作用在于對(duì)外隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié),增強(qiáng)程序的安全性
33、以下代碼中,this是指(A)
class bird{
int x,y;
void fly(int x,int y){
this.x=x;
this.y=y;
}
}
a)bird b)fly c)bird或fly d)不一定
34、在使用JDBC API實(shí)現(xiàn)查詢數(shù)據(jù)時(shí),執(zhí)行過程中以下接口或類的使用順序正確的是(C)
(1)Connection
(2)DriverManager
(3)ResultSet
(4)Statement
a)(1)(2)(3)(4)
b)(2)(1)(3)(4)
c)(2)(1)(4)(3)
d)(3)(2)(1)(4)
35、編譯運(yùn)行如下Java代碼,輸出結(jié)果是(A)
publicclassBase{
publicvoidmethod(){
System.out.println("Base method");
}
}
publicclassChild extends Base{
publicvoidmethodB(){
System.out.println("Child methodB");
}
}
publicclassSample{
publicstaticvoidmain(String[]args){
Base base=newChild();
base.method();
}
}
a)Base method
b)Child methodB
c)Base method Child MethodB
d)編譯錯(cuò)誤
36、下列代碼中,實(shí)現(xiàn)獲得1-100之間的隨機(jī)整數(shù)是(C)
a)Math.ceil(Math.random()*99)+1
b)Math.ceil(Math.random()*100)-1
c)Math.ceil(Math.random()*100)
d)Math.ceil(Math.random()*100+1)
37、以下選項(xiàng)中屬于軟件測(cè)試方法是(BD)(選擇二項(xiàng))
a)灰盒測(cè)試
b)白盒測(cè)試
c)紅盒測(cè)試
d)黑盒測(cè)試
38、給定如下Java代碼,若編譯運(yùn)行,以下描述正確的是(A)
publicclassB{
publicB(){
System.out.println("B");
}
}
publicclassC extends B{
publicC(){
System.out.println("C");
super();
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
C c=newC();
}
}
a)類C的構(gòu)造方法存在錯(cuò)誤,編譯無法通過
b)正常運(yùn)行,輸出:C
c)正常運(yùn)行,輸出:CB
d)正常運(yùn)行,輸出:BC
39、下面的Java程序編譯運(yùn)行結(jié)果是(C)
publicinterfaceA{
intx=0;
}
publicclassB{
intx=1;
}
publicclassC extends B implements A{
publicvoidpX(){
System.out.println(super.x);
}
publicstaticvoidmain(String[]args){
newC().pX();
}
}
a)產(chǎn)生運(yùn)行期錯(cuò)誤
b)產(chǎn)生編譯期錯(cuò)誤
c)程序運(yùn)行,輸出結(jié)果為1
d)程序運(yùn)行,輸出結(jié)果為0
40、下列選項(xiàng)中關(guān)于Java中封裝的說法錯(cuò)誤的是(D)
a)封裝就是將屬性私有化,提供公有的方法訪問私有屬性
b)屬性的訪問方法包括setter方法和getter方法
c)setter方法用于賦值、getter方法用于取值
d)包含屬性的類都必須封裝屬性,否則無法通過編譯
41、關(guān)于類的屬性與方法說法錯(cuò)誤的是(D)
a)通過使用屬性可以保障類中字段的安全
b)在具有ref參數(shù)的方法中,必須對(duì)ref參數(shù)進(jìn)行賦值
c)使用Visual Studio開發(fā)C#程序時(shí),可以通過封裝字段快速創(chuàng)建屬性
d)定義為public的靜態(tài)方法不需要?jiǎng)?chuàng)建類的實(shí)例就可以直接調(diào)用
42、下面Java代碼執(zhí)行后結(jié)果是(D)
publicclassBase{
publicvoidmethod(){
System.out.println("Base method");
}
}
publicclassSub extends Base{
publicvoidmethod(){
System.out.println("Sub method");
}
publicvoidmethodB(){
System.out.println("Sub methodB");
}
publicstaticvoidmain(String[]args){
Base base=newSub();
base.method();
base.methodB();
}
}
a)Sub method
Sub methodB
b)Base method
Sub methodB
c)Base method
Sub method
d)出現(xiàn)編譯錯(cuò)誤
43、閱讀如下Java代碼,執(zhí)行結(jié)果是(D)
publicclassTest{
publicstaticvoidmain(String[]args){
try{
String s=null;
s=s.toLowerCase();
}catch(ArithmeticException e){
System.out.println("ArithmeticException");
}catch(NumberFormatException e){
System.out.println("NumberFormatException");
}
}
}
a)ArithmeticException
b)NumberFormatException
c)Exception
d)沒有輸出任何內(nèi)容,顯示NullPointerException異常信息
44、在Java中,以下關(guān)于JDBC API錯(cuò)誤的說法是(D)
a)PreparedStatement可以避免SQL注入,提高了安全性
b)PreparedStatement比Statement執(zhí)行速度要快
c)Statement中的execute(String sql)方法可以執(zhí)行SQL查詢語句
d)Statement中的executeUpdate(String sql)只能執(zhí)行SQL更新語句
45、以下Java代碼的運(yùn)行結(jié)果為(B)
publicclassMain{
publicstaticvoidmain(String[]args){
List<String>dogs=newArrayList<String>();
dogs.add("dog1");
dogs.add("dog2");
dogs.add("dog3");
dogs.add("dog2");
for(String dog:dogs){
System.out.println(dog);
}
}
}
a)輸出:dog1 dog2 dog3
b)輸出:dog1 dog2 dog3 dog2
c)編譯錯(cuò)誤
d)正常運(yùn)行,但是什么也不輸出
46、在Java中,一個(gè)典型的DAO模式不包括(B)
a)DAO接口
b)DAO控制類
c)DAO實(shí)現(xiàn)類
d)數(shù)據(jù)庫連接和關(guān)閉工具類
47、在以下選項(xiàng)中能夠返回?cái)?shù)值21的是(B)
a)Math.ceil(21.5)
b)Math.floor(21.5)
c)Math.round(21.5)
d)Math.random(21)
48、在Java中,多態(tài)的實(shí)現(xiàn)不僅能減少編碼的量,還能大大提高程序的可維護(hù)性及可擴(kuò)展性,那么實(shí)現(xiàn)多態(tài)的步驟包括以下幾個(gè)方法除了(B)
a)子類重寫父類的方法
b)子類重載同一個(gè)方法
c)定義方法時(shí),把父類類型作為參數(shù)類型,調(diào)用方法時(shí),把父類或子類的對(duì)象作業(yè)參數(shù)傳入方法
d)運(yùn)行時(shí),根據(jù)實(shí)際創(chuàng)建的對(duì)象類型動(dòng)態(tài)決定使用哪個(gè)方法
49、編譯運(yùn)行如下Java代碼,輸出結(jié)果是(B)
publicclassBase{
publicBase(){
System.out.print("Base Constructor");
}
publicvoidmethod(){
}
}
publicclassChild extends Base{
publicChild(){
System.out.println("Child Constructor");
}
publicvoidmethod(){
System.out.print("Child method");
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
Base base=newChild();
base.method();
}
}
a)Child Constructor
Child method
b)Base ConstructorChild Constructor
Child method
c)Base Constructor
Child method
c)出現(xiàn)編譯錯(cuò)誤
50、在Java中,以下程序的運(yùn)行結(jié)果是(C)
publicclassTest{
publicstaticvoidmain(String[]args){
Map<String,Integer>map=newHashMap<String,Integer>();
map.put("1",23);
map.put("2",65);
map.put("2",69);
map.put("3",14);
Set<String>key=map.keySet();
for(String k:key){
System.out.println(map.get(k));
}
}
}
a)編譯時(shí)錯(cuò)誤
b)運(yùn)行時(shí)錯(cuò)誤
c)輸出:
14
69
23
d)輸出:
14
69
23
65