Java程序设计第六章 static、final和常量设计选择题及答案_第1页
Java程序设计第六章 static、final和常量设计选择题及答案_第2页
Java程序设计第六章 static、final和常量设计选择题及答案_第3页
Java程序设计第六章 static、final和常量设计选择题及答案_第4页
Java程序设计第六章 static、final和常量设计选择题及答案_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、单选题1、​有如下类定义:​public class ClassAndVariables{​    public static int x = 8;​    public int y = 9; ​}​​执行如下代码:​ClassAndVariables a = new ClassAndVariables();​ClassAndVariables b = new ClassAndVariables();​​a.y = 5;​b.y = 6;​a.x = 1;​b.x = 2;​​则a.y, b.y, a.x, b.x的值分别为:A.5,6,1,2B.6,6,1,2C.5,6,2,2D.6,6,2,2正确答案:C2、​请阅读以下程序,并写出结果​publicclassArgumentPassing{​publicstaticvoidchangeValue(inta){​a=10;​}​publicstaticvoidchangeValue(Strings1){​s1="def";​}​publicstaticvoidchangeValue(StringBuffers1){​s1.append("def");​}​publicstaticvoidmain(String[]args){​inta=5;​Stringb="abc";​StringBufferc=newStringBuffer("abc");​changeValue(a);​changeValue(b);​changeValue(c);​System.out.print(a);​System.out.print(b);​System.out.print(c);​}​}A.5abcabcB.10abcabcC.10defdefD.5abcabcdef正确答案:D3、‌下列关于构造方法的叙述中,错误的是A.Java语言规定构造方法名与类名必须相同B.Java语言规定构造方法没有返回值,但不用void声明C.Java语言规定构造方法不可以重载D.Java语言规定构造方法只能通过new自动调用正确答案:C4、​关于以下程序段,正确的说法是()。​Strings1="abc"+"def";//1​Strings2=newString(s1);//2​if(s1==s2)//3​System.out.println("==succeeded");//4​if(s1.equals(s2))//5​System.out.println(".equals()succeeded");//6A.行4与行6都将执行B.行4执行,行6不执行C.行6执行,行4不执行D.行4、行6都不执行正确答案:C5、‎请阅读以下程序,并写成结果。‎classFather‎{‎publicvoidhello()‎{‎System.out.println("Fathersayshello.");‎}‎}‎publicclassChildextendsFather‎{‎publicvoidhello()‎{‎System.out.println("Childsayshello");‎}‎publicstaticvoidmain(String[]a)‎{‎Childfoo=newChild();‎//foo.hello();‎Fatherfoo2=(Father)foo;‎//foo2.hello();‎Childfoo3=(Child)foo2;‎//foo3.hello();‎System.out.println(foo==foo2);‎System.out.println(foo==foo3);‎}‎}A.truetrueB.truefalseC.falsetrueD.falsefalse正确答案:A6、‍运行如下程序,输出结果是()。‍StringBuffersb=newStringBuffer("goodmorning!");‍Stringsub=sb.substring(0,8);‍System.out.println(sub);‍System.out.print("/");‍charc=sb.charAt(6);‍System.out.println(c);A.goodmor/oB.goodmorn/oC.goodmorn/mD.goodmor/o正确答案:A7、‌如下所示的Test类的Java程序中,共有几个构造方法()。‌publicclassTest{‌ privateintx;‌ publicTest(){}‌ publicvoidTest(inti){‌ this.x=i;‌ }‌ publicTest(Stringstr){}‌}A.0B.1C.2D.3正确答案:C8、‍下面代码的运行结果为:()‍publicclassFoo{‍staticStrings;‍publicstaticvoidmain(String[]args){‍System.out.println("s="+s);‍}‍}​A.代码得到编译,并输出“s=”B.代码得到编译,并输出“s=null”C.由于Strings没有初始化,代码不能编译通过D.代码得到编译,但捕获到NullPointException异常正确答案:B9、‏已知如下代码:()‏publicclassTest‏{‏publicstaticvoidmain(Stringarg[])‏{‏inti=5;‏do{‏System.out.print(i);‏}while(-i>5);‎‏System.out.print("finished");‏}‎‏}‎‏执行后的输出是什么?A.5finishedB.4C.6D.finished正确答案:A10、‎Given:abstractclassBar{ publicintgetNum(){ return38; }}​‎publicabstractclassAbstractTest{‎ publicintgetNum(){‎ return45;‎ }​‎ publicstaticvoidmain(String[]args){‎ AbstractTestt=newAbstractTest(){‎ publicintgetNum(){‎ return22;‎ }‎ };‎ Barf=newBar(){‎ publicintgetNum(){‎ return57;‎ }‎ };​‎ System.out.println(f.getNum()+""+t.getNum());‎ } ‎}​‎Whatistheresult?​A.5722B.4538C.4557D.Anexceptionoccurs正确答案:A11、​publicclassChildextendsPeople{​Peoplefather;​publicChild(Stringname){​System.out.print(3);​=name;​father=newPeople(name+":F");​}​publicChild(){​System.out.print(4);​}​publicstaticvoidmain(String[]args){​newChild("Alice");​}​}​​classPeople{​Stringname;​publicPeople(){​System.out.print(1);​}​publicPeople(Stringname){​System.out.print(2);​=name;​}​}A.32B.132C.123D.1234正确答案:B12、‏现有:‏classGuy{‏Stringgreet(){‏return"hi";‏}}‏classCowboyextendsGuy{‏Stringgreet(){‏return"howdy";‏}}‏‏classWranglerextendsCowboy{‏Stringgreet(){‏‏return"ouch!";‏}‏}‏‏classGreetings2{‏publicstaticvoidmain(String[]args){‏Guyg=newWrangler();‏Guyg2=newCowboy();‏Wranglerw2=newWrangler();‏‏System.out.print(g.greet()+g2.greet()+w2.greet());‏}‏}‏‏结果是什么?‏A.hihiouch!B.ouch!howdyouch!C.hihowdyouch!D.编译失败正确答案:B13、​现有:​classTree{​ privatestaticStringtree="tree";​ StringgetTree(){​ returntree;​ }​}‎​publicclassElmextendsTree{​ privatestaticStringtree="elm";​ publicstaticvoidmain(String[]args){​ newElm().go(newTree());​ }‎​ voidgo(Treet){​ Strings=t.getTree()+Elm.tree+tree+(newElm().getTree());​ System.out.println(s);​ }​}‎A.elmelmelmelmB.treeelmelmelmC.treeelmelmtreeD.treeelmtreeelm正确答案:C14、‌接口是Java面向对象的实现机制之一,以下说法正确的是:()A.Java支持多重继承,一个类可以实现多个接口B.Java只支持单重继承,一个类可以实现多个接口C.Java只支持单重继承,一个类只可以实现一个接口D.Java支持多重继承,但一个类只可以实现一个接口正确答案:B15、​如果想要一个类不能被任何类继承的话,需要使用哪个关键字来修饰该类?A.abstractB.newC.staticD.final正确答案:D16、​classPerson{​privateinta;​publicintchange(intm){returnm;}​}​publicclassTeacherextendsPerson{​publicintb;​publicstaticvoidmain(Stringarg[]){​Personp=newPerson();​Teachert=newTeacher();​inti;​//pointx​}​}​Whicharesyntacticallyvalidstatementat//pointx?A.i=m;B.i=b;C.i=p.a;D.i=p.change(30);正确答案:D17、‏请问以下代码的输出是什么:‏classA{‏ publicstaticintx=10;‏ publicstaticvoidprintX(){‏ System.out.print(x);‏ }‏}‏publicclassElmextendsA{‏ publicintx=20;‏ publicstaticvoidmain(String[]args){‏ Aa=newElm();‏ printX();‏ System.out.print("和");‏ System.out.print(a.x);‏ }‏}A.10和20B.20和10C.10和10D.20和20正确答案:C18、​类Teacher和Student是类Person的子类;​Teachert;​Students;​//tandsareallnon-null.​​if(tinstanceofPerson){s=(Student)t;}​​最后一条语句的结果是:​A.将构造一个Student对象;B.表达式是合法的;C.表达式是错误的;D.编译时正确,但运行时错误。正确答案:C19、​下述代码的执行结果是​classSuper{​ publicintgetLength(){​ return4;​ }​}​​publicclassChildextendsSuper{​ publiclonggetLength(){​ return5;​ }​​ publicstaticvoidmain(String[]args){​ Supersooper=newSuper();​ Supersub=newChild();​ System.out.print(sooper.getLength()+","+sub.getLength());​ }​​}A.2B.4C.编译失败D.6正确答案:C20、‎下列关于interface的说法正确的是:A.interface中可以有private方法B.interface中可以有final方法C.interface中可以有function实现D.interface可以继承其他interface正确答案:D21、‌下面关于变量及其范围的陈述哪些是错误的A.实例变量是类的成员变量B.实例变量用关键字static声明C.在方法中定义的局部变量在该方法被执行时创建D.局部变量在使用前必须被初始化正确答案:B解析:静态成员变量通常也叫做类变量,因为它不从属于任何对象。非静态的成员变量,也叫做实例变量,是从属于某一个具体的对象。所以A是正确的(更严格的表述:实例变量是类的成员变量的一种)。实例变量不能用static,类变量采用static。方法中的临时变量是没有初始化的,在使用之前必须初始化。而类成员变量默认是有初始值的。普通基本变量可以参看第三章第二节《基本类型》视频。对象成员变量默认值是null.22、‎下列说法错误的是A.声明为static的方法可以被重写B.声明为static的方法不可以调用非static变量C.声明为final的方法可以被重写D.声明为final的类不可以被继承正确答案:C解析:声明为final的方法是不能被重写的,只能在参数列表上做修改,形成重载,而非重写。23、‎以下代码‎classFinalTest{‎intnum=1;‎publicstaticvoidmain(String[]args){‎finalFinalTestft=newFinalTest();//1‎ft.num=100;//2‎//3‎System.out.println(ft.num);//4‎}‎}​A.编译通过,但在//3处加上ft.num++;后编译报错B.编译通过,但在//3处加上ft=newFinalTest();;后编译报错C.编译不通过,去除//1中的final后编译通过D.编译不通过,删除//2整行后编译通过正确答案:B解析:ft对象被final了,其内在的值可以被修改,但是ft不能指向新的对象或者内存空间。24、​下列代码执行结果是​classNumTest{​staticintid=1;​intid2=1;​NumTest(intid,intid2){​this.id=id;​this.id2=id2;​}‎​voidprintId(){​System.out.print(id+id2+"");​}‎​publicstaticvoidmain(String[]args){​NumTesta=newNumTest(1,2);​NumTestb=newNumTest(2,1);​NumTestc=newNumTest(0,0);​a.printId();​b.printId();​c.printId();​}​}‎A.330B.120C.210D.编译报错正确答案:C解析:NumTest.id是一个静态变量,所有的NumTest对象都共享同一个。所以在c对象创建完成后,NumTest.id为0.而每个对象的id2是对立的。所以在每个对象的printId方法上,将0和id2相加再输出。25、‏以下代码‏classFinalTest{‏finalintnum=1;‏publicstaticvoidmain(String[]args){‏finalFinalTestft=newFinalTest();//1‏ft.num=100;//2‏//3‏System.out.println(ft.num);//4‏}‏}‏A.编译通过,但在//3处加上ft.num++;后编译报错B.编译通过,但在//3处加上ft=newFinalTest();后编译报错C.编译不通过,去除//1的final后编译通过D.编译不通过,删除//2整行后编译通过正确答案:D解析:因为num是基本类型的变量,且被final了,所以不能修改其值,因此选D。26、‏classNumTest{‏finalintid=1;‏intid2=1;‏‏NumTest(intid,intid2){‏this.id=id;‏this.id2=id2;‏}‏‏voidprintId(){‏System.out.print(id+id2+"");‏}‏‏publicstaticvoidmain(String[]args){‏NumTesta=newNumTest(1,2);‏NumTestb=newNumTest(2,1);‏NumTestc=newNumTest(0,0);‏a.printId();‏b.printId();‏c.printId();‏}‏}A.330B.120C.210D.编译报错正确答案:D解析:因为id是final的基本类型的变量,不能修改其值,所以在构造函数内赋值就会编译错误。27、‏下列代码执行结果是‏classNumTest{‏finalstaticintnum1=1;‏staticintnum2=1;‏voidprintNum1(){‏System.out.print(num1+"");‏}‏‏voidprintNum2(){‏System.out.print(num2+"");‏}‏‏publicstaticvoidmain(String[]args){‏NumTesta=newNumTest();‏a.num2++;‏a.printNum1();‏NumTestb=newNumTest();‏b.printNum2();‏}‏}A.11B.12C.22D.编译报错正确答案:B解析:num1和num2都是static,num1而且是final,无法修改值,所以num1一直保持是1.a.num2和b.num2是同一个,a.num2++,导致num2变成2,因此b.num2也是2了。28、‎下列代码执行结果是‎classNumTest{‎finalstaticintnum1=1;‎staticintnum2=1;‎voidprintNum1(){‎System.out.print(num1+"");‎}​‎voidprintNum2(){‎System.out.print(num2+"");‎}​‎publicstaticvoidmain(String[]args){‎NumTesta=newNumTest();‎a.num1++;‎a.printNum2();‎NumTestb=newNumTest();‎b.printNum1();‎ }‎}​A.21B.12C.11D.编译报错正确答案:D解析:因为num1是final的,所以无法执行a.num1++操作。29、‌以下代码执行结果是‌classStaticTest{‌static{‌System.out.print("a");‌}‎‌static{‌System.out.print("b");‌}‎‎‌publicstaticvoidmain(String[]args){‌StaticTestst1=newChildTest();‌}‌}‎‌classChildTestextendsStaticTest{‌static{‌

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论