1609第一次月考详细解析.docx
- 文档编号:10696295
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:33
- 大小:130.75KB
1609第一次月考详细解析.docx
《1609第一次月考详细解析.docx》由会员分享,可在线阅读,更多相关《1609第一次月考详细解析.docx(33页珍藏版)》请在冰豆网上搜索。
1609第一次月考详细解析
1.(单选题)下列数组声明语句中,错误的是:
()。
A.int[]arr=newint[]{};
B.int[]arr=newint[];//缺少数组长度
C.int[]arr={};
D.int[][]arr=newint[2][];
正确答案:
B
2.(单选)classCard{}下列不属于Card类构造方法的是:
()
A.Card(){}
B.publicCard(){}
C.publicvoidCard(){}//构造方法没有返回值,但也不能写void
D.privateCard(){}
正确答案:
C
3.(单选)下面不属于Java语言特点的是:
A.平台无关
B.面向对象
C.支持指针类型//不是java的特点,是c语言的
D.垃圾回收机制
正确答案:
C
4.(单选)下列选项中的类,能正确实现java.lang.Runnable接口和java.lang.Clonable接口的是()。
A.publicclassSessionimplementsRunnable,Clonable{
publicvoidrun();//实现接口,要重写接口的抽象方法
publicObjectclone();}
B.publicclassSessionimplementsRunnable,implementsClonable{//写一个implements即可
publicvoidrun(){/dosomething*/}
publicObjectclone(){/makeacopy*/}}
C.publicclassSessionimplementsRunnable,Clonable{
publicvoidrun(){/dosomething*/}
publicObjectclone(){/*makeacopy*/}}
D.publicclassSessionextendsRunnable,Clonable{
//接口不是用来继承的
publicvoidrun();
publicObjectclone();}
正确答案:
C
5.(单选)下列属于不合法Java标识符的是()。
//java标识符命名规范:
字母、数字、$、_(下划线),不可用数字开头,不能是java的关键字
A._mem
B.12a//不能以数字开头
C.M12
D.$12
正确答案:
B
6.(单选)下列Java标识符,错误的是()
A._sys_varl
B.$change
C.User_name
D.1_file//不能以数字开头
正确答案:
D
7.(单选)Java程序的执行过程中用到一套JDK工具,其中javac.exe是指()。
A.Java语言编译器
B.Java字节码解释器
C.Java文档生成器
D.Java类分解器
正确答案:
A
8.(单选)运行下列代码:
int[]oneArr={2,11,26,27,37,44,48,60};
int[]twoArr={19,35,49,55,58,75,83,84,91,93};
int[]threeArr=newint[oneArr.length+twoArr.length];
intp=0,q=0;
while(p threeArr[p+q]=oneArr[p] oneArr[p++]: twoArr[q++]; } if(p System.arraycopy(oneArr,p,threeArr,p+q,oneArr.length-p); }elseif(q System.arraycopy(twoArr,q,threeArr,p+q,twoArr.length-q); } System.out.println(Arrays.toString(threeArr));输出的结果是: ()。 A.[2,11,26,27,37,44,48,60,19,35,49,55,58,75,83,84,91,93]; B.[2,11,19,26,27,35,37,44,48,49,55,58,60,75,83,84,91,93]; C.[19,35,49,55,58,75,83,84,91,93,2,11,26,27,37,44,48,60]; D.[2,19,11,35,26,49,27,55,37,58,44,75,48,83,60,84,91,93]; 正确答案: B //代码太多了,自己在eclipse运行一下,用debug调试一下,每次数组的变化,其实就是将两个数组按从小到大的顺序合并 9.(单选)A类中有一个方法: protectedintprint(Stringstr){}, B类继承A类,以下方法能在B类中重写A类中print()方法的是: ()。 //考大家重写: 重写原则: 两同两小一大 重写要求子类中的返回值类型小于或者等于父类型,有一个特殊情况,如果父类的返回值类型是基本类型或者是void的,子类必须与父类保持一致 A.publicintprint(Stringstr){} B.privateintprint(Stringstr){} C.privatevoidprint(Stringstr){} D.publicvoidprint(Stringstr){} 正确答案: A 10.(单选)下列代码的输出结果是()。 boolean b=true? false: true==true? false: true; System.out.println(b); //三目运算符结构: boolean表达式? 表达式1: 表达式2 true? false: true==true? false: true; 选择表达式1: false A.true B.false C.null D.空字符串 正确答案: B 11.(单选)下列赋值语句中,正确的是()。 A.byteb1=10,b2=20;byteb=b1+b2; //需要强转,byteb=(byte)(b1+b2) B.byteb1=10,b2=20;byteb=~b1; //需要强转,byteb=(byte)(~b1); C.byteb1=10,b2=20;byteb=b1>>1; //需要强转byteb=(byte)(b1>>1); D.byteb1=10;byteb=++b1; 正确答案: D 12.(单选)类Super及Sub定义如下: publicclassSuper{ privatevoidf(){ System.out.println("Super.f()");} publicvoidg(){ f();} publicvoidk(){f(); }} publicclassSubextendsSuper{ privatevoidf(){ System.out.println("Sub.f()");} publicvoidk(){f();}} 运行下列语句: Superobj=newSub(); //创建了一个obj的引用变量指向Sub对象,类型为Super obj.g(); //能点出来什么看类型,所以这时调的g方法应该是访问Super的g()方法,g方法里调f()方法,父类的f()方法为private为不可重写。 虽然子类中看上去重写了,其实是两个无关f()方法,只是方法名而已。 在多态调用的时候,只会直接找父类的f()方法. 所以调用f()方法时,实际是调用父类的private。 输出: Super.f() obj.k(); //调k()方法,子类重写后的版本,它为一个公共方法,该公共方法再调用本类的私有方法.输出: Sub.f() 输出的结果是: ()。 A.Sub.f()Sub.f() B.Sub.f()Super.f() C.Super.f()Sub.f() D.Super.f()Super.f() 正确答案: C 13. (单选)关于下列代码说法正确的是: classClassA{ publicintnumberOfinstances; protectedClassA(intnumberOfinstances){ this.numberOfinstances=numberOfinstances;}} publicclassExtendedAextendsClassA{ privateExtendedA(intnumberOfinstances) {super(numberOfinstances);} publicstaticvoidmain(String[]args){ ExtendedAext=newExtendedA(420);//new对象,走进子类构造方法,执行代码前先调用父类的有参构造方法 System.out.print(ext.numberOfinstances);}} A.运行后,输出420 B.运行时抛出异常 C.编译错误,所有的构造器必须是public的 D.编译错误,构造器不能是private的 正确答案: A //子类(Subclass)可以继承父类(Superclass)的成员变量及成员方法。 届时,子类将具有父类的成员 注意补充: java构造方法的修饰符: public,protected,默认,private四种都可以 使用public修饰构造方法,那么所有的类都可以实例化这个类。 使用private修饰构造方法,那么所有的类都不可以实例化使用这个类。 14. (单选)关于下列代码说法正确的是: publicclassA{ privateintcounter=0; publicstaticintgetInstanceCount(){ returncounter;} publicA(){counter++;} publicstaticvoidmain(String[]args){ Aa1=newA(); Aa2=newA(); Aa3=newA(); System.out.println(A.getInstanceCount());}} A.该类编译失败 B.输出: 1 C.输出: 3 D.输出: 0 正确答案: A //在static方法中无法返回非static的变量由于static在调用时没有具体的对象,因此在static方法中不能对非static成员(对象成员)进行访问。 15.(单选)下面for语句,存在编译错误的是()。 A.for(;;){}//相当于while(true),死循环 B.for(inti=0;i<100;i++){} C.for(inti=0,j=0;;i++,j++){}//相当于while(true),死循环 D.for(inti=0;i<10){}//缺循环变量的变化 正确答案: D 16. (单选)请看下列代码: interfaceFoo{ intbar();} publicclassSprite{ publicintfubar(Foofoo){ returnfoo.bar();} publicvoidtestFoo(){ fubar(<插入代码>);}} 使类Sprite编译通过,在<插入代码>处应填入的代码是: A.Foo{publicintbar(){return1;}} B.newFoo{publicintbar(){return1;}} C.newFoo(){publicintbar(){return1;}} D.newclassFoo{publicintbar(){return1;}} 正确答案: C //接口无法实例化: fubar方法中需要传入一个Foo类型的参数,但是Foo只是一个接口,无法直接实例化对象,因此在这里我们选择了匿名内部类进行实例化 17. (单选)请看下列代码: publicclassPlant{ privateStringname; publicPlant(Stringname){ this.name=name;}//Plant中的有参的构造方法 publicStringgetName(){returnname;}} classTreeextendsPlant{ publicvoidgrowFruit(){} publicvoiddropLeaves(){}} 下列说法正确的是: A.在Tree类中添加代码: publicTree(){Plant();},编译将通过 //子类构造方法中调用父类的构造方法,写法是: super(); 不写的话系统会默认有 B.在Plant类中添加代码: publicPlant(){Tree();},编译将通过 C.在Plant类中添加代码: publicPlant(){this(”fern”);},编译将通//无参构造方法中调用有参的构造方法,可以。 格子类的时候,有类似的例子 D.在Plant类中添加代码: publicPlant(){Plant(”fern”);},编译将通过 正确答案: C 18. (单选)请看下列代码编译和运行的结果是()。 interfaceDeclareStuff{ publicstaticfinalintEASY=3; voiddoStuff(intt);} publicclassTestDeclareimplementsDeclareStuff{ publicstaticvoidmain(String[]args){ intx=5; newTestDeclare().doStuff(++x); } //调用方法,把++x(为6)传给了形参s,这时s为6 s=6+3+7 voiddoStuff(ints){//编译错误,方法缺public修饰,接口的方法默认都是由publicabstract修饰的 s+=EASY+++s;//等同于s=s+EASY+(++s) //用debug调试,非常容易看到结果的变化 System.out.println("s="+s);}} A.s=14 B.s=16 C.s=10 D.编译失败 正确答案: D//如果没有编译错误,能输出s=16 19. (单选)下列关于IDE开发环境Eclipse,说法错误的是: ()。 A.Eclipse可以通过插件(plugin)的方式扩展其功能。 B.Eclipse联盟是由IBM公司捐资组建的。 C.Eclipse使用了SWT图形界面技术。 D.Eclipse的运行不需要有JRE的支持。 正确答案: D//这题都要讲解的话,是在侮辱你的智商 20. (单选)下列代码的输出结果是: publicclassBlip{ protectedintblipvert(intx){return0;}} classVertextendsBlip{<插入代码>} 在<插入代码>处填入选项中的代码,使Vert类没有编译错误的是()。 //继承,可以对方法进行重写,两同两小一大原则: A.publicintblipvert(intx){return0;} B.privateintblipvert(intx){return0;}//权限要比父类大或相等 C.privatevoidblipvert(intx){return0;}//权限和返回类型都错了 D.protectedlongblipvert(intx){return0;}//如果返回值是基本类型要保持一致 正确答案: A 21. (单选)下列表达式中,可以得到精确结果的是()。 A.doubled1=3.0-2.6; B.doubled4=2.5*1.5; C.doubled2=30/300; D.doubled3=1/2+0.5;//1/2是取整,为0,没法得到0.5 正确答案: B 22. (单选)下列代码的输出结果是()。 publicstaticvoidmain(String[]args){ int[]one=newint[]{4,6,8}; int[]two=newint[]{1,3,5,7,9}; System.arraycopy(one,1,two,2,2); System.out.println(Arrays.toString(two));} A.[1,3,7,4,6] B.[1,3,5,7,8] C.[1,3,5,6,9] D.[1,3,6,8,9] 正确答案: D src: 源数组 srcPos: 源数组中的起始位置 dest: 目标数组 destPos: 目标数组中的起始位置 length: 要复制的数组元素的数量 arraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength) 23. (单选)下列数组声明语句中,错误的是: ()。 A.int[]arr=newint[8]; B.int[]arr=newint[8]{}; C.int[]arr={}; D.int[]arr=newint[]{}; 正确答案: B 24. (单选)下列代码编译和运行的结果是: publicstaticvoidmain(String[]args){ String[]elements={"for","tea","too"}; Stringfirst=(elements.length>0)? elements[0]: null; true System.out.println(first);} A.编译出错 B.输出: tea C.输出: for D.输出: null 正确答案: C 25.(单选)运行下面的程序: inta=100;intb=200; a=a+b;//a=100+200=300; b=a-b;//b=300-200=100; a=a-b;//a=300–100=200; System.out.println("a="+a+",b="+b); 输出的结果是: ()。 A.a=100,b=300 B.a=100,b=200 C.a=200,b=100 D.a=300,b=200 正确答案: C 26.(单选)下列关于JVM说法,错误的是()。 A.JVM通过专门的线程实现内存的回收。 B.使用java命令时,可以通过参数来设置分配JVM的内存大小。 C.JRE包括JVM及Java核心类库。 D.目前主流版本JVM通过纯解释的方式运行Java字节码。 正确答案: D JVM先通过javac进行编译,再将编译后的字节码文件通过java指令进行解释运行,如果纯解释的话根本无法识别源码 27.(单选)请看下列代码: interfaceData{ publicvoidload();} abstractclassInfo{ publicabstractvoidload();} 下列选项中,能正确使用Data接口和Info类的是()。 A.publicclassEmployeeextendsInfoimplementsData{publicvoidload(){/*dosomething*/}} B.publicclassEmployeeimplementsInfoextendsData{publicvoidload(){/*dosomething*/}}//要先继承后实现 C.publicclassEmployeeimplementsInfoextendsData{publicvoidData.load(){/*dsomething*/}publicvoidload(){/*dosomething*/}} D.publicclassEmployeeextendsInfoimplementsData{publicvoidload(){/*dosomething*/}publicvoidInfo.load(){/*dosomething*/}} 正确答案: A 先继承后实现,排除BC,D中Info.load()错误,静态方法才可以通过类名点方法 注意: 接口中的load和Info中的load的签名完全一致,同时没有父子继承关系,所以load方法既不构成重载,也不构成重写。 28.(单选)类A,B的定义如下: classA{ privateinta=100; A(){ System.out.print("A()"); System.out.println(a);}} classBextendsA{ privateinta=200; B(){ System.out.print("B()"); System.out.println(a);}} 运行下面的代码: newB(); 实例化B类对象,程序调用B类无参构造器,执行代码前先隐式调用父类无参构造 输出的结果是: ()。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1609 第一次 月考 详细 解析
![提示](https://static.bdocx.com/images/bang_tan.gif)