您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > Java程序设计A期中测试参考解答
信管13级Java语言程序设计A期中测试参考解答一.选择(共10题,每题1分或2分,共11分)1.JRE可以识别(D)文件。A).javaB).jreC).exeD).class2.如果将JDK安装到D:\Java\JDK文件夹,则应设置Path路径为(C)。A)D:\JavaB)D:\Java\JDKC)D:\Java\JDK\binD)D:\Java\JRE3.编辑好源程序MyApp.java后,在命令提示符下进行编译,正确的命令是(D)。A)javaMyAppB)javaMyApp.javaC)javacMyAppD)javacMyApp.java4.以上源程序通过编译后,在命令提示符下解释执行,正确的命令是(A)。A)javaMyAppB)javaMyApp.javaC)javacMyAppD)javacMyApp.java5.每个对象都有类的(C)的副本。A)对象B)引用C)实例变量D)方法6.main()方法的形参可以写作(BC)。A)StringargsB)String[]argsC)Stringargs[]D)String[]args[]7.在类的内部声明,但又处于该类所有方法之外的变量是(A)。A)实例变量B)局部变量C)类变量D)引用变量8.在方法内部声明的变量是(B)。A)实例变量B)局部变量C)类变量D)引用变量9.当出现(B)时,子类中定义的新方法将取代父类中的相应方法。A)继承B)覆盖C)重载D)多态10.类SavingsAccount是类BankAccount的子类,如果类SavingsAccount的构造函数中有super()语句,则该语句将调用(D)。A)类SavingsAccount的super()方法B)类BankAccount的super()方法C)类SavingsAccount的构造函数D)类BankAccount的构造函数二.简答(共4题,第1题1分,第2题1分,第3题2分,第4题5分,共9分)1.将引用变量作为实参传递给方法的形参时,传递的是引用?还是对象?解:引用2.对于一个未知数组长度的整型数组numbers,描述数组最后一个元素的表达式是什么?解:numbers[numbers.length-1]3.(1)何种情况下,你不得不将类声明为抽象类?(2)抽象类是否可实例化?解:(1)类中至少有一个抽象方法(2)不能4.类A定义有方法m1(),其子类B定义有方法m2()。(1)A类对象可访问这2个方法中的哪些方法?(2)B类对象可访问这2个方法中的哪些方法?(3)对于实际指向B类对象的类A引用变量,可访问这2个方法中的哪些方法?(4)若这2个方法都声明为private,B类对象可访问这2个方法中的哪些方法?解:(1)m1()(2)m1()与m2()(3)若无强制类型转换,只有方法m1()(4)m2()三.分析(共8题,第1题7分,第2题6分,第3题10分,第4题2分,第5题2分,第6题3分,第7题7分,第8题12分,共49分)1.以下Java程序未通过编译,请在错误处进行修改,或将改好的程序写在空白处。解答:在错误处进行修改1publicclassLotsOfErrors{2publicstaticvoidmain(String[]args){3System.out.println(IRule);4message();5}67publicstaticvoidmessage(){8System.out.println(TheWorld);}9}2.以下程序的执行结果是什么?最后变量times为什么是这个值?publicclassTest{publicstaticvoidmain(String[]args){inttimes=3;System.out.println(Beforethecall,variabletimesis+times);nPrintln(times);System.out.println(Afterthecall,variabletimesis+times);}publicstaticvoidnPrintln(intn){while(n0){System.out.println(n=+n);n--;}}}解:Beforethecall,variabletimesis3n=3n=2n=1Afterthecall,variabletimesis3Java的参数传递机制是传值,而不是传址。方法main()中调用方法nPrint(),实参times的值3传递给形参n,参数传递后,实参times的值不变。换一个角度看:times是main()方法中的局部变量,因此作用域仅限于main()方法,生命周期从调用main()方法开始,执行main()方法完毕结束。3.某类有两个同名方法add(),这两个方法的返回类型相同,那么这两个方法的形参能否相同?为什么?这两个方法的形参能否不同?为什么?若两个同名方法add()定义如下:doubleadd(intnum1,doublenum2){returnnum1+num2;}doubleadd(doublenum1,intnum2){returnnum1+num2+1;}以下A)B)C)D)四选项中,分别用不同的实参调用add()方法,其中哪些能通过编译,运行结果是什么?哪些不能通过编译?A)add(3,3.14)B)add(3.14,3)C)add(3,3)D)add(3.14,3.14)解:这两个方法的形参不能相同,因为同一类中不可能存在方法的覆盖。这两个方法的形参可以不同,因为方法可以重载。A)和B)能通过编译,运行结果分别是6.14和7.14。C)和D)不能通过编译。4.如果给定类X:classX{privateintcount;}那么类Y正确吗?为什么?classY{publicstaticvoidmain(Stringargs[]){Xob=newX();ob.count=100;}}解:不正确。类X的实例变量count是private的,无法在类X之外访问。5.以下类X正确吗?为什么?classX{intmeth(inta,intb){...}Stringmeth(inta,intb){...}}解:不正确。重载的方法必须具有不同的形参列表。6.以下程序的运行结果是什么?若将倒数第4行publicvoidp(inti){改成publicvoidp(doublei){后,程序的运行结果又是什么?为什么?publicclassTest{publicstaticvoidmain(String[]args){Aa=newA();a.p(10);}}classB{publicvoidp(inti){}}classAextendsB{publicvoidp(inti){System.out.println(i);}}解:10若将倒数第4行publicvoidp(inti){改成publicvoidp(doublei){后,方法由覆盖变成重载,程序运行结果,将什么都不显示。7.已知类的层次结构为:classAsset{...}classBankAccountextendsAsset{...}classSavingsAccountextendsBankAccount{...}(1)以下哪些语句是合法的?语句1:Assetasset=newBankAccount();语句2:Assetasset=newSavingsAccount();语句3:BankAccountaccount=newAsset();语句4:BankAccountaccount=newSavingsAccount();语句5:SavingsAccountsavingsAccount=newAsset();语句6:SavingsAccountsavingsAccount=newBankAccount();解:语句1、语句2、语句4合法。(2)创建一个SavingsAccount对象时,这些类的构造函数的调用顺序依次是什么?为什么?解:依次调用类Asset、BankAccount、SavingsAccount的构造函数。构造函数总是按派生的顺序被调用。8.以下程序的运行结果是什么?classFluteextendsBlue{publicvoidmethod2(){System.out.println(flute2);}publicStringtoString(){returnflute;}}classBlueextendsMoo{publicvoidmethod1(){System.out.println(blue1);}}classShoeextendsFlute{publicvoidmethod1(){System.out.println(shoe1);}}classMoo{publicvoidmethod1(){System.out.println(moo1);}publicvoidmethod2(){System.out.println(moo2);}publicStringtoString(){returnmoo;}}publicclassPolymorphismTest{publicstaticvoidmain(String[]args){Moo[]elements={newShoe(),newFlute(),newMoo(),newBlue()};for(inti=0;ielements.length;i++){System.out.println(elements[i]);elements[i].method1();elements[i].method2();System.out.println();}}}解:fluteShoe1flute2fluteblue1flute2moomoo1moo2mooblue1moo2四.设计(共4题,第1题7分,第2题3分,第3题5分,第4题16分,共31分)1.假设我们已经在主类的main()方法中声明了一个整型数组javaScores,用于存储某班同学的Java考试成绩。现在,请你在主类中编写一个辅助方法enterMarks(),该方法提示用户输入考试成绩,将成绩存储在一个数组中,并返回该数组。解:staticint[]enterMarks(){Scannerkeyboard=newScanner(System.in);int[]marks=newint[32];for(inti=0;imarks.length;i++){System.out.print(Entermark:);marks[i]=keyboard.nextInt();}returnmarks;}调用辅助方法enterMarks()的main()方法如下:publicstaticvoidmain(String[]args){int[]javaScores;javaScores=enterMarks();//后面的代码略}2.请分别使用两条语句和一条语句,定义一个引用BankAccount对象的引用变量myAccount。(BankAccount类已定义,但尚未创建任何BankAccount对象,使用默认构造函数)解:两条语句形式BankAccountmyAccount;myAccount=newBankAccount();一条语句形式BankAccountmyAccount=newBankAccount();3.某同学编写了一个类Employee,类中声明有一实例变量hireYear,代码片段如下:classEmployee{……publicinthireYear;……}为确保hireYear的值在2000至2016之间,请利用信息隐藏与封装,重新声明实例变量hireYear,并在类Employee中增加相应的setter/getter方法。解:privateinthireYear;publicvoidsetHireYear(inth
本文标题:Java程序设计A期中测试参考解答
链接地址:https://www.777doc.com/doc-5091474 .html