Java程序设计第四章面向对象和类选择题及答案.docx
一、单选题Is有如下代码段:publicstaticvoidbooleaTest()ita=1,b=1;if(a=bHb<0)a÷+;if(a<=2&&(!(b<0)b=b<<l;System.out.pritl(a+,j"+b);)则运行结果为:A.2,lB.2,2C.213D.l,2正确答案:B2、如下赋值语句中,有语法错误的是?A.floatfl=1.2;B.floatfl=1.2f;C.floatfl=1;D.floatfl=OxAE;正确答案:A解析:float类型赋值需要加f,不加默认为doubleo可以从整数直接转为foato3、有如下类定义:publicclassRectanglepublicintwidth=3;publicintheight=4;publicintarea()returnwidth*height;)则如下代码输出结果为:Rectanglerectangle;rectagle.height=5;System.out.pritln(rectangle.area();A.15B.有编译错误,程序不能运行C.12D.0正确答案:B解析:rectangle没有被初始化,因此报错。4、执行如下代码片段后,i和n的值分别为:inti=10;int=(i+÷)%5;All,1B.ll,0C.10,1D.10,O正确答案:B解析:i+,i会增加一,但是整个表达式返回的值是i的旧值。与之对应的是+i,i也会增加一,整个表达式返回的是i的新值。5、执行如下代码片段后,num的值为:intnum=5;num=(num%2)=0?num-1:num+1;AlB.4C.5D.6正确答案:D解析:本题考察三元运算符。a?b:c,如果a是true,返回b值,否则返回C值。6、有如下代码段:if(num>=0)if(num二二0)System.out.printl(,firststring");elseSystem.out.pritln("secodstring");System.out.pritln(',thirdstring");若num为3,则输出结果为:A.thirdstringB.secodstringthirdstringC.firststringthirdstringD.firststringsecondstringthirdstring正确答案:B写 if.else解析:每个else会和最近的if语句连接,而与排版无关。最好采用大括号。7、下列变量名称中,不属于有效JaVa变量命名的是?A.$numBJntC.6umsDJiayou正确答案:C解析:变量名字不能以数字开头。8、对于JaVaL7及之后版本,如下不能用于SWitCh的类型是:A.StrigBJntC.charD.double正确答案:D解析:因为d。UbIe是浮点数,不精确。9、如下对JaVa基本类型的描述,错误的是?A.char占1个字节BJnt占4个字节C.short占2个字节D.double占8个字节正确答案:A解析:Char是占用2个字节的。10、如下循环结构中,输出结果与其它三组不一致的一组是:A.for(inti=0;i<10;i+)System.out.pritln(i);B.inti=0;while(i<10)System.out.pritln(i+);C.iti=0;for(;i<10;)System.out.pritln(i+);D.iti=0;while(i+<10)System.out.pritln(i);正确答案:D解析:可以放在测试程序中单步调试运行。11、SWaP方法定义如下:publicstaticvoidswap(intuml,itum2)ittemp=uml;url=nur2;nur2=temp;)执行如下代码后,itml=10;intm2=5;itm3=20;swap(nml,nm2);swap(nm2,nm3);uml,um2,um3的值分别为:A.10,5,20B.5,20,10C.5,10,20D.20,5,10正确答案:A解析:形参是基本类型,是按值拷贝的,不影响实参的值。12、NUmber类定义如下:publicclassNumberpublicintx;)swap方法定义如下:publicstaticvoidswap(Numberumberl,Numberumber2)(inttemp=umberl.x;uberl.x=umber2.x;number2.x=temp;)运行如下代码:Numbernrberl=newNumber();Numbernrber2=newNurber();Numbernrber3=newNumber();numberl.x=1;unber2.x=2;nurber3.x=3;swap(numberl,mber2);swap(number2,number3);则numberl.x,umber2.x,umber3.x的值分别为:A.1,2,3B,2,3,1C.3,2,1D.1,3,2正确答案:B解析:形参是对象,是按reference赋值,实参形参指向同一个内存,会同时改变的。13、假设有boolean变量flagl,flag2,则如下表达式中哪个不能代表异或逻辑?(异或逻辑:如果a、b两个值不相同,则异或结果为trueo如果a、b两个值相同,异或结果为false。)A.flagl!=flag2B.(flagl=true&&flag2=false)(flagl=false&&flag2=true)CJfIagl=flag2D.(flagl=true&&flag2=true)(flagl=false&&flag2=false)正确答案:D解析根据异或逻辑规则,代入具体值,进行计算可以得到正确答案。注意与&&或II,非!三种运算符。14、如下关于JaVa类的说法,错误的是?A.对象是类的实例化B.可以通过对象访问类变量Cjava文件中只能包含一个类的定义D.同一类的不同对象有着相同的类变量正确答案:C解析:一个java文件可以包括多个类的定义,但是最多有一个PUbliCclass,而且文件名必须以publicclass的名字来定。15、如下赋值语句,有编译错误的是?A.byteb=-127;8.1 nti=(byte)512;C.byteb=129;D.byteb=-O;正确答案:C解析:byteb=(byte)129;需要强制转,且结果是-2.16、下列关于main方法的描述中,错误的是?A.mai方法是Java程序的入口B.mai方法格式为publicstaticvoidmai(Strigargs)/Yourcodehere)C.B选项中所描述格式中形参args不能更改,如果将args改为arguments则不能编译通过D.main方法可以被重载正确答案:C解析:形参名字可以随意更改,形参类型不可以更改,必须是String口.17、JaVa有“一次编译,到处运行”的说法,此种说法中编译的结果日TEA机器码B符号表C字节码D.中间代码正确答案:C解析:ClaSS文件,即为字节码(bytecode)文件。18、下列不属于Java基本数据类型的是?A.shortB.floatC.DoubleD.it正确答案:C解析:8种基本类型:整数系列short,int1long,浮点数系列float,double,逻辑boolean,字节byte,字符串Char。19、如下关于JDK和JRE的说法,错误的是?AJDK全称JavaDevelopmentKit,意即Java开发工具包BJRE全程JavaRuntimeEnvironment,意即Java运行环境CJRE中包含了JDKD.若只需要运行编译好的JaVa程序,则只有JRE就可以正确答案:C解析:JDK包含JRE,还包括编译部件。JRE只包含运行Java程序部件,未包含编译部件。20、在JaVa中,下面对于构造函数的描述正确的是A.类必须显式定义构造函数B.构造函数的返回类型是VOidC构造函数和类有相同的名称,并且不能带任何形参D.一个类可以定义多个构造函数正确答案:D解析:类无需显式定义构造函数。如果没有,编译器会自动增加一个无参空的构造函数。构造函数必须和类名一样,且没有返回值,无需写VOid,可以带形参。21、AssumeiandjaremembervariableswithdoubletypeinclassX.Inthefollowingcodes,whichoneisNOTRIGHTconstructor?()A.doubleX(doublek)i=k;returni;B.X(doublem,doubleXi=m;j=n;C,X()i=6j=8;D.X(doublek)i=k;正确答案:A解析:构造函数没有返回值。22、Given:classCardBoardShortstory=5;CardBoardgo(CardBoardcb)cb=null;returncb;)publicstaticvoidmai(Stringargs)CardBoardcl=newCardBoard();CardBoardc2=newCardBoard();CardBoardc3=cl.go(c2);cl=null;/doStuff)When/doStffisreached,howmanyobjectsofCardBoardarenull?A.0B.lC.20,Compilationfails.正确答案:C解析:cl,c3被设置为nllo尽管形参和实参都指向同一个对象,但是形参指针被设置为null,并不影响到实参的指针。23、Giventheuncompletedcodeofaclass:classPersonStringname,department;intage;publicPerson(Strig)name=n;publicPerson(Strig,inta)name=n;age=a;publicPerson(Strig,Stringd1inta)/doingthesameastwoargumentsversionofconstructor/includingassignmentnare=n,age=adepartment=d;)Whichexpressioncanbeaddedatthe"doingthesameas."partoftheconstructor?A.Perso(n,a);B.this(Perso(,a);C.this(nla);D.this(ame,age);正确答案:C解析:可以用this来调用同类中的构造函数。24、GiventhefollowingclassclassMyNumber(privateintnum=5;publicMyNumber(intnum)this,num=num;publicintgetNum()returnnum;publicvoidsetNur(itnum)this.num=num;)Whatisoutputaftertheexecutationoffollowingcode?MyNumberobjl=newMyNumber();MyNumberobj2=newMyNumber(IO);obj2=objl;obj2.setNm(20);System.out.pritln(objl.getNumO÷u,n+obj2.getNum();A.5,20B.5,10C.20,20D.编译错误正确答案:D解析:MyNUmber有一个带形参的构造函数,编译器不会自动添加无参的构造函数。因此在创建Objl的时候,MyNumberobjl=newMyNumberO;,找不到相应的构造函数,报错。25、Giventhefollowingclass:classMixerMixer()Mixer(Mixerm)ml=m;Mixerml;publicstaticvoidmai(Strigargs)Mixerm2=newMixerQ;Mixerm3=newMixer(m2);m3.go();Mixerm4=m3.ml;m4.go();Mixerm5=m2.ml;r5.go();)voidgo()System.out.prit("hi',);)Whatistheresult?A.CorpilatiofailsB.hihihiC.hihi,followedbyanexceptionD.hi,followedbyanexception正确答案:C解析:m3,ml本质上是m2的,因此m4是真实存在的。而m2.ml没有赋值过,所以m5是null,因此无法调用m5.go(),运行错误。