
java试题
-
2023年2月18日发(作者:)仅供个人学习参考
JAVA语言程序设计考试试题及部分答案
一、单选题:(每题1分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,
请将正确选项的标记写在题干后的括号内。
1.下列语句序列执行后,k的值是(B)。
intm=3,n=6,k=0;
while((m++)<(--n))++k;
A)0B)1C)2D)3
2.设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是(B)。
A)i=i+2B)a[0]=7;
C)i++---j;D)a(0)=66;
3.Java语言的类间的继承关系是(B)。
A)多重的B)单重的C)线程的D)不能继承
4.设有定义inti=6;,则执行以下语句后,i的值为(C)。
i+=i-1;
A)10B)121C)11D)100
5.下列选项中,用于在定义子类时声明父类名的关键字是(C)。
A)interfaceB)packageC)extendsD)class
6.若已定义byte[]x={11,22,33,-66};
其中0≤k≤3,则对x数组元素错误的引用是(C)。
A)x[5-3]B)x[k]C)x[k+5]D)x[0]
7.下列语句序列执行后,ch1的值是(B)。
charch1=\'A\',ch2=\'W\';
if(ch1+2 A)\'A\'B)\'B\'C)\'C\'D)B 8.下列语句序列执行后,i的值是(D)。 inti=8,j=16; if(i-1>j)i--;elsej--; A)15B)16C)7D)8 9.下列语句序列执行后,k的值是(C)。 仅供个人学习参考 inti=10,j=18,k=30; switch(j-i) {case8:k++; case9:k+=2; case10:k+=3; default:k/=j; } A)31B)32C)2D)33 10.下面语句执行后,i的值是(B)。 for(inti=0,j=1;j<5;j+=3)i=i+j; A)4B)5C)6D)7 11.设有定义floatx=3.5f,y=4.6f,z=5.7f;则以下的表达式中,值为true的是(B)。 A)x>y||x>zB)x!=y C)z>(y+x)D)x 12.下列语句序列执行后,i的值是(D)。 inti=16; do{i/=2;}while(i>3); A)16B)8C)4D)2 13.以下由for语句构成的循环执行的次数是(B)。 for(inti=0;true;i++); A)有语法错,不能执行B)无限次 C)执行1次D)一次也不执行 14.定义类头时能使用的修饰符是(C)。 A)privateB)staticC)abstractD)protected 15.设int型变量a、b,float型变量x、y,char型变量ch均已正确定义并赋值, 正确的switch语句是D)。 A)switch(x+y)B)switch(ch+1) {......}{......} C)switchchD)switch(a+b); {......}{......} 16.下列最终属性i的定义中,正确的是()。 仅供个人学习参考 A)staticfinalinti=100;B)finalinti=1.2; C)finali=\'w\';D)finalchari; 17.下列类定义中,不正确的是(C)。 A)classx{....} B)classxextendsy{....} C)staticclassximplementsy1,y2{....} D)publicclassxextendsApplet{....} 18.设x、y为已定义的类名,下列声明x类的对象x1的语句中正确的是()。 A)staticxx1;B)publicxx1=newx(int123); C)yx1;D)xx1=x(); 19.设i、j、k为类x中定义的int型变量名,下列类x的构造函数中不正确的是(B)。 A)x(intm){...}B)voidx(intm){...} C)x(intm,intn){...}D)x(inth,intm,intn){...} 20.下列方法定义中,正确的是(A)。 A)intx(){charch=\'a\';return(int)ch;} B)voidx(){...returntrue;} C)intx(){...returntrue;} D)intx(inta,b){returna+b;} 21.用于定义类成员的访问控制权的一组关键字是(D)。 A)class,float,double,public B)float,boolean,int,long C)char,extends,float,double D)public,private,protected 22.不能构成循环的语句是(C)。 A)for语句B)while语句C)switch语句D)do__while语句 23.下列程序段执行后b3的结果是(D)。 booleanb1=true,b2,b3; 24=b1?b1:b2; A)0B)1C)trueD)false 25下面数据结构中,属于非线性的是(B)。 A)线性表B)树C)队列D)堆栈 仅供个人学习参考 11.设有定义inti=123;longj=456;下面赋值不正确的语句是(D)。 A)j=i;B)j=(long)i;C)i=(int)j;D)i=j; 二、填空题:(每空1分) 1.构造函数_没__有返回值。 语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float和 ___double_______两种具体类型。 3.创建类对象的运算符是__new。 4.当整型变量n的值不能被13除尽时,其值为false的Java语言表达式是__n%13==0___________。 5.在Java语言中,所有的数组都有一个lenght属性,这个属性存储了该数组的__元素个数。 6.定义类就是定义一种抽象的______父类______,它是所有具有一定共性的对象的抽象描述。 7.在Java语言中,使用__平台无关___、___java虚拟机___等技术,实现软件重用。 8.表达式3/6*5的计算结果是____0____。 9.下面是一个类的定义: publicclass_intMyclass___________ { intx,y; Myclass(inti,___=0____)//构造函数 { x=i; y=j; } } 10.下面是一个JavaApplication的主类的定义,其功能是输出所有命令行参数。 .*; publicclassMyClass { publicstaticvoidmain(Stringargs[]) { if(!=_0__) for(inti=0;i<;i++) n(_\"i=\"+i__________); 仅供个人学习参考 else } } 11下面是一个小程序的主类myprogram的定义,其中A、B是该主类所在源程序中已定义的另两个 类的类名: importjavaawt.*; importjavaapplet.*; publicclassmyprogramextendsApplet//定义小程序的主类 { Aa;Bb; public_____myprogram___init() {a=newA();b=___new__B();} } 的复合数据类型有:类、数组和___接口____等。Java的简单数据类型有:数值类型(整形 和浮点类型),自负类型和布尔类型 13.表达式3/6*5的计算结果是_0_______。 14.定义初值为10的10次方的长整型变量lvar的语句是: _______longlvar=1*e10___________________。 15.顺序结构、分支结构(或称选择结构)、__循环结构__________是结构化程序设计的三种基本流 程控制结构。 16.以下方法m的功能是求两参数之积的整数部分。 intm(floatx,floaty) {_______k=(int)x*y___________;} 源程序文件编译后产生的文件称为____字节码____文件,其扩展名为___.class_______。 18.Java和c++都是面向对象的程序设计语言。 三、程序分析:(每题4分) 1.下面是一个排序的程序: .*; publicclassTest56_Sort { publicstaticvoidmain(Stringargs[]) 仅供个人学习参考 { int[]a={42,99,5,63,95,36,2,69,200,96}; ShowArray(a); Sort(a); ShowArray(a); } publicstaticvoidSort(int[]x) { intw; for(inti=1;i<;i++) { for(intj=0;j<-1;j++) if(x[j]>x[j+1]) {w=x[j];x[j]=x[j+1];x[j+1]=w;} /*if(i==1||i==2)ShowArray(x); if(i==2)break;*/ } } publicstaticvoidShowArray(intb[]) { for(inti=0;i<;i++) +b[i]); ); } } 问题:如果将方法Sort()中的一对注释符(/**/)去掉,程序输出的结果是什么? 排序前的数据序列: b[0]=42b[1]=99b[2]=5b[3]=63b[4]=95b[5]=36b[6]=2b[7]=69b[8]=200b[9]=96 b[0]=42b[1]=5b[2]=63b[3]=95b[4]=36b[5]=2b[6]=69b[7]=99b[8]=96b[9]=200 b[0]=5b[1]=42b[2]=63b[3]=36b[4]=2b[5]=69b[6]=95b[7]=96b[8]=99b[9]=200 排序后的数据序列: 仅供个人学习参考 b[0]=5b[1]=42b[2]=63b[3]=36b[4]=2b[5]=69b[6]=95b[7]=96b[8]=99b[9]=200 2.请写下程序的输出结果: publicclassTest52 { Stringstr1=\"Hello,Javaworld!t\"; Stringstr2=\"Hello,students!\"; publicstaticvoidmain(Stringargs[]) { (str1); } } 输出结果: 3.请写下程序的输出结果: publicclassT2_4{ publicstaticvoidmain(String[]args) { inti,j; charc=\'*\'; for(i=0;i<5;i++) { for(j=0;j<=i;j++) \"); } } } 输出结果: 4、请写下程序的输出结果: publicclassex2_2 { publicstaticvoidmain(Stringargs[]) { 仅供个人学习参考 intx,y; byteb=6; floatz=1.234f; doublew=1.23; booleanflag; x=12; y=300; flag=x>y; flag=z>w; } } 四、问答题:(每题5分,) 的接口和C++的虚类的相同和不同处。 由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属 性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何 实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属 性在默认状态下面都是publicstatic,所有方法默认情况下是public.一个类可以实现多个接口。 2.垃圾回收的优点和原理。并考虑2种回收机制。 Java语言中一个显着的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题 迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制, Java中的对象不再有\"作用域\"的概念,只有对象的引用才有\"作用域\"。垃圾回收可以有效的防止 内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不 可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实 时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃 圾回收,增量垃圾回收。 3,谈谈final,finally,finalize的区别。 Final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不 能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方 法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值, 而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 Finally-再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹 仅供个人学习参考 配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。 Finalize-方法名。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除 出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调 用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理 系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用 的。 4,数组有没有length()这个方法?String有没有length()这个方法?举例说明使用方 法? 数组没有length()这个方法,有length的属性。 String有有length()这个方法。 中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违 反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发 IndexOutOfBoundsException;访问null的对象时会引发NullPointerException.另一种情况就是 JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用 五、程序设计:(每题11分,共33分) 1、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如\"我ABC\"4,应该截为\"我AB\",输入\"我ABC汉DEF\",6,应该输出 为\"我ABC\"而不是\"我ABC+汉的半个\"。 2、编程求解:所有两位整数能被3整除的数的和,以及不能被3整除的数的各位数字之和。 3、设计一个程序求解e的值。精度达到1.0e-6, 4、请设计一个对N个数进行排序的程序 一、选择题(每道题只有一个正确答案,每小题2分,共30分)15道题 1、关于Java语言叙述错误的是:(C) A.Java语言具有跨平台性 B.Java是一种面向对象的语言 C.Java语言中的类可以多继承 D.Java的垃圾收集机制自动回收程序已不再使用的对象 2、以下叙述正确的是:(B)的确台a A.构造方法必须是public方法 B.main方法必须是public方法 仅供个人学习参考 C.Java应用程序的文件名可以是任意的 D.构造方法应该声明为void类型 3、关于Java中数据类型叙述正确的是:(B) A、整型数据在不同平台下长度不同 B.boolean类型数据只有2个值,true和false C.数组属于简单数据类型 D.Java中的指针类型和C语言的一样 4、设intx=1,floaty=2,则表达式x/y的值是:(D) ??A.0 ??B.1 ??C.2 ??D.以上都不是 5、以下语句有语法错的是:(A) ??A.intx=1;y=2;z=3 ??B.for(intx=10,y=0;x>0;x++); ??C.while(x>5); ??D.for(;;); 6、关于类和对象的叙述正确的是:(A) A.Java的类分为两大部分:系统定义的类和用户自定义的类 B.类的静态属性和全局变量的概念完全一样,只是表达形式不同 C.类的成员至少有一个属性和一个方法 D.类是对象的实例化 7、以下有关构造方法的说法,正确的是:(A) ??A.一个类的构造方法可以有多个 ??B.构造方法在类定义时被调用 ??C.构造方法只能由对象中的其它方法调用 ??D.构造方法可以和类同名,也可以和类名不同 8、以下有关类的继承的叙述中,正确的是:(D) ??A.子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性 ??B.子类只能继承父类的方法,不能继承父类的属性 ??C.子类只能继承父类的非私有属性,不能继承父类的方法 仅供个人学习参考 ??D.子类不能继承父类的私有属性 9、下列属于容器的组件有:(B) ??A.JButton ??B.JPane ??C.Canvas ??D.JTextArea 10、void的含义:(C) ??A.方法体为空 ??B.定义的方法没有形参 ??C.定义的方法没有返回值 ??D.方法的返回值不能参加算术运算 11、关于Java中异常的叙述正确的是:(D) ??A.异常是程序编写过程中代码的语法错误 ??B.异常是程序编写过程中代码的逻辑错误 ??C.异常出现后程序的运行马上中止 ??D.异常是可以捕获和处理的 12、所有的异常类皆继承哪一个类?(C) ?? ?? ?? ?? 13、下面哪个不是java语言中的关键字?(B) ??A.long ??B.sizeof ??C.instanceof ??D.const 14、为实现进程之间的通信,需要使用下列那种流才合适?(D) ??A.Datastream ??B.Filestream ??C.Bufferedstream ??D.Pipedstream 仅供个人学习参考 15、在复选框中移动鼠标,然后单击一选项,要捕获所选项必需实现哪个接口?(D) ??A.ActionListener ??B.MouseListener ??C.MouseMotionListern ??D.ItemListener 二、填空题(每空1分,共20分) 1、面向对象程序设计所具有的基本特征是:___抽象性___,_封装性___,_继承性__,_多态性__ 2、数组x定义如下 ??intx[][]=newint[3][2] ??则x..length的值为____3________, ????x[0].length的值为_____2_______。 3、Java中实现多线程一般使用两种方法,一是___继承Thread类_________,二是_____实现 Runnable方法__________ 4、Java的图形用户界面设计中,有很多布局管理器用来摆放组件的位置,一般用到的布局管理器 有(列出四种即可)__FlowLayout_____,___GridLayout_____,__BorderLayout_____, ___CardLayout_______ 5、Applet常用的方法是:__init()_、__run()__、__stop()__和destroy()。 三、阅读程序,写出程序的输出结果(每题5分,共20分) 1、classA{ privateintprivateVar; A(int_privateVar){ ??????privateVar=_privateVar; } booleanisEqualTo(AanotherA){ if(eVar==eVar) returntrue; else returnfalse; } ??} publicclassB{ 仅供个人学习参考 publicstaticvoidmain(Stringargs[]){ Aa=newA(1); Ab=newA(2); } ??} 程序的输出结果为:____false_____ ??2、classA{ ??doublef(doublex,doubley){ ??returnx*y; ??} ??} ??classBextendsA{ ??doublef(doublex,doubley){ ??returnx+y; ??} ??} ??publicclassTest{ ??publicstaticvoidmain(Stringargs[]){ ??Bobj=newB(); ??programoutputis\"+obj.f(4,6)); ??} ??} 程序的输出结果为:__Theprogramoutputis10_ 3、publicclassUnchecked{ publicstaticvoidmain(String[]args){ try{ method(); }catch(Exceptione){ }finally{ 仅供个人学习参考 } } staticvoidmethod(){ try{ wrench(); }catch(ArithmeticExceptione){ }finally{ } } staticvoidwrench(){ thrownewNullPointerException(); } } 程序的输出结果为: E A B 4、publicclassTest{ publicstaticvoidmain(String[]args){ intx; inta[]={0,0,0,0,0,0}; calculate(a,a[5]); valueofa[0]is\"+a[0]); valueisa[5]is\"+a[5]); } 仅供个人学习参考 staticintcalculate(intx[],inty){ for(inti=1;i<;i++) if(y<) x[i]=x[i-1]+1; returnx[0]; } } 程序的输出结果为: thevalueofa[0]is0 thevalueisa[5]is5 1.下面哪些是short型的取值范围[C] A.-27–27-1 B.0–216-1 C.-215–215-1 D.-231–231-1 2.下面哪些是合法的标识符[ABE] A.$persons rs C.*point E._endline 3.哪些是将一个十六进制值赋值给一个long型变量[D] mber=345L; mber=0345; mber=0345L; mber=0x345L; 4.下面的哪些程序片断可能导致错误。[BD] A. Strings=\"Gonewiththewind\"; Stringt=\"good\"; Stringk=s+t; 仅供个人学习参考 B. Strings=\"Gonewiththewind\"; Stringt; t=s[3]+\"one\"; C. Strings=\"Gonewiththewind\"; Stringstandard=rCase(); D. Strings=\"homedirectory\"; Stringt=s-\"directory\"; 5.在//pointx处的哪些声明是合法的[DE] classPerson{ privateinta; publicintchange(intm){returnm;} } publicclassTeacherextendsPerson{ publicintb; publicstaticvoidmain(Stringarg[]){ Personp=newPerson(); Teachert=newTeacher(); inti; //pointx } } A.i=m; B.i=b; C.i=p.a; D.i=(30); E.i=t.b; 6.当Frame的大小被改变时,Frame中的按钮的位置也可能被改变,请问此时使用的是什么布局管 理器[B] 仅供个人学习参考 Layout yout yout yout 7.给出下面的代码片断 1publicvoidcreate(){ 2VectormyVect; 3myVect=newVector(); 4} 下面的哪些陈述是正确的?[ADE] A.第二行的声明不会为变量myVect分配内存空间。//指的是堆空间,只是在栈中分配;这里不用较 真.自己理解就好; B.第二行的声明分配一个到Vector对象的引用的内存空间。 C.第二行语句创建一个Vector类对象。 D.第三行语句创建一个Vector类对象。 E.第三行语句为一个Vector类对象分配内存空间。 //分配栈空间,相当于指针,但是不分配\"到Vector对象的引用的空间\";选项二的意思是分配了堆 空间; 8.下面的哪些答案可以用以表示八进制值8?[A] A.010 B.0x10 C.08 D.0x8 9.哪些不是Java关键字[AB] 10.下面的哪些叙述为真。[AD] ()方法判定引用值是否指向同一对象。//不说是谁的就是默认的 仅供个人学习参考 B.==操作符判定两个分立的对象的内容和类型是否一致。 ()方法只有在两个对象的内容一致时返回true。 D.类File重写方法equals()在两个分立的对象的内容和类型一致时返回true。//当两个独立的对 象的内容和类型一致; 11.下面关于继承的哪些叙述是正确的。[AD] A.在java中只允许单一继承。 B.在java中一个类只能实现一个接口。 C.在java中一个类不能同时继承一个类和实现一个接口。 的单一继承使代码更可靠。 12.第十行的声明将调用哪些方法.[D] 1classPerson{ 2publicvoidprintValue(inti,intj){} 3publicvoidprintValue(inti){} 4} 5publicclassTeacherextendsPerson{ 6publicvoidprintValue(){} 7publicvoidprintValue(inti){} 8publicstaticvoidmain(Stringargs[]){ 9Persont=newTeacher(); alue(10); 11} 12} A.第2行的方法 B.第3行的方法 C.第6行的方法 D.第7行的方法 13.下面哪些不是java的原始数据类型[BC] n 仅供个人学习参考 14.下面的哪些关键字通常用来对对象的加锁,该标记使得对对象的访问是排他的?[B] ent onized ize ()方法的返回类型是什么?[B] n 16.给出以下关于一个使用适当的字符间距的字体的TextField的表达式 TextFieldt=newTextField(\"theyaregood\",40);//40指的是像素 哪些叙述是对的?[D] A.被显示的字符串可以使用多种字体。 B.一行中最大的字符数是40 C.显示的宽度正好是40个字符宽。 D.用户可以编辑字符。 17.关于垃圾收集的哪些叙述是对的?[B] A.程序开发者必须自己创建一个线程进行内存释放的工作。 B.垃圾收集将检查并释放不再使用的内存。 C.垃圾收集允许程序开发者明确指定并立即释放该内存。 D.垃圾收集能够在期望的时间释放被java对象使用的内存。 18.给出下面的代码 1publicclassTest{ 2intm,n; 3publicTest(){} 4publicTest(inta){m=a;} 5publicstaticvoidmain(Stringarg[]){ 6Testt1,t2; 7intj,k; 8j=0;k=0; 仅供个人学习参考 9t1=newTest(); 10t2=newTest(j,k); 11} 12} 在编译时哪行将导致一个错误?[D] A.第3行 B.第5行 C.第6行 D.第10行 的方法resume()负责恢复哪些线程的执行?[D] A.通过调用stop()方法而停止的线程。 B.通过调用sleep()方法而停止运行的线程。 C.通过调用wait()方法而停止运行的线程。 D.通过调用suspend()方法而停止运行的线程。//已经过期了 20.有关线程的哪些叙述是对的?[BD] A.一旦一个线程被创建,它就立即开始运行。 B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。 C.当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。//比它优先级高的进程抢占 了cpu,它运行的时间根据操作系统而定; D.一个线程可能因为不同的原因停止并进入就绪状态。//可运行状态 21.给出下面的不完整的方法 1 2{success=connect(); 3if(success==-1){ 4thrownewTimedOutException(); 5} 6} 已知TimedOutException不是一个RuntimeException。下面的哪些声明可以被加入第一行完成此 方法的声明[BC] voidmethod() voidmethod()throwsException 仅供个人学习参考 voidmethod()throwsTimedOutException voidmethod()throwTimedOutException throwTimedOutExceptionvoidmethod() 22.给出下面的代码 classPerson{ Stringname,department; publicvoidprintValue(){ is\"+name); Systis\"+department); } } publicclassTeacherextendsPerson{ intsalary; publicvoidprintValue(){ //完成父类代码中printValue()相同的工作 is\"+salary); } } 下面的哪些表达式可以加入printValue()方法的注释部分?[D] alue(); alue(); alue(); alue(); 23.下面的哪些赋值语句是错的?[A] =11.1; d=5.3E12; d=3.14159; d=3.14D; 24.给出下面的不完整的类代码 classPerson{ Stringname,department; 仅供个人学习参考 intage; publicPerson(Stringn){name=n;} publicPerson(Stringn,inta){name=n;age=a;} publicPerson(Stringn,Stringd,inta){ //完成Person(Stringn,inta)的逻辑 department=d; } } 下面的哪些表达式可以加到构造方法中的注释处?[C] (n,a); (Person(n,a));//构造函数的名字不能当方法名调用; (n,a); (name,age);//构造方法的参数也不能直接传实例变量名 25.下面关于变量及其范围的陈述哪些是对的?[ACD] A.实例变量是类的成员变量。 B.实例变量用关键字static声明。 C.在方法中定义的局部变量在该方法被执行时创建 D.局部变量在使用前必须被初始化。 26.给出下面的代码 publicvoidtest(){ try{ oneMethod(); 1\"); }catch(ArrayIndexOutOfBoundsExceptione){ 2\"); }catch(Exceptione){ 3\"); }finally{ } } 在oneMethod()方法运行正常的情况下将显示什么?[AD] 仅供个人学习参考 ion1 ion2 ion3 y 27.给出下面的代码 publicclassTest{ voidprintValue(intm){ do{ valueis\"+m); }while(--m>10); } publicstaticvoidmain(Stringarg[]){ inti=10; Testt=newTest(); alue(i); } } 输出将是什么?[C] A.8 B.9 C.10 D.11 28.下面的有关声明的哪些叙述是对的?[BC] A.对原始数据类型例如boolean,byte的变量的声明不会为该变量分配内存空间。 B.对原始数据类型例如boolean,byte的变量的声明将为之分配内存空间。 C.非原始数据类型例如String,Vector的变量的声明不会为该对象分配内存。 D.非原始数据类型例如String,Vector的变量的声明会为该对象分配内存。 //该对象指的是堆空间的对象;指向该对象的引用只能叫变量; 29.类的设计要求它的某个成员变量不能被外部类直接访问。应该使用下面的哪些修饰符获得需要 的访问控制?[D] 仅供个人学习参考 B.不加修饰符 ted e//面向对象编程P196页的表格,private一行有错误 30.给出下面的代码片断 1Stringstr=null; 2if((str!=null)&&(()>10)){ 3than10\"); 4} 5elseif((str!=null)&(()<5)){//空指针异常 6than5\"); 7} 8else{} 哪些行将导致错误?[C] A.第1行 B.第2行 C.第5行 D.第8行 31.下面有关java代码安全性的叙述哪些是对的?[BCD] A.字节码校验器加载查询执行需要的所有类。 B.运行时解释器执行代码。 C.在运行时,字节码被加载,验证然后在解释器里面运行。 D.类加载器通过分离本机文件系统的类和从网络导入的类增加安全性。 32.给出下面的代码 publicclassPerson{ intarr[]=newint[10];//非静态属性 publicstaticvoidmain(Stringa[]){ } } 哪些叙述是对的?[A] A.编译时出错。 B.编译时正确而运行时出错。 仅供个人学习参考 C.输出0。 D.输出null。 33.给出下面的代码 publicclassParent{ publicintaddValue(inta,intb){ ints; s=a+b; returns; } } classChildextendsParent{ } 哪些方法可以加入类Child中?[BC]//方法的覆盖 Value(inta,intb){//dosomething...} voidaddValue(){//dosomething...} intaddValue(inta){//dosomething...} intaddValue(inta,intb)throwsException{//dosomething...} 34.公有成员变量MAX_LENGTH是一个int型值,变量的值保持常数值100,定义这个变量的代码 为?[CD] intMAX_LENGTH=100; ntMAX_LENGTH=100; ublicintMAX_LENGTH=100;//修饰符的顺序可以交换 finalintMAX_LENGTH=100; 35.下面的哪些java源文件代码片断是对的?[ACD] etestpackage; publicclassTest{//dosomething...} .*; packagetestpackage; publicclassTest{//dosomething...} .*; classPerson{//dosomething...} 仅供个人学习参考 publicclassTest{//dosomething...} .*; .*; publicclassTest{//dosomething..} 36.给出下面的类 publicclassSample{ longlength; publicSample(longl){length=l;} publicstaticvoidmain(Stringarg[]){ Samples1,s2,s3; s1=newSample(21L); s2=newSample(21L); s3=s2; longm=21L; } } 哪个表达式返回true?[B] A.s1==s2; B.s2==s3; C.m==s1; (m); 37. Listl=newList(6,true);//第二个参数是false的话只能选一个 其中哪些叙述是正确的?[AC] A.在没有其它的约束的条件下该列表将有6行可见。 B.一行的最大字符数是6 C.列表将允许用户多选 D.列表只能有一项被选中 38.给出下面的代码 classParent{ Stringone,two; 仅供个人学习参考 publicParent(Stringa,Stringb){ one=a; two=b; } publicvoidprint(){} } publicclassChildextendsParent{ publicChild(Stringa,Stringb){ super(a,b); } publicvoidprint(){ +\"to\"+two); } publicstaticvoidmain(Stringargs[]){ Parentp=newParent(\"south\",\"north\"); Parentt=newChild(\"east\",\"west\"); (); (); } } 下面的哪些情况或输出的结果正确?[E] A.编译时出错 east onorth easttowest onorth east easttowest 39.类Teacher和Student都是类Person的子类 仅供个人学习参考 Personp; Teachert; Students; 若p,t和s都是非空值 if(tinstanceofPerson){s=(Student)t;} 这个语句导致的结果是什么?[C]//默认new时声明的都是本类; A.将构造一个Student对象 B.表达式合法 C.编译时非法 D.编译时合法而在运行时可能非法 40.给出下面的代码 Strings=\"hello\"; Stringt=\"hello\"; charc[]={\'h\',\'e\',\'l\',\'l\',\'o\'}; 下列选项里,哪些返回true?[ACD] (t); (c); C.s==t; (newString(\"hello\")); E.t==c; 一、单选题(本大题15小题,每小题2分,共30分) 1.下列语句执行后,变量a、c的值分别是()。 intx=182; inta,c; c=x/100; a=x%10; A)1,2B)2,1C)1.82,2D)100,82【答案】B 2.下面哪个表达式可用得到x和y的最大值()? A)x>y?y:xB)xy?(x+y):(x-y)D)x==y?y:x;【答案】B 3.以下是应用程序中定义的静态方法printBinary,若在其main方法中有方法调用语句 printBinary(2),则输 仅供个人学习参考 出的结果是()。 staticvoidprintBinary(inti){ +\"的2进制数表示为:t\"); for(intj=31;j>=0;j--) if(((1< else } A)00000001B)00000010 C)00001111D)00000000【答案】B 4.应用程序的main方法中有以下语句,则输出的结果是()。 Strings1=\"0.5\",s2=\"12\"; doublex=ouble(s1); inty=nt(s2); A)12.5B)120.5C)12D)“12.5”【答案】A 5.应用程序的main方法中有以下语句,则输出的结果是()。 doublex=1234.1234567; DecimalFormatform1=newDecimalFormat(\"0000.0\"); A)PI=1234.1B)PI=1234 C)PI=1234.1235D)PI=1234.0【答案】A 6.下列程序段执行后的结果是()。 Strings=newString(\"abcdefg\"); for(inti=0;i<();i+=2){ } A)acegB)ACEGC)abcdefgD)abcd【答案】A 7.应用程序的main方法中有以下语句,则输出的结果是()。 int[]x={122,33,55,678,-987}; intmax=x[0]; for(inti=1;i<;i++){ if(x[i]>max) max=x[i]; } 仅供个人学习参考 A)678B)122C)-987D)33【答案】A 8.下列语句序列执行后,k的值是()。 intx=2,y=5,k=0; switch(x%y){ case0:k=x+y;break; case1:k=x-y;break; case2:k=x*y;break; default:k=x/y;break; } A)2B)5C)10D)0【答案】C 9.下面的程序输出的结果是() publicclassAimplementsB{ publicstaticvoidmain(Stringargs[]){ inti; Ac1=newA(); i=c1.k; } } interfaceB{ intk=10; } A)i=0B)i=10C)程序有编译错误D)i=true 【答案】B 10.应用程序的main方法中有以下语句,则输出的结果是()。 intb[][]={{1,2,3},{4,5},{6,7}}; intsum=0; for(inti=0;i<;i++){ for(intj=0;j sum+=b[i][j]; } } 仅供个人学习参考 A)28B)6C)9D)13【答案】A 11.有整型数组:int[]x={12,35,8,7,2};,则调用方法(x)后,数组x中的元素值依次 是(). A)2781235B)1235872C)3512872D)8712 352 【答案】A 12.编译和运行下面的应用程序,并在命令行界面输入12345,则回车后屏幕输出的结果是(). publicclassA{ publicstaticvoidmain(Stringargs[])throwsIOException{ BufferedReaderbuf=newBufferedReader( newInputStreamReader()); Stringstr=ne(); intx=nt(str); } } A)45B)5C)123D)12345【答案】C 13.下面的程序段执行后输出的结果是()。 StringBufferbuf=newStringBuffer(\"Beijing2008\"); (7,\"@\"); A)Beijing@2008B)@Beijing2008C)Beijing2008@D)Beijing#2008【答案】A 14.下面的程序编译运行后输出的结果是()。 publicclassAimplementsRunnable{ publicstaticvoidmain(Stringargv[]){ Aa=newA(); Threadt=newThread(a); (); } publicvoidrun(){ while(true){ try{ tThread().sleep(1000); 仅供个人学习参考 }catch(InterruptedExceptione){ } while\"); } } } A)在屏幕上重复输出\"loopingwhile\"。B)在屏幕上输出一次\"loopingwhile\"。 C)没有结果输出。D)以上说法都错误。【答案】A 15.下面的程序段创建了BufferedReader类的对象in,以便读取本机d盘my文件夹下的文件。 File构造函 数中正确的路径和文件名的表示是()。 Filef=newFile(填代码处); file=newFileReader(f); in=newBufferedReader(file); A)\"\"B)\"d:my1\"C)\"d:\"D)\"d:\" 【答案】C 二、多选题(本大题10小题,每小题2分,共20分) 1.下面的说法正确的是()。 A)Java语言是面向对象的、解释执行的网络编程语言。B)Java语言具有可移植性,是与平台无关 的编程语 言。 C)Java语言可对内存垃圾自动收集。D)Java语言编写的程序虽然是“一次编译,到处运行”,但必 须要 java的运行环境。 【答案】ABCD 2.下面main()方法的定义哪些是正确的()? A)publicstaticvoidmain(Stringargs[]){}B)publicstaticvoidmain(String[]){} C)publicstaticvoidmain(String[]args){}D)publicstaticvoidmain(String[]x){} 【答案】ACD 3.定义变量如下: charc=\'w\';inti=8;longL=15;floatf=8.9f; 仅供个人学习参考 以下赋值语句正确的是()。 A)i=c+i;B)c=c+i;C)L=f+L;D)f=i+L+f; 【答案】AD 4.下面哪些关键字能用来控制对类成员的访问()? A)publicB)protectedC)privateD)default 【答案】ABC 5.面向对象程序设计的基本特征是()。 A)抽象B)封装C)继承D)多态【答案】ABCD 6.下面关于类的说法正确的是()。 A)类是Java语言中的一种复合数据类型。B)类中包含数据变量和方法。 C)类是对所有具有一定共性的对象的抽象。D)Java语言的类只支持单继承。【答案】ABCD 7.编译并运行下面的程序,运行结果为(). publicclassT1{ publicstaticvoidmain(String[]args){ T1a=newT1(); (8); (1.2f); } voidmethod(floati){ \"+i); } voidmethod(longi){ \"+i); } } A)程序有编译错误,因为两个method()方法必须定义为静态(static)的。 B)程序可以编译运行,输出结果为: long:8 float:1.2 C)程序可以编译运行,输出结果为: float:1.2 仅供个人学习参考 long:8 D)程序中定义的两个参数不同的method方法称为方法重栽。【答案】BD 8.下面是在命令行运行Java应用程序A,怎样才能在main(Stringargs[])方法中访问单词 \"first\"()? javaAthefirstsnow,thefirstsnowcame. A)args[0]B)args[1]C)args[2]D)args[5] 【答案】BD 9.编译并运行下面的程序,运行结果为(). publicclassA{ publicstaticvoidmain(String[]args){ Aa=newB(); (); } voidtest(){ (\"A\"); } } classBextendsA{ voidtest(){ (); } } A)子类B定义了与父类A中同名的方法test,java中称为方法的覆盖。B)代码可以编译运行,并 输出结果:AB 。 C)代码可以编译运行,并输出结果:A。D)子类B定义了与父类A中同名的方法test,java中称为 方法的重载 。 【答案】AB 10.下面哪个说法正确()? A)如果某公共的接口被声明在一个源文件中,则接口必须与源文件具有相同的名字。 仅供个人学习参考 B)如果源文件包含import语句,则该语句必须是除空行和注释行外的第一个语句行。 C)如果某源文件包含package语句,则该语句必须是第一个非空、非注释行。 D)接口中的方法必定是抽象方法,但可以不用关键字abstract修饰。【答 案】ABCD 三、填空题(本大题10小题,每小题1分,共10分) 1.创建类的对象时,使用运算符___________给对象分配内存空间。 2.定义类的构造方法不能有返回值类型,其名称与_____名相同。 语言中关键字_____表示双精度类型。 4.若有定义:floatb={1.1f,3.5f,6.8f};,则()的值是_______。 5.若有类定义: classBextendsA{ … } 则类B是类A的______。 6.接口中的成员只有静态常量和______。 7.在子类中使用关键字_______做前缀可调用被子类覆盖的父类中的方法。 8.关键字______用于导入包中的类到程序中,供程序中使用。 语言中,通常把可能发生异常的方法调用语句放到try块中,并用紧跟其后的_____块来捕 获和处理异 常。 10.程序中实现多线程的方法有两种:继承_____类和实现Runnable接口。 【答案】 2.类4.35.子类6.抽象方法 四、阅读程序,回答问题(本大题5小题,每小题5分,共25分) 1.(5分) 1:publicclassOutput1{ 2:publicstaticvoidmain(Stringarge[]){ 3:inti=0; 4:for(charch=97;ch<113;ch++,i++){ 5:if(i%8==0) 仅供个人学习参考 6:\"); 7:+ch); 8:} 9:} 10:} (1)程序第5、6行的if语句的功能是什么?(2分)(2)程序输出的结果有几行?(3分) 【答案】(1)每打印8个字符,则换行。(2)输出的结果有2行。 2.(5分) 1:import 2: 3:publicclassSortArray{ 4:publicstaticvoidmain(Stringargs[]){ 5:String[]str={\"size\",\"abs\",\"length\",\"class\"}; 6:(str); 7:for(inti=0;i<;i++) 8:\"); 9:} 10:} (1)写出程序运行后的结果。(2分) (2)方法调用str[0].length()的返回结果是多少?(3分) 【答案】(1)absclasslengthsize(2)4 3.(5分) 1:// 2:import 3:.*; 4:import 5: 6:publicclassTestKeyListenerextendsApplet{ 7: 8:Colorclr; 9: 仅供个人学习参考 10:publicvoidinit(){ 11: 12:addKeyListener( 13:newKeyAdapter(){ 14:publicvoidkeyTyped(KeyEvente){ 15:if(Char()==\'r\'||Char()==\'R\') 16:clr=; 17:elseif(Char()==\'g\'||Char()==\'G\') 18:clr=; 19:elseif(Char()==\'b\'||Char()==\'B\') 20:clr=; 21:else 22:clr=; 23:setBackground(clr); 24:} 25:}); 26:} 27:} (1)程序第15、16行实现的功能是什么?(2分) (2)编译该程序,并编写嵌入该程序字节码文件的网页后,通过支持java的浏览器打开网页。如果 敲击键盘的 ‘b’键,有什么结果?(3分) 【答案】(1)如果敲击键盘的‘r’键,则将颜色对象的值赋为红色。(2)小程序的背景颜色变为兰 色。 4.定义类A和类B如下.(5分) classA { inta=1; doubled=2.0; voidshow() { 仅供个人学习参考 A:a=\"+a+\"td=\"+d); } } classBextendsA { floata=3.0f; Stringd=\"Javaprogram.\"; voidshow() { (); B:a=\"+a+\"td=\"+d); } } (1)若在应用程序的main方法中有以下语句: Aa=newA(); (); 则输出的结果如何?(2分) (2)若在应用程序的main方法中定义类B的对象b: Ab=newB(); (); 则输出的结果如何?(3分) 【答案】 (1)ClassA:a=1d=2.0 (2)ClassA:a=1d=2.0 ClassB:a=3.0d=Javaprogram. 5.(5分) .*; publicclassW{ staticString[]s={\"甲\",\"乙\",\"丙\",\"丁\"}; publicstaticvoidmain(String[]args){ Stackstk=newStack(); 仅供个人学习参考 for(inti=0;i<;i++){ (s[i]+\"\"); } intk=0; while(k<3){ k++; } } } (1)堆栈的操作规则如何?(2分)(2)写出程序运行后的结果。(3分) 【答案】(1)先进后出(2)丁丙乙 五、根据题目要求编写程序(本大题2小题,第1小题5分,第2小题10分,共15分) 1.请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit: 分别描述一张牌 的牌面值(如:A、K、Q、J、10、9、…、3、2等)和花色(如:“黑桃”、“红桃”、“梅花”和“方 块” )。定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限 的方法 getFace(),得到扑克牌的牌面值;定义protected访问权限的方法getSuit(),得到扑克牌的花色; 定义方法 toString(),返回表示扑克牌的花色和牌面值字符串(如“红桃A”、“梅花10”等)。 【答案】1.5分 classCard{ privateStringface; privateStringsuit; publicCard(Stringf,Strings){ face=f; suit=s; } protectedStringgetSuit(){ returnsuit; 仅供个人学习参考 } protectedStringgetFace(){ returnface; } publicStringtoString(){ returnface+\"of\"+suit; } } 2.若应用程序的main方法中,定义字符串数组f和s:分别表示扑克牌的牌面值和花色;定义52 个元素的Card类 型数组deck,用来存放4个花色的52张牌。如下所示。 Stringf[]={\"A\",\"2\",\"3\", \"4\",\"5\",\"6\",\"7\",\"8\", \"9\",\"10\",\"J\",\"Q\",\"K\"}; Strings[]= {\"黑桃\",\"红桃\",\"梅花\",\"方块\"}; Carddeck=newCard[52]; (1)使用Card类的构造方法给deck数组的52张牌赋值,要求数组中先存放黑桃花色的A、2、3、…、 K;然后 是红桃花色的A、2、3、…、K;梅花花色的A、2、3、…、K;方块花色的A、2、3、…、K。请写 出实现上述功 能的程序段。 【答案】(1)5分 for(inti=0;i<;i++){ deck[i]=newCard(faces[i%13],suits[i/13]); } (2)请编写模拟洗牌的程序段,即把数组deck中的扑克牌随机打乱存放顺序。 【答案】(2)5分 for(intfirst=0;first<;first++){ intsecond=(int)(()*52); Cardtemp=deck[first]; 仅供个人学习参考 deck[first]=deck[second]; deck[second]=temp;