logo资料库

桂林理工大学java程序设计期末试卷.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
桂林理工大学考试(考查)试卷 (2017~ 2018 学年度 第 2 学期) 课程名称:java 程序设计 主要命题者:(填写在试卷第一页背面右上角) 课程序号:380160 考核专业班级:软件 16 级 [A]卷 题号 一 二 三 四 五 六 七 八 九 十 总分 得分 一、简答题(每题 4 分、共 24 分) 1、比较方法重写与方法重载,构造方法可以重载吗? 2、如何使用输入、输出流克隆对象? 3、简述类变量和实例变量的区别 4、简要说说 java 多线程机制中为什么要引入同步机制。 5、简述上转型对象及接口回调 6、比较抽象类与接口并说明面向抽象编程的目的与核心是什么? 1. 答:方法重载是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不 同。 而方法重写也叫方法覆盖,是指子类中定义一个方法,这个方法的类型和父类的方法 的类型一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类 型和父类的方法完全相同。 可以。 2. 答:使用对象流很容易得获取一个序列化对象的克隆,只需将该对象写入到对象输出流, 那么用对象输入流读回的对象一定是原对象的一个克隆。 3. 答:一个类通过使用 new 运算符可以创建多个不同的对象,不同的对象的实例变量将被 分配不同的内存空间。所有对象的类变量都分配给相同的一处内存,对象共享类变量。 4. 答:Java 使我们可以创建多个线程,在处理多线程问题时,我们必须注意这样一个问题: 当两个或多个线程同时访问同一个变量,并且一个线程需要修改这个变量。我们应对这样的 问题作出处理,否则可能发生混乱。 5. 答:对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属 性和功能。而接口回调指:可以把实现某一接口的类创建的对象的引用赋给该接口声明的接 口变量中。那么该接口变量就可以调用被类实现的接口中的方法。 6. 答:接口体中只有抽象方法,没有普通方法;抽象类既可以重写接口中的方法,也可以 直接拥有接口中的方法。 面向抽象编程目的是为了应对用户需求的变化,核心是让类中每种可能的变化对应地交给抽 象类的一个子类类去负责,从而让该类的设计者不去关心具体实现。
二、程序填空题(每空 2 分、共 16 分) 1.下面程序是定义一个 Student 类,在空白处填入适当语句补充完整。 class student{ String name; int age; int chinese int math int english; int total(){ ;//定义一个整型属性 chinese return math+english+chinese ;//返回 chinese、math 和 english3 个整 型属性的总和。 }} 2.以下为一个 java 的完整程序,它定义了一个类 Car,并在程序中创建了一个该类的对象 DemoCar,调用该对象的 set_number 方法设置车号属性为 3388,调用该对象的 show_number 方法输出车号。 //Car.java class Car{ int car_number; void set_number(int car_num) { car_number=car_num ;} void show_number(){ System.out.println(“My car No. is :”+car_number); } } } //CarDemo.java class CarDemo{ public static void main(String args[]){ Car Democar= new Car() DemoCar. set_number(3388) ;//构造一辆车 ; //设置 车号为 3388 } } DemoCar. show_number() ; //显示车号 3.以下程序的功能是将文件 a.txt 复制到 b.txt,在空白处填入适当的内容。 import java.io.*; public class C { public static void main(String[] args) throws IOException { File inputFile = new File(“a.txt”) ; File outputFile = new File(" b.txt"); FileReader in = new FileReader(inputFile);
FileWriter out = new FileReader(outputFile) ; int c; while ( c in.close(); out.close(); } } ) out.write(c); 三、编程应用题(以下程序必须要在机器上运行结果,将源代码写到答卷上、输出结果截图 到答卷上,两者均无误方可得满分。选做其中三题。 每题 20 分) 1、桂工同学你好,忘记密码、不要惊慌失错,请登陆我们的网站,我们有办法。 编写一个 java 应用程序, (a) 输出把错别字替换为正确用字的字符串。 (b) 将“桂工同学”替换为自己的姓名。 源程序如下: import java.lang.*; public class one_ { public static void main(String[] args) { // TODO Auto-generated method stub String s = "桂工同学你好,忘记密码、不要惊慌失错,请登陆我们的网站,我 们有办法。"; String s1 = "唐文艳"; String s2 = "措"; String s3 = "录"; s=s.replaceAll("桂工同学",s1); s=s.replaceAll("错",s2); s=s.replaceAll("陆",s3); System.out.println(s); } } 2、设计一个动物声音“模拟器”,希望模拟器可以模拟各种动物的叫声,要求如下:必须使 用接口或者抽象类;至少模拟两种以上的动物种类;类名方法名定义友好; 源程序如下: Animal.java
abstract class Animal { abstract void cry(); abstract String getAnimalName(); } Simulator.java class Simulator { void playSound(Animal animal) { System.out.print("现在播放"+animal.getAnimalName()+"类的声音:"); animal.cry(); } } Dog.java class Dog extends Animal { void cry() { System.out.println("汪汪...汪汪"); } String getAnimalName() { return "狗"; } } Cat.java class Cat extends Animal { void cry() { System.out.println("喵喵...喵喵"); } String getAnimalName() { return "猫"; } } Application.java class Application { public static void main(String args[]) { Simulator simulator = new Simulator(); simulator.playSound(new Dog()); simulator.playSound(new Cat()); } }
3、调用类 java.lang.Math 的成员方法“public static double random()”运算下面表达 式 10000 次, (int) (Math.random()*20+0.5); 统计其中生成的整数 0,1,2,…,20 的个数分别是多少,并输出统计结果。 源代码如下: import java.lang.Math; public class three { public static void main(String[] args) { // TODO Auto-generated method stub int a[] = new int[21]; for(int i = 1;i<=10000;i++){ int n=(int)(Math.random()*20+0.5); if(n>=0&&n<=20){ a[n]++; } } for(int i=1;i<=20;i++){ System.out.println(i+"的个数为:"+a[i]); } } } 4、编写一个完整的 Java 体要求如下: Application 程序。包含接口 ShapeArea,类 Circle、Test,具 (1)接口 ShapeArea:
接口方法 double double getArea():求一个形状的面积 getPerimeter ():求一个形状的周长 (2)类 Circle: 实现 ShapeArea 接口,并有以下属性和方法: ① 属性 radius: double 类型,表示圆的半径 ②方法 r):构造函数 Circle(double toString()方法 : 输出圆的描述信息,如“radius=1.0, perimeter=6.28, area=3.14” (3)Test 类作为主类要完成测试功能 ①生成 Circle 对象 ②调用对象的 toString 方法,输出对象的描述信息 源代码如下: ShapeArea.java public interface ShapeArea { double getArea(); double getPerimeter(); } Circle.java public class Circle implements ShapeArea{ double radius; Circle(double r){ radius = r; } void toString(Circle c){ System.out.println("radius="+radius+",perimeter="+getPerimeter()+",area="+ getArea()); } public double getArea(){ return 3.14*radius*radius; } public double getPerimeter(){ return 2*3.14*radius; } } Test.java public class Test { public static void main(String[] args) {
// TODO Auto-generated method stub Circle circle; circle = new Circle(3.0); circle.toString(circle); } }
分享到:
收藏