2026秋国家开放大学《JAVA语言程序设计》(课程ID:00018)形考任务参考答案_第1页
2026秋国家开放大学《JAVA语言程序设计》(课程ID:00018)形考任务参考答案_第2页
2026秋国家开放大学《JAVA语言程序设计》(课程ID:00018)形考任务参考答案_第3页
2026秋国家开放大学《JAVA语言程序设计》(课程ID:00018)形考任务参考答案_第4页
2026秋国家开放大学《JAVA语言程序设计》(课程ID:00018)形考任务参考答案_第5页
已阅读5页,还剩16页未读, 继续免费阅读

下载本文档

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

文档简介

国家开放大学《JAVA语言程序设计》(课程ID:00018)形考任务1-4参考答案(2026年秋季学期·最新题库版·含完整选项与实验源代码)课程形考结构(每次任务满分25分,共占形考成绩100%):任务一、任务二为客观题(单项选择题+判断题);任务三、任务四为课程实验(提交源代码+运行结果截图)。任务三从实验1、实验2中选做一个,任务四从实验3、实验4中选做一个,本文档四个实验的题目和可运行源代码全部提供,任选其一即可。使用说明:国开学习网抽题时题目顺序和选项位置均随机,请用Ctrl+F按题干关键词定位,按选项内容作答,不要按题号或字母对答案。本资料仅供复习参考。形考任务一(Java基础语法·类与对象,30道单选+10道判断)一、单项选择题1.()提供给上层应用进行开发和构建应用的基础类库。A.Java应用B.JDKC.JVMD.JRE【答案】B.JDK2.Java程序在编译之后,以()方式被Java虚拟机执行。A.源代码B.文本C.字节码D.二进制【答案】C.字节码3.下列()移动开发平台使用Java语言作为官方推荐开发语言。A.WindowsB.iOSC.SymbianD.Android【答案】D.Android4.Java语言中用来编译Java程序的命令是()。A.javaw.exeB.javac.exeC.java.exeD.javap.exe【答案】B.javac.exe5.下列()是合法的标识符。A.23667B.{printOut}C.num_greenD.modityPrice【答案】C.num_green6.下列()不是保留字。A.privateB.byteC.num_blueD.return【答案】C.num_blue7.下列关于float类型floatf=5.2的说法,正确的是()。A.错误,变量声明错误B.错误,可以考虑使用int类型C.正确D.错误,精度不够,需要强制类型转换float【答案】D.错误,精度不够,需要强制类型转换float⚠(5.2默认为double型,直接赋给float会编译报错;个别题库版本本题标"错误,变量声明错误",请以平台选项含义作答)8.下列代码执行的结果中m和n的值分别为()。intm=50,n=160;inttmp=m;m=n;n=tmp;A.160/160B.50/50C.50/160D.160/50【答案】D.160/50(通过临时变量tmp交换了m和n的值)9.表达式29/3*3的值是()。A.27.999B.27.0C.29D.27【答案】D.27(整数除法29/3=9,9*3=27)10.执行下列语句:intm=15;intval=m--;val的值是()。A.14B.16C.13D.15【答案】D.15(后置自减,先赋值再自减)11.执行下列语句:intm=15;intval=--m;val的值是()。A.16B.13C.14D.15【答案】C.14(前置自减,先自减再赋值)12.编译运行以下代码段后,关于输出结果正确的是()。intx=4;System.out.println("valueis"+((x>4)?99.9:9));A.valueis99.9B.valueis9.0C.valueis9D.编译错误【答案】B.valueis9.0(三元运算符中99.9为double,9自动提升为double)13.下列代码的执行结果是()。doublevar1=333;doublevar2=2344;Stringstr=var1+"/"+var2+"=";var2=var1/var2;str=str+var2;System.out.println(str);A.333.0/2344.0=0.142B.0.142C.0.14206484641638226D.333.0/2344.0=0.14206484641638226【答案】D.333.0/2344.0=0.1420648464163822614.下列代码段运行结果为()。intnum=15;if(num%2==0){...偶数...}else{...奇数...}A."num15is偶数"B.15C.2D."num15is奇数"【答案】D."num15is奇数"15.下列代码段,m的值为2时会输出()。switch中case0、case1均有输出并break,case2仅有break,default输出"default"。A.代码编译失败,没有结果输出B.没有任何显示C."default"D.case0【答案】B.没有任何显示(进入case2后直接break跳出)16.下列代码段,n处于()范围时将打印字符串"third"。if(n>5){..."first"...}elseif(n<=0){..."second"...}else{..."third"...}A.n<=0B.n>0&&n<=5C.n>5D.n<5【答案】B.n>0&&n<=517.下列代码段,执行结果为()。intn;for(n=9;n>=3;n--){System.out.print(n);}A.代码执行成功,输出结果为9876543B.代码编译失败,没有结果输出C.代码执行成功,输出结果为8D.代码执行成功,输出结果为9【答案】A.代码执行成功,输出结果为987654318.下列循环语句实现先执行后判断循环条件的是()。A.do-whileB.forC.whileD.switch-case【答案】A.do-while19.在switch-case语句中,需要与()语句搭配使用,用以结束对应case逻辑的执行。A.if-elseB.continueC.whileD.break【答案】D.break20.下列代码段,输出"default"的m的值()。switch中case0无break(会穿透执行case1),case1有break,case2有break,default输出"default"。A.2B.3C.1D.0【答案】B.3(无case3匹配,落入default)21.下列代码段,x处于()范围时将打印字符串"second"。if(x>0){..."first"...}elseif(x>-3){..."second"...}else{..."third"...}A.x>-3B.x<=0&&x>-3C.x<=-3D.x>0【答案】B.x<=0&&x>-322.下列数据类型中,switch语句不能用于的是()。A.charB.byteC.shortD.double【答案】D.double23.类内部内容不包括()。A.构造方法声明B.属性信息C.外部类的私有方法调用D.方法声明【答案】C.外部类的私有方法调用24.下列关于类方法的描述,错误的是()。A.类方法和实例方法均占用内存空间,类方法在未实例化之时,不占用内存空间B.类方法能用实例和类名调用C.类方法只能处理类变量或调用类方法D.类方法可使用关键字static作为修饰符【答案】A.类方法和实例方法均占用内存空间,类方法在未实例化之时,不占用内存空间(表述自相矛盾,类方法不依赖实例、随类加载即分配)25.下列()不是修饰符。A.voidB.finalC.staticD.abstract【答案】A.void26.下列修饰符()修饰的变量称为静态变量,修饰的方法称为静态方法。A.synchronizedB.staticC.nativeD.abstract【答案】B.static27.对于下列代码段,说法正确的是()。publicclassStudent{privateStringname;privateintage;publicStudent(){this("李红",25);}publicStudent(StringcurName,intcurAge){=curName;age=curAge;}...}A.通过age调用了方法ageB.name和age是两个构造方法的入口参数C.通过this("李红",25)调用了构造方法D.通过调用了方法name【答案】C.通过this("李红",25)调用了构造方法28.下列修饰符中,可以用来定义类方法和类变量的是()。A.synchronizedB.staticC.finalD.native【答案】B.static29.下列修饰符在修饰类时,类不能直接用来创建实例的是()。A.synchronizedB.abstractC.overrideD.final【答案】B.abstract30.下列修饰符在修饰类时,不能被继承扩展的是()。A.nativeB.implementsC.synchronizedD.final【答案】D.final二、判断题1.Eclipse目前只支持Windows操作系统,不支持Linux和MacOS操作系统。()【答案】错(Eclipse跨平台,三大操作系统均支持)2.Java的源代码,首先被编译为class文件,然后再被翻译成机器码被目标机器执行。()【答案】对3.布尔值也可以被强制转化为整数型,true的整型值为0,false为1。()【答案】错(Java中boolean与int不能互相转换;C语言才是true=1)4.一个变量的作用域可以在整个程序段中,即内部代码块和外部代码块中都可以使用。()【答案】错(变量作用域仅限于其所在的代码块)5.Java语言中注释的语法有三种:单行注释、多行注释和文档注释。()【答案】对6.逻辑运算符主要用于比较数据之间的大小。()【答案】错(比较大小用关系运算符;逻辑运算符操作布尔值)7.break是中断打断的意思,在循环语句中是中断一次执行,然后继续后续的循环。()【答案】错(这是continue的作用;break直接终止整个循环)8.在for语句中,必须设置循环条件,否则程序无法执行。()【答案】错(循环条件表达式可以省略)9.类是典型的体现了面向对象的封装特性,可以隐藏类的内部实现,简化项目的复杂度。()【答案】对10.面向对象的继承性,可以大大减少类实现中的重复代码。()【答案】对形考任务二(继承与接口·异常·多线程·数据库,30道单选+10道判断)一、单项选择题1.下列是有关子类继承父类构造函数的描述,正确的是()。A.子类必须通过super关键字调用父类的构造函数B.子类无条件地继承父类不含参数的构造函数C.创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数D.子类可以继承父类的构造函数【答案】B.子类无条件地继承父类不含参数的构造函数(按现行题库答案;子类未定义构造方法时默认调用父类无参构造)2.下列关于类的定义中,a1,a2为接口,x,y为类,继承代码中错误的是()。A.publicinterfacea1extendsa2{...}B.publicclassxextendsy{...}C.publicxextendsa1{...}D.publicclassxextendsyimplementsa1{...}【答案】C.publicxextendsa1{...}(缺少class关键字)3.关于下列代码说法正确的是()。publicclassA{publicvoiddoit(){}publicStringdoit(){return"a";}publicdoubledoit(intx){return1.0;}}A.代码publicdoubledoit(intx){行,出现编译错误B.代码return"a";行,出现编译错误C.代码publicStringdoit(){行,出现编译错误D.无编译错误【答案】C.代码publicStringdoit(){行,出现编译错误(与publicvoiddoit()参数列表相同、仅返回值不同,不构成重载)4.在Java语言中,下列关于方法覆盖的描述,错误的是()。A.父类中声明为private的方法,对于子类是可以访问的B.子类的返回数据类型与父类要保持一致C.子类的参数信息与父类要保持一致D.子类的方法名称与父类要保持一致【答案】A.父类中声明为private的方法,对于子类是可以访问的(private成员子类不可直接访问)5.下列关于抽象类和接口的说法错误的是()。A.接口中的方法都必须加上public关键字B.抽象类在Java语言中表示的是一种继承关系C.在抽象类中可以没有抽象方法D.接口中的方法都不能被实现【答案】A.接口中的方法都必须加上public关键字⚠(接口方法默认即publicabstract,可省略;注意Java8后接口还有default默认方法,个别版本本题答案为D,以平台为准)6.下面语句中,把方法声明为抽象的公共方法是()。A.publicabstractvoidmethod(){}B.publicabstractvoidmethod();C.publicabstractmethod();D.publicvoidmethod()extendsabstract【答案】B.publicabstractvoidmethod();(无方法体,以分号结尾)7.内部类不可以声明在()。A.类的内部B.类的外部C.类的构造方法内部D.类的方法内部【答案】B.类的外部8.下列选项中,()修饰符修饰的变量是被同一个类生成的对象共享的。A.privateB.staticC.publicD.final【答案】B.static9.Java语言中用来抛出异常的关键字是()。A.throwB.tryC.catchD.finally【答案】A.throw10.()类是所有异常类的父类。A.IOExceptionB.ErrorC.ThrowableD.Exception【答案】C.Throwable11.自定义异常类时,可以继承的类是()。A.AssertionErrorB.ErrorC.AppletD.Exception及其子类【答案】D.Exception及其子类12.使用catch(Exceptione)的优点是()。A.执行一些程序B.只捕获个别类型的异常C.忽略一些异常D.捕获try语句块中产生的所有类型异常【答案】D.捕获try语句块中产生的所有类型异常13.Java语言中,一定会执行完的代码是()。A.tryB.throwC.catchD.finally【答案】D.finally14.下列()属于受控异常。A.NullPointerExceptionB.IOExceptionC.ClassCastExceptionD.Error【答案】B.IOException15.下列()异常属于非受控异常。A.SQLExceptionB.RuntimeExceptionC.SocketExceptionD.FileNotFoundException【答案】B.RuntimeException16.下列关于异常的说法正确的是()。A.使用关键字catch声明可能发生的异常B.抛出异常是指程序运行中出现异常情况时发生中断的现象C.抛出异常是异常处理的起点D.异常声明可以声明多个异常,中间用";"分开【答案】C.抛出异常是异常处理的起点(声明用throws、多个异常用逗号分隔)17.如下程序代码运行的结果是()。publicclassFoo{publicstaticvoidmain(String[]args){try{return;}finally{System.out.println("Finally");}}}A.FinallyB.运行时抛出异常C.编译失败D.代码正常运行但没有任何输出【答案】A.Finally(即使try中有return,finally仍执行)18.如果抛出在继承中的异常,下列说法正确的是()。A.父类与子类抛出异常是没有关系的B.父类中方法抛出两个异常,子类可以抛出两个异常C.父类抛出异常IOException,子类不是必须抛出异常IOExceptionD.父类中方法抛出三个异常,子类可以抛出四个异常【答案】C.父类抛出异常IOException,子类不是必须抛出异常IOException(子类重写方法抛出的异常不能宽于父类)19.编写线程类,能够返回线程执行结果的接口是()。A.CallableB.RunnableC.SerializableD.Clonable【答案】A.Callable20.下列说法中错误的是()。A.线程就是程序B.多线程是指一个程序的多个执行流程C.线程是一个程序的单个执行流程D.多线程用于实现并发【答案】A.线程就是程序21.线程的生命周期,不包括()。A.新建B.阻塞C.停止D.运行【答案】C.停止(生命周期为新建、就绪、运行、阻塞、死亡)22.一个线程对象调用了()方法之后,进入就绪状态。A.suspend()B.start()C.sleep()D.run()【答案】B.start()23.下列()关键字通常用来对代码块或者方法加锁,从而使得对其的访问是排他的。A.transientB.synchronizedC.staticD.Serializable【答案】B.synchronized24.Java中保证变量实现线程安全是通过关键字()解决的。A.synchronizedB.throwC.volatileD.finally【答案】C.volatile25.假设存在进程/线程等待序列{p1,p2,...,pn},其中p1等待p2占有的资源,p2等待p3占有的资源,pn等待p1占有的资源,形成一个循环。这属于下列死锁产生必要条件中的()。A.循环等待B.资源不可抢占条件C.资源互斥条件D.占有且申请资源条件【答案】A.循环等待26.下列代码创建一个新线程并启动线程。Runnabletarget=newMyRunnable();ThreadmyThread=newThread(target);其中,()类可以创建target对象,并能编译正确。A.publicclassMyRunnableextendsObject{publicvoidrun(){}}B.publicclassMyRunnableextendsRunnable{voidrun(){}}C.publicclassMyRunnableimplementsRunnable{publicvoidrun(){}}D.publicclassMyRunnableextendsRunnable{publicvoidrun(){}}【答案】C.publicclassMyRunnableimplementsRunnable{publicvoidrun(){}}27.下列方式中,能够实现同步的是()。A.基于BlockingQueue的数据接口来存储B.synchronized方式C.使用volatile修饰符D.使用ThreadLocal方式【答案】B.synchronized方式28.下列()技术不属于Web应用服务器。A.JettyB.UndertowC.TomcatD.DB2【答案】D.DB2(DB2是数据库)29.下列()数据库属于开源免费的。A.OracleB.DB2C.MySQLD.SQLServer【答案】C.MySQL30.下列技术中,不属于前端开发技术的是()。A.MySQLB.BootstrapC.jQueryD.Reactjs【答案】A.MySQL二、判断题1.子类可以继承父类的构造方法。()【答案】错(构造方法不能被继承,只能通过super调用)20.子类在方法覆盖时,protected的方法可以在子类中被修改为public。()【答案】对(访问权限只能放大不能缩小)3.在4种访问控制中,最宽松的访问控制级别是default。()【答案】错(最宽松的是public,default仅限同包访问)4.一个类只能实现一个接口。()【答案】错(一个类可以实现多个接口)5.进行异常处理时,try语句块执行的效率高,要把所有代码都放在try语句块内部。()【答案】错6.finally语句块可以捕获异常,也可以处理异常。()【答案】错(捕获和处理异常是catch块的工作,finally负责收尾清理)7.如果想保证线程安全,可以通过volatile直接修饰对象。()【答案】错(volatile只能修饰变量)8.Java多线程运行环境下,多个线程可以独立运行,不会引起并发和线程安全问题。()【答案】错9.通过调用线程的sleep()发出I/O请求时,线程就会进入到死亡状态。()【答案】错(进入的是阻塞状态)10.NoSQL中的列存储数据库使用灵活的图形来存储数据。()【答案】错(使用图形存储的是图数据库;列存储数据库按列族存储)形考任务三(课程实验,25分:实验1、实验2选做一个,提交源代码+运行截图)实验1:数据类型的使用实验目的:了解和掌握如何在程序中使用各种Java数据类型。问题描述:杂物店有各种各样的商品在售卖,请完成一个程序,帮助杂物店的老板计算顾客购买商品的总费用。主要的商品有:冰棍(单价1.5元),矿泉水(单价2.0元),面包(单价2.5元),方便面(单价4.5元),瓶装可乐(单价3.5元)。目前共有两位顾客购买了商品,明细如下:小明:矿泉水2瓶,面包1个,瓶装可乐1个;小美:冰棍3个,瓶装可乐2个,方便面1包。实验要求:在程序中输出顾客的名称以及购买的商品详细清单,并给出最终的商品价格。请提交源代码,并将执行结果的输出信息截图保存并提交。参考源代码(实验1_Shop.java):publicclassShop{publicstaticvoidmain(String[]args){//商品单价publicclassShop{publicstaticvoidmain(String[]args){//商品单价doubleiceCream=1.5;//冰棍doublewater=2.0;//矿泉水doublebread=2.5;//面包doublenoodle=4.5;//方便面doublecola=3.5;//瓶装可乐//小明:矿泉水2瓶,面包1个,瓶装可乐1个doublem1=water*2,m2=bread*1,m3=cola*1;doubletotalMing=m1+m2+m3;System.out.println("顾客:小明");System.out.printf("购买清单:矿泉水2瓶(%.2f元),面包1个(%.2f元),瓶装可乐1个(%.2f元)%n",m1,m2,m3);System.out.printf("小明应付总费用:%.2f元%n%n",totalMing);//小美:冰棍3个,瓶装可乐2个,方便面1包doublen1=iceCream*3,n2=cola*2,n3=noodle*1;doubletotalMei=n1+n2+n3;System.out.println("顾客:小美");System.out.printf("购买清单:冰棍3个(%.2f元),瓶装可乐2个(%.2f元),方便面1包(%.2f元)%n",n1,n2,n3);System.out.printf("小美应付总费用:%.2f元%n",totalMei);}}实验2:分支、循环和跳转语句的使用实验目的:了解和掌握分支、循环和跳转语句的使用及常见问题处理。问题描述:杂物店正在做促销活动,很多商品都在进行特价促销,针对特价商品的购买数量做了限制,具体的促销办法是:购买金额大于30元,打9折优惠;如果购买金额大于50元,打8.5折优惠。主要的商品有:冰棍(单价2.5元),矿泉水(单价3.0元),面包(单价3.5元)。目前共有两位顾客购买了商品,明细如下:小明:矿泉水6瓶,面包5个,冰棍5个;小美:冰棍6个,矿泉水4瓶,面包4个。实验要求:请编写程序计算实际的缴费金额。请提交源代码,并将执行结果的输出信息截图保存并提交。参考源代码(实验2_Discount.java):publicclassDiscount{//计算总金额:用数组+循环体现循环语句staticdoubletotal(doubleprice,intcount){publicclassDiscount{//计算总金额:用数组+循环体现循环语句staticdoubletotal(doubleprice,intcount){doublesum=0;for(inti=0;i<count;i++){//循环累加每一件商品sum+=price;}returnsum;}//按促销规则打折:体现分支语句staticdoublepay(doublemoney){if(money>50){returnmoney*0.85;//大于50元打8.5折}elseif(money>30){returnmoney*0.9;//大于30元打9折}else{returnmoney;//不优惠}}publicstaticvoidmain(String[]args){doubleiceCream=2.5,water=3.0,bread=3.5;doubleming=total(water,6)+total(bread,5)+total(iceCream,5);doublemei=total(iceCream,6)+total(water,4)+total(bread,4);System.out.printf("小明购买商品原价合计:%.2f元,实际缴费:%.2f元%n",ming,pay(ming));System.out.printf("小美购买商品原价合计:%.2f元,实际缴费:%.2f元%n",mei,pay(mei));}}形考任务四(课程实验,25分:实验3、实验4选做一个,提交源代码+运行截图)实验3:类、方法以及各个修饰符的使用实验目的:通过本实验,了解和掌握类、方法以及各个修饰符的使用。问题描述:基于面向对象思想和类的方式,创建一个计算金额的程序。啤酒3.5元/罐,方便面4.5元/包,矿泉水2.0元/瓶。优惠规则:对于单个商品购买数量超过2件时,给予9折优惠;对于方便面这种商品,方便面总价超过20元时,扣减2元。测试数据:小美购买商品:啤酒3罐,方便面3包,矿泉水2瓶;小明购买商品:啤酒2罐,方便面5包。实验要求:在程序中输出顾客的名称以及购买商品的详细清单,并给出程序中输出顾客结账时最终的商品总价。在面向对象实现中,创建商品类,然后扩展出方便面的子类,在其中分别定义出各自的折扣逻辑。请提交源代码,并将执行结果的输出信息截图保存并提交。参考源代码(实验3_Shop3.java):课程形考结构(每次任务满分25分,共占形考成绩100%):任务一、任务二为客观题(单项选择题+判断题);任务三、任务四为课程实验(提交源代码+运行结果截图)。任务三从实验1、实验2中选做一个,任务四从实验3、实验4中选做一个,本文档四个实验的题目和可运行源代码全部提供,任选其一即可。classGoods{//商品类protectedStringname;protecteddoubleprice;classGoods{//商品类protectedStringname;protecteddoubleprice;Goods(Stringname,doubleprice){=name;this.price=price;}doublecost(intcount){//单个商品超过2件打9折doublemoney=price*count;if(count>2)money=money*0.9;returnmoney;}}classFangBianMianextendsGoods{//方便面子类,扩展自己的折扣逻辑FangBianMian(Stringname,doubleprice){super(name,price);}@Overridedoublecost(intcount){doublemoney=super.cost(count);//先按商品类规则计算if(money>20)money-=2;//方便面总价超20元减2元returnmoney;}}publicclassShop3{publicstaticvoidmain(String[]args){Goodsbeer=newGoods("啤酒",3.5);Goodswater=newGoods("矿泉水",2.0);FangBianMiannoodle=newFangBianMian("方便面",4.5);//小美:啤酒3罐,方便面3包,矿泉水2瓶doublemei=beer.cost(3)+noodle.cost(3)+water.cost(2);System.out.printf("顾客小美:啤酒3罐,方便面3包,矿泉水2瓶%n");System.out.printf("小美结账总价:%.2f元%n%n",mei);//小明:啤酒2罐,方便面5包doubleming=beer.cost(2)+noodle.cost(5);System.out.printf("顾客小明:啤酒2罐,方便面5包%n");System.out.printf("小明结账总价:%.2f元%n",ming);}}实验4:类和接口的继承与多态的使用实验目的:通过本实验,了解和掌握类和接口的继承与多态使用。问题描述:杂物店正在做促销活动,针对春节制定了促销方案,具体如下:满50减8块,满30减4块。同时很多商品都在进行特价促销,特价商品不参与最终结账时的折扣或者满减。特价商品是啤酒,原价基础之上打7折销售。某些商品需要满足最多购买数量的限制,超过限制的商品按照最大限制数量计算。某些商品有最小购买数量的要求,具体限制如下:矿泉水:单个商品最多购买3个,超过数量,按照最大数量计算;方便面:最少购买2个,否则不予售卖。主要的商品有:矿泉水(单价2.0元),方便面(单价4.5元),啤酒(单价10元)。目前共有两位顾客购买商品,明细如下:小明:矿泉水6瓶,方便面3个,啤酒2个;小美:方便面1包,矿泉水3瓶,啤酒1个。实验要求:请按照两种促销方案分别计算小明和小美实际的花费金额。请提交源代码,并将执行结果的输出信息截图保存并提交。参考源代码(实验4_Shop4.java):使用说明:国开学习网抽题时题目顺序和选项位置均随机,请用Ctrl+F按题干关键词定位,按选项内容作答,不要按题号或字母对答案。本资料仅供复习参考。abstractclassGoods{//抽象商品类Stringname;doubleprice;Goods(Stringname,doubleprice){=name;this.price=price;}abstractclassGoods{//抽象商品类Stringname;doubleprice;Goods(Stringname,doubleprice){=name;this.price=price;}abstractdoublesettle(intcount);//各商品自己的结算规则(多态)}classMineralWaterextendsGoods{//矿泉水:限购3个MineralWater(){super("矿泉水",2.0);}doublesettle(intcount){returnprice*Math.min(count,3);}}classNoodleextendsGoods{//方便面:最少购买2个,否则不予售卖Noodle(){super("方便面",4.5);}doublesettle(intcount){returncount<2?0:price*count;}}classBeerextendsGoods{//啤酒:特价7折,不参与满减Beer(){super("啤酒",10.0);}doublesettle(intcount){returnprice*count*0.7;}}interfaceSettleRule{//接口:满减促销方案doublepay(doublenormalMoney);}classFullReductionimplementsSettleRule{publicdoublepay(doublem){if(m>=50)returnm-8;//满50减8if(m>=30)returnm-4;//满30减4returnm;}}publicclassShop4{publicstaticvoidmain(String[]args){Goodswater=newMineralWater(),noodle=newNoodle(),beer=newBeer();SettleRulerule=newFullReduction();//接口回调体现多态//小明:矿泉水6瓶,方便面3个,啤酒2个doublemingNormal=water.settle(6)+noodle.settle(3);doublemingPay=rule.pay(mingNormal)+beer.settle(2);System.out.printf("小明:普通商品(按满减后)%.2f元+特价啤酒%.2f元=实际花费%.2f元%n",rule.pay(mingNormal),beer.settle(2),mingPay);//小美:方便面1包,矿泉水3瓶,啤酒1个doublemeiNormal=noodle.settle(1)+water.settle(3);doublemeiPay=rule.pay(meiNormal)+beer.settle(1);System.out.printf("小美:普通商品(按满减后)%.2f元+特价啤酒%.2f元=实际花费%.2f元%n",rule.pay(meiNormal),beer.settle(1),meiPay);}}附:客观题核对提醒任务一第7题(floatf=5.2)不同版本题库答案有分歧("错误,精度不够需要强制类型转换"与"错误,变量声明错误"两种说法均有流传),按Java规范前者更准确;任务二第5题(抽象类和接口)个别版本题库答案为"接口中的方法都不能被实现"(Java8后有default方法,该说法已不准确),以平台实际出现的选项为准;客观题作答时按题干关键词定位、按选项内容选择,实验任务提交时源代码可按自己理解改写变量名与输出格式,但计算逻辑需与题目促销规则一致。资料整理自2026年秋季学期国开学习网题库及课程考核说明公开资源,仅供复习参考。形考任务一(Java基础语法·类与对象,30道单选+10道判断)一、单项选择题1.()提供给上层应用进行开发和构建应用的基础类库。A.Java应用B.JDKC.JVMD.JRE【答案】B.JDK2.Java程序在编译之后,以()方式被Java虚拟机执行。A.源代码B.文本C.字节码D.二进制【答案】C.字节码3.下列()移动开发平台使用Java语言作为官方推荐开发语言。A.WindowsB.iOSC.SymbianD.Android【答案】D.Android4.Java语言中用来编译Java程序的命令是()。A.javaw.exeB.javac.exeC.java.exeD.javap.exe【答案】B.javac.exe5.下列()是合法的标识符。A.23667B.{printOut}C.num_greenD.modityPrice【答案】C.num_green6.下列()不是保留字。A.privateB.byteC.num_blueD.return【答案】C.num_blue7.下列关于float类型floatf=5.2的说法,正确的是()。A.错误,变量声明错误B.错误,可以考虑使用int类型C.正确D.错误,精度不够,需要强制类型转换float【答案】D.错误,精度不够,需要强制类型转换float⚠(5.2默认为double型,直接赋给float会编译报错;个别题库版本本题标"错误,变量声明错误",请以平台选项含义作答)8.下列代码执行的结果中m和n的值分别为()。intm=50,n=160;inttmp=m;m=n;n=tmp;A.160/160B.50/50C.50/160D.160/50【答案】D.160/50(通过临时变量tmp交换了m和n的值)9.表达式29/3*3的值是()。A.27.999B.27.0C.29D.27【答案】D.27(整数除法29/3=9,9*3=27)10.执行下列语句:intm=15;intval=m--;val的值是()。A.14B.16C.13D.15【答案】D.15(后置自减,先赋值再自减)11.执行下列语句:intm=15;intval=--m;val的值是()。A.16B.13C.14D.15【答案】C.14(前置自减,先自减再赋值)12.编译运行以下代码段后,关于输出结果正确的是()。intx=4;System.out.println("valueis"+((x>4)?99.9:9));A.valueis99.9B.valueis9.0C.valueis9D.编译错误【答案】B.valueis9.0(三元运算符中99.9为double,9自动提升为double)13.下列代码的执行结果是()。doublevar1=333;doublevar2=2344;Stringstr=var1+"/"+var2+"=";var2=var1/var2;str=str+var2;System.out.println(str);A.333.0/2344.0=0.142B.0.142C.0.14206484641638226D.333.0/2344.0=0.14206484641638226【答案】D.333.0/2344.0=0.1420648464163822614.下列代码段运行结果为()。intnum=15;if(num%2==0){...偶数...}else{...奇数...}A."num15is偶数"B.15C.2D."num15is奇数"【答案】D."num15is奇数"15.下列代码段,m的值为2时会输出()。switch中case0、case1均有输出并break,case2仅有break,default输出"default"。A.代码编译失败,没有结果输出B.没有任何显示C."default"D.case0【答案】B.没有任何显示(进入case2后直接break跳出)16.下列代码段,n处于()范围时将打印字符串"third"。if(n>5){..."first"...}elseif(n<=0){..."second"...}else{..."third"...}A.n<=0B.n>0&&n<=5C.n>5D.n<5【答案】B.n>0&&n<=517.下列代码段,执行结果为()。intn;for(n=9;n>=3;n--){System.out.print(n);}A.代码执行成功,输出结果为9876543B.代码编译失败,没有结果输出C.代码执行成功,输出结果为8D.代码执行成功,输出结果为9【答案】A.代码执行成功,输出结果为987654318.下列循环语句实现先执行后判断循环条件的是()。A.do-whileB.forC.whileD.switch-case【答案】A.do-while19.在switch-case语句中,需要与()语句搭配使用,用以结束对应case逻辑的执行。A.if-elseB.continueC.whileD.break【答案】D.break20.下列代码段,输出"default"的m的值()。switch中case0无break(会穿透执行case1),case1有break,case2有break,default输出"default"。A.2B.3C.1D.0【答案】B.3(无case3匹配,落入default)21.下列代码段,x处于()范围时将打印字符串"second"。if(x>0){..."first"...}elseif(x>-3){..."second"...}else{..."third"...}A.x>-3B.x<=0&&x>-3C.x<=-3D.x>0【答案】B.x<=0&&x>-322.下列数据类型中,switch语句不能用于的是()。A.charB.byteC.shortD.double【答案】D.double23.类内部内容不包括()。A.构造方法声明B.属性信息C.外部类的私有方法调用D.方法声明【答案】C.外部类的私有方法调用24.下列关于类方法的描述,错误的是()。A.类方法和实例方法均占用内存空间,类方法在未实例化之时,不占用内存空间B.类方法能用实例和类名调用C.类方法只能处理类变量或调用类方法D.类方法可使用关键字static作为修饰符【答案】A.类方法和实例方法均占用内存空间,类方法在未实例化之时,不占用内存空间(表述自相矛盾,类方法不依赖实例、随类加载即分配)25.下列()不是修饰符。A.voidB.finalC.staticD.abstract【答案】A.void26.下列修饰符()修饰的变量称为静态变量,修饰的方法称为静态方法。A.synchronizedB.staticC.nativeD.abstract【答案】B.static27.对于下列代码段,说法正确的是()。publicclassStudent{privateStringname;privateintage;publicStudent(){this("李红",25);}publicStudent(StringcurName,intcurAge){=curName;age=curAge;}...}A.通过age调用了方法ageB.name和age是两个构造方法的入口参数C.通过this("李红",25)调用了构造方法D.通过调用了方法name【答案】C.通过this("李红",25)调用了构造方法28.下列修饰符中,可以用来定义类方法和类变量的是()。A.synchronizedB.staticC.finalD.native【答案】B.static29.下列修饰符在修饰类时,类不能直接用来创建实例的是()。A.synchronizedB.abstractC.overrideD.final【答案】B.abstract30.下列修饰符在修饰类时,不能被继承扩展的是()。A.nativeB.implementsC.synchronizedD.final【答案】D.final二、判断题1.Eclipse目前只支持Windows操作系统,不支持Linux和MacOS操作系统。()【答案】错(Eclipse跨平台,三大操作系统均支持)2.Java的源代码,首先被编译为class文件,然后再被翻译成机器码被目标机器执行。()【答案】对3.布尔值也可以被强制转化为整数型,true的整型值为0,false为1。()【答案】错(Java中boolean与int不能互相转换;C语言才是true=1)4.一个变量的作用域可以在整个程序段中,即内部代码块和外部代码块中都可以使用。()【答案】错(变量作用域仅限于其所在的代码块)5.Java语言中注释的语法有三种:单行注释、多行注释和文档注释。()【答案】对6.逻辑运算符主要用于比较数据之间的大小。()【答案】错(比较大小用关系运算符;逻辑运算符操作布尔值)7.break是中断打断的意思,在循环语句中是中断一次执行,然后继续后续的循环。()【答案】错(这是continue的作用;break直接终止整个循环)8.在for语句中,必须设置循环条件,否则程序无法执行。()【答案】错(循环条件表达式可以省略)9.类是典型的体现了面向对象的封装特性,可以隐藏类的内部实现,简化项目的复杂度。()【答案】对10.面向对象的继承性,可以大大减少类实现中的重复代码。()【答案】对形考任务二(继承与接口·异常·多线程·数据库,30道单选+10道判断)一、单项选择题1.下列是有关子类继承父类构造函数的描述,正确的是()。A.子类必须通过super关键字调用父类的构造函数B.子类无条件地继承父类不含参数的构造函数C.创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数D.子类可以继承父类的构造函数【答案】B.子类无条件地继承父类不含参数的构造函数(按现行题库答案;子类未定义构造方法时默认调用父类无参构造)2.下列关于类的定义中,a1,a2为接口,x,y为类,继承代码中错误的是()。A.publicinterfacea1extendsa2{...}B.publicclassxextendsy{...}C.publicxextendsa1{...}D.publicclassxextendsyimplementsa1{...}【答案】C.publicxextendsa1{...}(缺少class关键字)3.关于下列代码说法正确的是()。publicclassA{publicvoiddoit(){}publicStringdoit(){return"a";}publicdoubledoit(intx){return1.0;}}A.代码publicdoubledoit(intx){行,出现编译错误B.代码return"a";行,出现编译错误C.代码publicStringdoit(){行,出现编译错误D.无编译错误【答案】C.代码publicStringdoit(){行,出现编译错误(与publicvoiddoit()参数列表相同、仅返回值不同,不构成重载)4.在Java语言中,下列关于方法覆盖的描述,错误的是()。A.父类中声明为private的方法,对于子类是可以访问的B.子类的返回数据类型与父类要保持一致C.子类的参数信息与父类要保持一致D.子类的方法名称与父类要保持一致【答案】A.父类中声明为private的方法,对于子类是可以访问的(private成员子类不可直接访问)5.下列关于抽象类和接口的说法错误的是()。A.接口中的方法都必须加上public关键字B.抽象类在Java语言中表示的是一种继承关系C.在抽象类中可以没有抽象方法D.接口中的方法都不能被实现【答案】A.接口中的方法都必须加上public关键字⚠(接口方法默认即publicabstract,可省略;注意Java8后接口还有default默认方法,个别版本本题答案为D,以平台为准)6.下面语句中,把方法声明为抽象的公共方法是()。A.publicabstractvoidmethod(){}B.publicabstractvoidmethod();C.publicabstractmethod();D.publicvoidmethod()extendsabstract【答案】B.publicabstractvoidmethod();(无方法体,以分号结尾)7.内部类不可以声明在()。A.类的内部B.类的外部C.类的构造方法内部D.类的方法内部【答案】B.类的外部8.下列选项中,()修饰符修饰的变量是被同一个类生成的对象共享的。A.privateB.staticC.publicD.final【答案】B.static9.Java语言中用来抛出异常的关键字是()。A.throwB.tryC.catchD.finally【答案】A.throw10.()类是所有异常类的父类。A.IOExceptionB.ErrorC.ThrowableD.Exception【答案】C.Throwable11.自定义异常类时,可以继承的类是()。A.AssertionErrorB.ErrorC.AppletD.Exception及其子类【答案】D.Exception及其子类12.使用catch(Exceptione)的优点是()。A.执行一些程序B.只捕获个别类型的异常C.忽略一些异常D.捕获try语句块中产生的所有类型异常【答案】D.捕获try语句块中产生的所有类型异常13.Java语言中,一定会执行完的代码是()。A.tryB.throwC.catchD.finally【答案】D.finally14.下列()属于受控异常。A.NullPointerExceptionB.IOExceptionC.ClassCastExceptionD.Error【答案】B.IOException15.下列()异常属于非受控异常。A.SQLExceptionB.RuntimeExceptionC.SocketExceptionD.FileNotFoundException【答案】B.RuntimeException16.下列关于异常的说法正确的是()。A.使用关键字catch声明可能发生的异常B.抛出异常是指程序运行中出现异常情况时发生中断的现象C.抛出异常是异常处理的起点D.异常声明可以声明多个异常,中间用";"分开【答案】C.抛出异常是异常处理的起点(声明用throws、多个异常用逗号分隔)17.如下程序代码运行的结果是()。publicclassFoo{publicstaticvoidmain(String[]args){try{return;}finally{System.out.println("Finally");}}}A.FinallyB.运行时抛出异常C.编译失败D.代码正常运行但没有任何输出【答案】A.Finally(即使tr

温馨提示

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

评论

0/150

提交评论