(备考2023年)河北省廊坊市全国计算机等级考试Java语言程序设计测试卷(含答案).docx
(备考2023年)河北省廊坊市全国计算机等级考试Java语言程序设计测试卷(含答案)学校:班级:姓名:考号:一、单选题(10题)1 .下列叙述中,正确的是A.线程与进程在概念上是不相关的B.一个线程可包含多个进程C.-个进程可包含多个线程DJava中的线程没有优先级2 .字符串常量"hello”的字符个数是()。A.A.3B.4C.5D.63 .在JaVa应用程序main方法中,正确的参数是:()A.main(stringargs)B.main(String()args)C.main(Stringargs)D.main(stringargs)4 .Java类可以作为()A.类型定义机制B.数据封装机制C.类型定义机制和数据封装机制D.上述都不对5 .下列表达式中正确的是()。A.5÷+B.(a÷b)+÷C.÷÷(a÷b)D.÷÷x6 .下列说法中错误的一项是A.当线程需要在synchronized块中等待共享数据状态改变时,则需要调用Wait()方法B.当线程需要在synchronized块中等待共享数据状态改变时,则需要调用notify。方法C.线程在SynChrOniZed块中执行完操作后,调用notify。方法通知正在等待的线程重新占有锁D.wait()和notify。可以实现线程的同步操作7.sum的值为0,则reSUlt=SUm=0?1:num/sum的值为()oA.OB.1C.01D.无法输出8 .下列方法中,不属于Window1.istener接口的是A.windowpened()B.windowClosed()C.windowActivated()D.mouseDragged()9 .下列运算结果为1的是()。A.8>>1B.4>>>2C.8<<1D.4<<<210 .下列说法中,()是正确的。A.子类拥有的成员数目大于等于父类拥有的成员数目B.父类代表的对象范围比子类广C.子类要调用父类的方法,必须使用SUPer关键字D.一个JaVa类可以有多个父类二、2.填空题(10题)11 .用StatiC修饰的方法,称为静态方法。它们不是对象的方法,而是整个类的方法。静态方法只能处理用关键字修饰的数据。12 .如果有一个类MyFrame是Frame的子类,但它不能被实例化,请写出该类的声明头:O13 .Java中线程体是由线程类的()方法进行定义的,线程运行时,也是从该方法开始执行。14 .请在代码中的画线处填写正确的语句【】,使程序输出helloworld!。/HelloAppletjavaImportjava.awt.*;Importjava.applet.*;PublicclassHelloAppletextends(Publicvoidpaint(Graphicsg)("helloworld!",20,20);)15 .文件类File是包中的一个重要的非流类。16 .如果一个JavaApple源程序文件只定义有一个类,该类的类名为MyFirStAPPlet,则存储该源程序的文件名必须为。17 .多线程是JaVa程序的机制,它能同步共享数据、处理不同事件。18 .类是一个支持集成的抽象数据类型,而对象是类的【】。19 .请在下面代码中加入监听器语句。imporyava.awt.*;importjava.applet.Applet;PublicclasssimpleextendsAppleimplementsMouse1.istener(StringBuffer;publicvoidinit()(监听器语句buffer=newStringBuffer();addltem(initializing.,);)PublicvoidmoseEntered(MouseEventevent)()PublicvoidmoseExited(MouseEventevent)()Publicvoidmosepressed(MouseEventevent)()PublicvoidmoseReleased(MouseEventevent)()Publicvoidmoseciicked(MouseEventevent)(addltem("click!");)20 .所有由Container派生的类称为。三、1.选择题(10题)21 .运行下面程序后,正确的输出结果是()。publicclassSun(publicstaticvoidmain(Stringargs)(intx=6;if(x>6)System.out.println(,x>6n);elseif(x<8)System.out.println(11x<811);elseif(x=6)System.out.println(,'x=6");)A.x<8x=6B.x<8C.x=6D.x<8或x=622 .下列选项中,不属于JDK文件子文件夹的是()。A.bin子文件夹B.include子文件夹C.j2sdkl.4.2子文件夹D.lib子文件夹23 .程序在除法的分母为。或用O取模时会出现()oA.空指针异常B.类选型异常C算术异常D.摘获异常24 .下列有关JaVa语言的叙述中,正确的是AJava是不区分大小写的B.源文件名与public类型的类名必须相同C.源文件其扩展名为JarD.源文件中public类的数目不限25 .一个JaVaAPPliCatiOn运行后,在系统中是作为一个()A.线程B.进程C.进程或线程D.不可预知26 .下面选项中不是JDBCAPI向JDBCDriverManager发出请求的内容的是()oA.指定要加载的JDBC驱动程序B.指定需要连接的数据库系统的类型C.指定需要连接的数据库系统的实例D.指定本地系统的类型27 .下列叙述中,正确的是()。AJava语言的标识符是区分大小写的B.源文件名与public类名可以不相同C.源文件的扩展名为JarD.源文件中public类的数目不限28 .按运算符的功能划分,运算符“+="的类型是A.算术运算符B.关系运算符C.逻辑运算符D.赋值运算符29 .用关键字修饰的类不能被继承。OA.publicB.friendly(缺省)C.finalD.无修饰关键字30 .在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是()。A.希尔排序B.冒泡排序C.插入排序D.选择排序四、综合应用题(2题)31 .本题的功能是用键盘上的方向键来控制直线的绘制方向。如果一直按向上的方向键,则在窗口中从焦点开始向上缓慢绘制直线,按其他方向键也会向对应的方向缓慢地绘制直线,如果按下Shift键的话,绘制直线的速度会加快。importjava.awt.*;importjava.awt.geom.*;importjava.util.*;importjava.awt.event.*;importjavax.swing.*publicclassjava3publicstaticvoidmain(Stringargs)(SketchFrame.frame=newSketchFrame;frame.setDefauhCloseOperation(JFrame.EXITON.C1.OSE);frame.show;)classSketchFrame.extendsJFrame(publicSketchFrame(setTitle(',java311);setSize(DEFAU1.TWIDTH,DEFAU1.THEIGHT);SketehPanelpanel=newSketchPanel;ContainercontentPane=getContentPane;ContentPane.add(panel);)publicstaticfinalintDEFAU1.T_WIDTH=300;publicstaticfinalintDEFAU1.T_HEIGHT=200;)classSketehPanelextendsJPanel(PUbliCVOidSketChPaneI(last=newPoint2D.Double(100,100);lines=newArray1.ist;KeyHandlerlistener=newKeyHandler;addkey1.istener(this);setFocusable(true);)publicvoidadd(intdx1intdy)(Point2Dend=newPoint2D.Double(last.getX+dx,last.getY+dy):1.ine2Dline=new1.ine2D.Double(last,end);lines.add(line):repaint;last=end:)publicvoidpaintComponent(Graphicsg)(super.paintComponent(g);Graphics2Dg2=(Graphics2D)g;for(inti=0;i<lines.size;i+)92.draw(1.ine2D)lines.get(i);)privatePoint2Dlast:privateArray1.istlines;privatestaticfinalintSMA1.1.JNCREMENT=1:privatestaticfinalint1.ARGE_INCREMENT二5;privateclassKeyHandlerimplementsKey1.istener(publicvoidkeyPressed(KeyEventevent)(KEYkeyCode=event.getKeyCode;intd;if(event.isShiftDown)d=1.ARGEJNCREMENT;elsed=SMA1.1.JNCREMENT;if(keyCode=KeyEvent.VK_1.EFT)add(-d,0);elseif(keyCode=KeyEvent.VK_RIGHT)add(d,0);elseif(keyCode=KeyEvent.VK_UP)add(0,-d):elseif(keyCode=KeyEvent.VK_DOWN)add(0,d);)publicvoidkeyReleased(KeyEventevent)publicvoidkeyTyped(KeyEventevent)(charkeyChar=event.getKeyChar;intd;if(Character.isUpperCase(keyChar)d=1.ARGEJNCREMENT;ReyChar=Character.to1.owerCase(keyChar);)elsed=SMA1.1.JNCREMENT;)32.本题的功能是用按钮来控制文本框中文本的颜色。窗口中有两个带有文字标题的而板“Sampletext”和“Textcol-orcontro,o窗口的底部还有一个复选按钮“Disablechanges,o在“Sampletext”面板中有一个带有字符串的文本框,而在“Textcolorcontrol''面板中有三个按钮:“Black"、“Red”和“Green”,并且每个按钮上都有一个对应颜色的圆。单击任意按钮,文本框中的文本变成对应的颜色,如果选中“Disablechanges”复选项,则三个颜色按钮变为不可用,如果取消选中复选项,则三个按钮变为可importjavax.swing.«importjava,awl,:IrnpOrtjava.aw.event.»publicclassjava3extendsJFramv:privateJPanclupper,middle,lower1privateJTcxtFicIdlcxtprivateJButionbUck.red.green»privateJC-KcckBoxdistablcipublicjava3(SiringtilcTex>:su<r(IiiIcTcxt)addWindowl.istencr<newWindowdapcr()(publicvoidVVindQWClONin*(WindowEventc>''System,exit(O>;)uppernewJPancIOiupper.SetBorder(HorderFaciory.CrcatcTidcdBordcr("Sampletext")>UPpehrCHayour;awl¾ordCrIJIyOul(>)text=newJTexFcld("Changeh<colorofhitext")upper,add(cx.HordcrMyoul.CENTER.middle-newJPanclC>middle,ell>rdcr(BorderEncIory.crc.UcTit!cdBorder("Tcxtcolorcontro>>middle,scluyout(newFIoWIRyOUMFlowluiyout.CENTER)blacknewJBuuon(wBhck".newCoiorIcon(Color,black)用。black.UfIdAction1.istencr(newHuttClH”nc.(Color,black)middle,fldd(black)red-newJButton(',Red".newCoIorIconCColor.red)>ired.addeiion1.iMcncr(newKuIton1.istcncr(Co!or.red>>Imiddle,dd(red>greennewJButton("(rreen",newColorlcon(Color,green)green.AddAciion1.isicner(newButiun1.isicncr(Color,green>)middle,add(Rrccn)tlower-newJPaneK)jlower.Scl1.ayouUnewFIow1.ayoutCFlow!.:you.RIGHT)tdisable=newJCheckl3o("Disablechft11g5-);disable,addltcn)l.i5tcncr(newIu*nl.istcner<)'publicvoidtc11S<atc<'hangcd<IicniEvcnic)booleanenabled(e.RctSttcChangc(>IicmEvcni.DESE1.ECTED);black.5ciEnabled<enabled)red.501Enabled(enabled)tgreen.seEnablcd(enabled>lower,add(disable)Containercp-getContcnlPanc()cp.add(upper.Border1.ayout.NORTH)c.add(middle*Bordcrlyou.CENTER);cp.fldd(lower.Iiordcr1.ayout.SOUTH)PaCkCictVisiblc(true)>clanBuNon1.ijuencrCXlCndXAciic-cncrprivateColorcpublicBUtUm1.iBtenc1.Colorc)(this,cwc)publicvoidaconPcrformc<l(AcuonEvcntc)(text.SctForcgroundCc)>)classColorkonImPlemfnlS!(ot<PriVatCColorctprivate5taicFinaliniDIAMETER10:publicColorIcon(Colorc),publicvoidpaintlcon(ComPOnenlcp.Graphic*g.inix.inty)(g.5ctC0l0r(c)g.filOval(x.y.DIAMETER.DIAMETER>lg.sctColor(Color,black)g.drAw()v(.y.DIAMETER.DIAMETER)publicintsetlconHciht()(returnDlAMETEKt)publicmlgctlconWidth()(returnI)IAMETER,)publicstalk-voidmain(String1args)<newjava3("advance">五、单选题(O题)33.设数组dataO.m作为循环队列Sq的存储空间,from为队头指针,rear为队尾指针,则执行出队操作的语句为()。A.Sq.front:=sq.front+1;B.Sq.front:=(Sq.front+l)%maxsize;C.Sq.rear:=(Sq.rear+l)%maxsize;D.Sq.front:=(sq.front+l)%(maxsize+1);六、单选题(O题)34.“商品”与“顾客”两个实体集之间的关系一般是A.一对一B.一对多C.多对一D.多对多参考答案1.C解析:本题考查有关线程的基本知识。线程与进程在概念卜是相关的。进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到消亡的过程。线程是由表示程序运行状态的寄存器、程序计数器、栈指针以及堆栈组成,它不包含进程地址空间中的代码和数据。因此,选项A的说法是错误的。线程是比进程更小的单位。一个进程在其执行过程中,可以产生多个线程,形成多个执行流。每个执行流即每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。因此,选项B的说法是错误的,而选项C的说法是正确的。线程是有优先级的。Threa类有3个有关线程优先级的静态常量:Thread.MINPRIORITY(最低优先级,通常为1)、Thread.MAX_PRIORITY(最高优先级,通常为10)、Thread.NORM_PRIORITY(默认优先级,通常为5)。因此,选项D的说法是错误的。因此,本题的正确答案是选项C。2.D解析:本题考查的是字符串常量这个知识点。字符串常量实际上是一个数组,组成数据的字符除显式给出的外,还包括字符结尾处标识字符串结束的符号,,0fO所以字符串的字符个数等于字符个数加1,JaVa语言编译器会自动在字符串的末尾加上NO,作为字符串结束标识。故本题答案是D。3 .C4 .C5 .DD【解析】本题考查JaVa中的运算符。“+”和“都是一元算术运算符,主要用于自加和自减,在JaVa中不允许对表达式进行这样的运算,选项B和选项C都是错误的,更不允许对数字进行这样的运算,选项A也错误,只有选项D正确。6 .B解析:本题考查线程间交互的概念。当线程进入synchronized块后,共享数据的状态并不一定满足该线程的需要,它要等待其他线程将共享数据改变为所需要的状态后才能继续执行,但由于此时它占有了该对象的锁,其他线程无法对共享数据进行操作,此时线程调用wait()方法进入等待状态,并且暂时释放共享数据的对象锁,其他线程可以获得该对象锁,进入SynChrOniZed块进行操作,操作完成之后,再调用notify。方法通知等待的线程重新占有锁,这样就实现了线程的同步操作。由此可见,wait。方法是线程需要在synchronized块中等待共享数据状态改变时调用,而notify。方法是线程在synchronized块中执行完操作后调用,用来通知正在等待的线程重新占有锁,选项B的说法错误。7.B本题考查条件运算符的用法。该运算符是三元运算符,一般形式为:表达式?语句1:语句2。其中,表达式的值为一个布尔值,如果这个值为true,就执行语句1,否则执行语句2o此外语句1和语句2需要返回相同的数据类型,而且该类型不能是VOid。本题中SUm=O成立,故值为1。8.D解析:Window1.iStener接口包含的方法是:windowActivated(WindowEvent)windowpened(WindowEvent)windowClosed(WindowEvent)windowCloshlg(WindowEvent)windowDeactivated(WindowEvent)windowDeiconified(WindowEvent)windowlconified(WindowEvent)因此不属于Window1.istener接口的方法是D。补充:在AWT中,接口的命名是与事件相对应的,比如WindowEvent事件所对应的接口就是Window1.istener,而MouseEvent事件所对应的接口就是WOUSe1.iStener。同时,接口中方法的命名也是与事件相对应的,比如WindoW1.iStener接口中包含的方法的名称都是以window开头,而WoUSe1.iStener接口中包含的方法的名称都是以mouse开头。针对本题,在不知道具体WindoW1.iStener接口中包含的方法时,根据AWT中接口和接口中方法的命名原则,也可以答对本题。9.B解析:Java中的移位运算符包括>>、<<、>>>。其中>>表示算术右移,<<表示算术左移,>>>表示逻辑右移。选项A中将8算术右移一位,相当于除2取商,结果为4;选项C中将8算术左移一位,相当于乘以2,结果为16;选项D的运算符“<<<"不存在。选项B是将4逻辑右移两位,结果为1。10.BBo【解析】本题考查对子类与父类关系的理解。对一个类的继承也就是构建了一个子类,子类继承了父类的方法和状态,同时还可以向新类中增添新的方法和状态。重点掌握两点:子类方法的访问权限比父类访问权限高,因此父类不能替代子类,但子类能够代替父类,子类方法不能产生比父类更多的异常。子类拥有的成员数目小于等于父类拥有的成员数目,选项A说法错误;父类代表的对象范围比子类广,选项B说法正确;子类要调用父类的方法,可以使用SUPer关键字,也可以将父类的方法进行重写,选项C说法错误。在Java中一个类只能有一个父类,选项D说法错误。11 .static12 .abstractclassMyFrameextendsFrameabstractclassMyFrame.extendsFrame.解析:本题考查考生对类声明的理解。类声明的格式为:修饰符class类名extends父类名implements类实现的接口列表1.其中U括起来的内容为可选项。关键字class是类定义的开始,类名应符合标识符命名规则。关键字extends指明该类是子类,它的父类名紧跟其后,子类与父类之间有继承关系。关键字implements指明该类实现的接口,后跟接口名列表。考生应注意掌握类声明的概念,虽然很简单,但容易漏掉有关修饰符。题目要求声明不能被实例化的类,因此应该是一个抽象类,用abstract作为修饰符。13 .runrun解析:Java中的线程体是由线程类的run()方法定义的,在此方法中定义线程的具体行为。当线程运行时,也是从其run()方法开始执行的。14 .g.drawStringg.drawString解析:该程序是一个简单的Applet程序,程序结构如下。注释:用起始的一行为注释行,在上面程序中,说明了文件名称,文件名称要与类名称一致。import语句:装入java.awt和java.叩Plet下所有的包,使得该程序可能使用这些包中所定义的类,它类似于C中的include语句。类定义:声明一个公共类,用extends表示是Applet的子类。方法重写程序中重写父类Applet的Paint()方法,其中参数g为Graphics类,它表明当前画的上下文。在Painto方法中,调用g的方法drawstring(),在坐标(20,20)处输出字符串。其中的坐标是用像素点来表示的。该程序中没有出现main。方法,这是Applet与应用程序Application的区别之一O15 .java.iojava.io解析:FiIe类是java.io包中的非流类,它以系统无关的方式描述文件对象的属性。16 .MyFirstApplet.iavaMyFirstApplet.iava解析:该题考查对.Applet类的继承、原文件名,与字节码文件名的理解。Applet程序一般都继承Applet类,其源文件名与任何别的JaVa程序文件名一样,都为.Java文件。编译后产生的字节码文件名为.class文件。17 .并发并发18 .实例实例解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,对象则是其对应类的一个实例。19 .addMouse1.istener(tlfis);addMouse1.istener(tlfis);解析:Java语占中注册监听器的方法为addMouse1.istener(this)o20 .容器容器解析:本题考查容器的概念。容器指所有由COntainel派生的类,可以包含由Component派生的任何类的对象,如Window类和Panel类都由容器类Container直接派生而来Frame继承自Window类;Panel类派生了APPlet类。其他容器还有面板Pane1、滚动条SCn)HPane和选项面板OptionPane。21 .B解析:本题考查对if-else条件语句的理解。本题是if-else语句的嵌套结构。x=6时,不满足if条件,执行else语句,满足x<8的条件,输出X<8。故本题答案是B。22 .C解析:本题考查JaVa的文件夹结构,以j2sdkl.4.2版为例,解压后的文件夹包括bin子文件夹、demo子文件夹、include子文件夹、jre子文件夹、Iib子文件夹。23 .C解析:运行异常(RUntimeEXCePtion)经常有算术异常、空指针异常、数组负下标异常、数组索弓I越界异常等。除法分母为。或用。取模为算术异常。24 .B解析:本题考查考生对JaVa语言概念的理解。这是考试重点内容,注意理解这些基本概念。JaVa语言和C语言不同,它是区分大小写的;JaVa程序的源文件扩展名为.class,jar文件是由归档工具jar生成的Jar文件。源文件中PUbliC类的数目只能有。个或1个,用来指定应用程序类名,也是源文件名,所以选项B正确。25.B解析:线程为一个程序中的单个执行流,进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到消亡的过程。一个JaVaAPPIiCation运行后,在系统中应该就是一个进程了(动态)。26 .D解析:指定本地系统的类型不属于JDBCAPl向JDBCDriVerManager发出请求的内容,因为本地系统的类型并不会影响到JDBC的使用。27 .A解析:本题考查考生对JaVa语言概念的理解。这些属于考试重点内容。JaVa语言和C语言不同,它是区分大小写的,选项A正确。JaVa程序的源文件扩展名为.class,Jar文件是由归档工具jar生成的.jar文件。源文件中的PUbIiC类的数日只能有。个或1个,用宋指定应用程序类名,也是源文件名。28 .D解析:本题考查Java中的运算符。按照功能划分,运算符可以分为算术运算符%,+,-;关系运算符:>,<,>=,<=,=,!=;布尔逻辑运算符:!,&&,II;位运算符:,<<,>,;赋值运算符:=,+=,=:8=,/=等,所以本题正确答案是选项D;条件运算符:?:;其他:分量运算符,下标运算符U等。考生应注意算术运算符与赋值运算符的区别以及逻辑运算符与位运算符的区别。29 .C30 .D解析:希尔排序和冒泡排序都属于插入排序,它们通过数据元素的交换来逐步消除线性表中的逆序,所以关键字比较的次数与记录的初始排列次序有关。而选择排序是指扫描整个线性表,从中选出最小的元素,将它交换到表的前面,然后对剩下的字表采用同样的办法,所以关键字比较的次数与记录的初始排列次序无关。31 .第1处:PUIiCSketchPaneln第2处:addKey1.istener(listener)n第3处:intkeyCode=event.getKeyCoden【解析】第1处SketChPaneI是构造方法,构造方法是给对象赋初值,所以没有返回值,但不用VOid来声明;第2处注册时间的监听器,参数应为事件源;第3处getKeyCode方法获得的是int型的键码。32 .解析:第1处:UPPer.set1.ayout(newBorder1.ayout()第2处:classButton1.istenerimplementsACtion1.iStener第3处:this.C=C【解析】第1处令面板upper采用Border1.ayout布局;第2处是要求类Button1.istener实现Action1.istener接口,达到通过按钮改变字体颜色的目的。第三处是设置按钮前圆形的颜色。33 .Bn循环队列采用的方法是:假设向量SqT.da皿maxsize提一个首尾相接的圆环,即SqT.dataO接在Sq.datamaxsize-1之后,我们将这种意义下的向量称循环向量,并将循环向量中的队列称为循环队列。若当前尾指针等于向量的上界,则再做入队列操作时,令尾指针等于向量的下界,这样就利用到已被删除的元素空间,克服假上溢现象。因此入队操作时,在循环意义下的尾指针加1操作可描述为:if(Sqf.rear>=maxsize)sq.near:=0;elsesq.rear+;如果利用“模运算”,上述循环意义下的尾指针加1操作,可以更简洁地描述为:Sqf.rear二(sq.rear+l)%maxsizeo同样,出队操作时,在循环意义下的头指针加1操作,也可利用“模运算”来实现:sq.front:=(sq.front+l)%maxsizeon34.D解析:本题考核实体集之间的联系。实体集之间的联系有3种:一对一、一对多和多对多。因为一类商品可以由多个顾客购买,而一个顾客可以购买多类商品,所以,“商品”与“顾客”两个实体集之间的联系一般是“多对多”,选项D正确。