2021-2022学年度第二学期21级Java程序设计理论模拟考试

说明:由于看pdf太难受了,重新编辑好放到博客上,方便自己复习,正确答案加粗标红

考试试卷
页码, 1/4
试卷名称:2021—2022学年度第二学期21级Java程序设计理论模拟考试(3、4、6班)期末考试考试课程:Java语言程序设计
考试总分:100分
试卷编号:270命题人:张文
审查人:教研室主任

目录

一、选择题(本题共30小题,共30.0分)

二、填空题(本题共5小题,共10.0分)

三、判断题(本题共10小题,共10.0分)

四、简答题(本题共4小题,共20.0分)

五、应用分析设计题(本题共3小题,共30.0分)



一、选择题(本题共30小题,共30.0分)

  1. (1.0分)在Java语言中,当定义一个变量为基本数据类型时,Java的JVM就为该变量分配内存,并给该变量赋初值,当定义一个复合数据类型变量时,该变量代表该类型对象的引用名,Java的JVM并不为对象创建内存空间,该变量引用的值为null,要创建对象实例,需要使用的关键字为()
    A. public; B. super; C. this;D. new;
  2. (1.0分)
    下列说法正确的是(
    A、 abstract可修饰类、属性、方法;
    B. final可修饰类、属性、方法;
    C、用final修饰的变量,在程序中可对这个变量的值进行更改;
    D、定义抽象方法需有方法的返回类型、名称、参数列表和方法体;
  3. (1.0分)String或StringBuffer类的对象在调用以下哪个方法时其自身会发生更改? ()
    A. String类的toUpperCase()方法;
    B. String类的replace(方法;
    C. StringBuffer类的length ()方法;
    D. String类的charAtO方法;

    E. StringBuffer类的reverse ()方法;
  4. (1.0分)Character流与Byte流的区别是()
    A.二者没有区别,可以互换使用;
    B、前者是块读写,后者是字节读写;
    C、前者带有缓冲,后者没有;
    D、每次读入的字节数不同;
  5. (1.0分)java中用来抛出异常的关键字是()
    A. catch;
    B、 try;
    C. throw;
    D. finally;
  6. (1.0分)流的传递方式是()
    A、并行的和串行的;
    B、无正确选项;
    C.并行的;

    D、串行的;
  7. (1.0分)下列说法中错误的一项是( )
    A.临界区必须使用syschronized标识;
    B.共享数据的访问不一定全部使用synchronized加锁;
    C、所有的对共享数据的访问都是临界区;
    D、共享数据的所有访问都必须使用synchronized加锁; 
  8. (1.0分) InetAddress类中哪个方法可实现正向名称解析? ()
    A. getHostAddress();

    B. getByName();
    C. isReachable();
    D. getHosstName();
  9. (1.0分)下面不是创建数组的正确语句是()
    A. float f[][]=new float[][6];
    B. float f[][]=new float[6][];
    C. float f[][]=new float[6][6];
    D. float[] f=new float[6];
  10. (1.0分)关于数组作为方法的参数时,向方法传递的是()
    A、数组的引用;
    B..数组的栈地址;
    C、数组的元素;
    D、数组自身;
  11. (1.0分)在Java中,一般菜单格式包含下列对象()
    A. JMenuBar. JMenu, JMenultem;
    B. JMenultem;
    C. JMenuBar;
    D. JMenu;
  12. (1.0分) JFrame默认的布局管理器是()
    A. BorderLayout;
    B. GridLayout;
    C. CardLayout;
    D. FlowLayout;
  13. (1.0分) Integer类是基本数据int的封装类,下列不能返回Integer实例对象的是()。
    A. new Integer(“ 123”):;
    B. Integer.valueOf(“123”);
    C. Integer.valueOf(123");;
    D. Integer.parselnt("123");
  14. (1.0分)
    下列关于线程的说法中,错误的是()
    A.线程就是程序:;
    B、多线程用于实现线程并发程序;
    C、多线程是指一个程序的多个执行流;
    D.线程是一个程序的单个执行流;
  15.  (1.0分)
    下列关于Socket类的描述中,错误的是()
    A. Socket类中定义的close()方法用于关闭输入输出流对象;
    B. Socket类中定义的getOutputStream(方法用于返回Socket的输出流对象:
    C. Socket类中定义的getlnputStream()方法用于返回Socket的输入流对象: ;
    D. Socket类中定义的getLocalAddress(方法用于获取Socket对象绑定的本地IP地址:
  16. (1.0分)
    下列不能获得Date对象的语句是()
    A. new Date(123345678L);;
    B. new SimpleDateFormatO.format();;
    C. new DateO;;
    D. Calendar.getlnstance(.getTime();;
  17.  (1.0分)
    以下代码的输出结果为()
    public class Pass{
            static int j = 20;
            public void amethod(int x){
                    x = x*2;
                    j = j*2;
            }
            public static void main(String args[]){
                    int i = 10;
                    Pass p = new Pass();
                    p.amethod(i);
                   System.out.println(i+" and "+j);
           }
    }
    A. 10 and 20:
    B. 10 and 40;
    C、错误:方法参数与变量不匹配;
    D. 20 and 40;
  18.  (1.0分)
    如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象()
    A. FilelnputStream;
    B. DataOutputStream;
    C. FileWriter;
    D. FileOutputStream;
  19. (1.0分)下面对于构造方法的描述,不正确的是?()
    A、方法名前面没有返回类型的声明;
    B.在方法中不能使用return语句返回一个值;
    C、当定义了带参数的构造方法,系统默认的不带参数的构造方法依然存在;
    D、方法名必须和类名相同;
  20.  (1.0分)
    在switch (expression)语句中, expression的数据类型不能是()
    A. short;
    B. double;
    C. char;
    D. byte;
  21. (1.0分) java程序运行时,用于判定一个对象实例的类型运算符是()
    A. equal;
    B、以上都对;
    C. instanceof;
    D.=;
  22.  (1.0分)下列属于能操作文件输入输出类的是()
    A. PipedlnputStream NIPipedOutputStream;
    B. FilelnputStream和FileOutputStream;
    C、全部都是;
    D. BufferlnputStream和BufferOutputStream;
  23.  (1.0分)下列不属于FilelnputStream输入流的read()成员函数的是()
    A. int read(byte b[J.intoffset,int len);
    B. int read(int line);
    C. int read);
    D. int read(byte b[D);
  24. (1.0分)
    在Java中不存在的布局方式是(
    A.流布局(FlowLayout);
    B.中央布局(CenterLayout);
    C.边界布局(BorderLayout);
    D、网络布局(GridLayout);
  25. (1.0分) Thread类位于下列那个包中? ()
    A. java.io;
    B. java.lang:
    C. java.awt;
    D. java.util;
  26. (1.0分)定义一个二维数组int[][]a=new int[5][6]);通过数组引用变量a可以调用的数组对象个数为? ()
    A.5个;B. 11个,C、7个;D、6个;
  27. (1.0分) Java中,创建对象使用的关键字为(
    A. is;B. this;C. uper;D. new;
  28.  (1.0分)
    下面关于Java的关键字this的描述,正确的是()
    A、同一个类的不同对象公用同一个this;
    B、this关键字是在对象内部指代对象自身的引用;
    C. this关键字和类关联,而不是和特定的对象关联;
    D. this关键字可以在类中的任何位置使用;
  29. (1.0分)下列选项中关于Java中super关键字的说法正确的是()。
    A. super关键字是在子类对象内部指代其父类对象的引用:;
    B、 super关键字不仅可以指代子类的直接父类,还可以指代父类的父类: ;
    C、子类通过super关键字只能调用父类的方法,而不能调用父类的属性:
    D.子类通过super关键字只能调用父类的属性,而不能调用父类的方法; ;
  30. (1.0分)在Java中,关于final关键字的说法,正确的有()。
    A、如果修饰方法,则该方法不能在子类中被覆盖; ;
    B、如果修饰变量,则一旦赋了值,就等同一个常量: ;
    C.如果修饰类,则该类只能被一个子类继承: ;
    D.如果修饰方法,则该方法所在的类不能被继承: ;

二、填空题(本题共5小题,共10.0分)

  1.  (2.0分)
    当一个对象被当成垃圾从内存中释放时,它的 finalize 方法会被自动调用。
  2. (2.0分)
    在Thread类中,提供了一个start()方法,该方法用于开启一个新线程,当新线程启动后,系统会自动调用, run() 方法。
  3. (2.0分)
    Java中的字符输出流都是抽象类 Writer 的子类
  4. (2.0分)
    Java中单列集合的顶层父接口是( Collection 
  5. (2.0分)
    javac.exeljava.exe两个可执行程序存放在JDK安装目录的 bin 目录下。

三、判断题(本题共10小题,共10.0分)

  1. (1.0分)如果方法的参数是基本数据类型,则直接将实参的值传递给方法体,方法内对形参的任何修改,不会改变实参的原来值。
    正确
  2. (1.0分)数组一旦创建,其大小不能再改变。
    正确
  3. (1.0分)
    Java中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的无参构造方法。()
    正确
  4. (1.0分)如果一个File对象表示的目录下有文件者有子目录,调用delete()方法也可以将其删除。
    错误
  5. (1.0分)
    Set接口的实现类可以添加相同的元素。()
    错误
  6. (1.0分)
    Map接口的集合,可以将同一个对象以不同主键加入。
    正确
  7. (1.0分)声明构造方法时,不能使用private关键字修饰。()
    正确
  8. (1.0分)同步代码块中的锁对象可以是任意类型的对象。()
    正确
  9. (1.0分)由于UDP是面向无连接的协议,可以保证数据的完整性,因此在传输重要数据时建议使用UDP协议。(.).
    错误
  10. (1.0分)Java二维数组是存数组的数组,如果定义int[][] a=((1,2),(3,4,5),(6,7,8,9),(1));那么该语句在内存种创建的数组对象个数为5个。()
    正确

四、简答题(本题共4小题,共20.0分)

  1. (5.0分)什么是方法重载?【原题号141】
    参考答案:方法重载指的是在一个类中可以声明多个同名的方法,而方法中参数的个数或者数据类型不一致。调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。
  2. (5.0分)定义数组引用变量为int[][]a;变量a已经赋值了创建的数组对象,请回答数组a的长度是多少?数组a的最后一个元素的下标是什么?【原题号203】
    参考答案:
    (1)a数组的长度为a.length
    (2)a的最后一行数组为a.length-1,该数组的长度为a[a.length-1].length;因此,数组a的最后一个元素的引用变量为: a[a.length-1][a[a.length-1].length-1]。
  3. (5.0分)为了从标准输入中使用BufferedReader流读取数据,请你写出创建流的代码。【原题号205】
    参考答案:答:BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  4. (5.0分)给一个对象的成员变量赋值的方式有那几种?【原题号206】
    参考答案:
    答:一般有三种,
    (1)通过构造方法给成员变量赋值;
    (2〉通过seting成员方法给成员变量赋值;
    (3)  直接给可以访问对象成员变量赋值。

五、应用分析设计题(本题共3小题,共30.0分)

1. (10.0分)设计一个专门用于处理实际项目中提供的数据格式不正确问题的编译异常类型
(checkedException),要求在使用输入的内容时,必须对数据进行检查,如果数据不正确,利用异常处理机制进行消息传递。假设某个实际应用在一个类型定义中有一个成员方法需要接收文件名为java源文件,请你写出对于文件名进行判定的一段代码。你需要完成的设计如下:
(1)实际应用需要对提供的Java源文件进行编译和运行,请你设计一个命名为NOtJavaFileException的类型,异常消息内容为“非Java源文件”;
(2)完善下面FileTool类型中文件编译方法fileCompile的定义(异常所在的包不考虑);public class FileTool(
public static void fileCompile(Stimg filename)
/仅写出文件格式判定代码段,其他处理代码不需要完成
(3)设计一个程序FileCmpTest,完成对文件名为“HelloWorld.java”和“HelloWorld.class”的文件进行编译,要求使用try—catch方式处理异常。
(4)写出程序的运行结果。

参考答案:
(1)(30%分)异常类型设计如下:
public class NotJavaFileException extends Exception{
        public NotJavaFileException(){
                super("非Java源文件");

        }
}
(2)(30%分)类型设计如下:

public class FileTool{
        public static void fileCompile(String filename)throws NotJavaFileException{

                if(!filename.endsWith(".java")){
                        throw new NotJavaFileException();

                }
        }

}
(3)(30%分)FileCmpTest设计如下:

public class FileCmpTest{
        public static void main(String[] args){

                String file1="HelloWorld.java".
                String file2="HelloWorld.class".

                try {
                        FileTool.fileCompile(file1);

                        FileTool.fileCompile(file2);
                }catch(NotJavaFileException e){

                        System.out.println(e.getMessage());

                }

        }

}
(4)(10%分)程序的运行结果:根据处理方法不同结果不一致,有异常输出即可。

2. (10.0分)在Java图形界面应用程序开发中,在窗体中定义了一个组件JButton,定义为JButton jbl=newJButton(“效果测试”);当用户点击该按钮时,需要在控制台标准输出该按钮的名称,请你根据要求完成下列问题:”
(1)设计一个满足要求的该按钮的监听器组件;(2)写出将该监听器安装到该组件的代码。

2. ( 10.0分) [原题号176]参考答案:
答: (1) (70%分) 监听器为:
public class MyActionListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
                JButton jb=(JButton)e .getSource();
                System.out.println(jb. getText));

        }

}
(2) (30%分)安装监听器的代码为: jbl.addActionListener(new MyActionListener());

3. (10.0分)怀化学院在线考试系统需要提供学生的基本信息,在基本信息中包含学生的照片信息,在上传学生的基本信息(学号、姓名、性别、入学年份、班级)后,再上传学生的照片,上传学生照片的文件规定为文件名要符合“学号+姓名”的规则,如0906403048张三.jpg,而教务办提供的学生照片命名为"学号.jpg“文件,所有照片在文件夹“studentpicture21”中,学生基本信息在一个文本文件中,文件名为students21.txt文件,文件内容格式如下(学生全部信息在该文件,下面仅提供样例):
学号,班级代码,姓名,性别,入学时间
1800120438,2106406,刘小晴,男,2018
2100130601,2106406,李金媛,女,2021
2100130602,2106406,罗兰,女,2021
给你的问题是,根据提供的照片(在文件夹studentpicture21)和学生信息文件students21.txt,解决上传学生照片的文件要求,即照片的文件名必须是“学号+姓名.jpg”,请你根据学习的Java程序设计知识,编写一个简单的程序完成该实际问题。要求给出如下回答:
(1)写出你的解决问题的思路;(2)写出实现的代码。

3. ( 10.0分) [原题号177]参考答案:

答: (1) (30%分)解决问题的思路为:通过读学生信息文件提取学生的学号和姓名,然后创建一个File文件对象对应到照片文件夹中以学号命名的照片文件,判定文件是否存在,如果文件存在,将给文件更名为“学号+姓名.jpg”文件。
(2) ( 70%分)程序实现代码如下:
import java.io.*; 
public class ImputImage {
        public static void main(String[] args) {
                String namefile= =" students21.txt";
                String picdir="studentpicture21";
                BufferedReader bin=new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(namefile)));
                while(bin.ready()) {

                        String line=bin.readLine();
                        String[] items=line .split(","),
                        File f=new File(picdir,tems[0]+"jpg");
                        if(f.exists()) {
                                String newname=items[0]+items[2]+".jpg";
                                System.out. println(f.renameTo( new File( picdir,newname));
                        } catch (FileNotFoundExceptione) {
                                e.printStack'Trace();
                        } catch (IOExceptione) {
                                e.printStackTrace();

                        }

                }

        }

}

你可能感兴趣的:(Java语言程序设计实训题目,java)