【备考复习】智慧树第三次月考(答案+解析)

【明天考试加油!!^^】

1. 请列举Java线程生命周期中的五种状态不包括(D)
A.运行状态
B.消亡状态
C.就绪状态
D.独立状态

【考点:JAVA线程生命周期的五个状态——新建状态、就绪状态、运行状态、阻塞状态、死亡状态

【新建状态(new)】当一个线程类实例被创建时,线程处于新建状态,此时的线程已经被初始化,并分配了资源;

Thread t=new MyThread();

【就绪状态(Runnable)】已具备运行条件,进入线程队列,排队等待CPU。一旦获得CPU使用权,就可进入运行状态;

t.start();
//注意,如果是使用实现Runnable接口,启动有所不同
Ruanble r=new MyRunnable()//创建接口对象
Thread t=new Thread(a);//创建Thread对象,将a传进Thread()方法中
t.start//通过t来启动

【运行状态(Running)】当处于就绪状态的线程被调度获得CPU资源时,就进入了运行状态。定义在线程体中的run()方法被调用,从方法体的第一条语句开始顺序执行;

class my extends Thread(){//定义线程类去继承Thread
public my(){}
public void run(){}//重写run方法
}
//创建my类对象作为Thread对象的参数
//通过Thread的对象.start(),去启动线程
//一旦获得cpu使用权,则重写的run()方法就被调用,从方法体的第一句开始执行

【阻塞状态(Blocked)】处于运行状态的线程因事件的发生,而导致让出CPU使用权,并终止当前执行,进入阻塞状态——Block、等待、锁定(sleep()、wait()、I/O阻塞......)

【死亡状态(Terminated)】如果线程调用stop()方法或nun()方法正常执行完毕,或者线程抛出一个未捕获的异常(Exception)错误(Error),线程就进入死亡状态。一旦进入死亡状态,线程将不再拥有运行的资格,也不能再转换到其他状态。


2.Java程序中数据库连接的主要步骤不包括CB

A.创建连接Connection对象;利用Connection对象生成Statement对象;
B.若是执行查询语句,直接从Connection读取数据
C.创建数据源
D.利用Statement对象执行SQL语句,如查询、更新、插入、删除等

【考点:数据库连接的主要步骤——B选项应该是从Resultset中读取数据

  • 创建数据源——(使用JDBC-ODBC桥式驱动程序的必需);
  • 注册、加载特定的驱动程序
  • Class.forName("驱动程序名称");
  • 创建连接Connection对象
  • Connection conn = DriverManager.getConnection(url,“用户名", "密码"); 
  • 利用Connection对象生成Statement对象
  • Statement stmt = conn.createStatement( );  
  • 利用Statement对象执行SQL语句:如查询、更新、插入、删除等
  • ResultSet rs = stmt.executeQuery(“Select 语句”);
  • 若是执行查询语句,还要从ResultSet读取数据——next()、getXXX(___)
  • 关闭ResultSet、Statement、Connection等。

3. 在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序的特性称为(A)
A.重载
B.引出
C.重写
D.隐藏

【考点:方法重载的性质】

方法重载:方法名相同、参数类型与数目不同。

方法重写(覆盖):方法名相同、参数类型与数目相同、方法体不同,通常是在类与类继承的情况下使用。


4. 下列中整数型数组声明错误形式的是(C)
A.int    s[ ];
B.int    [ ]s;
C.int   [s];   
D.int[ ]  s;  

【考点:整数型数组声明形式——数组的大小必须是一个常量表达式,而不能是变量或未知的大小。因此,声明“int [s]”是不合法的

A. int s[]; 这是一个常见的声明整数型数组的方式,其中“[]”表示数组的维度可以在后面定义。

B. int []s; 这是另一种声明整数型数组的方式,其中“[]”表示数组的维度可以在后面定义。

D. int[] s; 这也是一个常见的声明整数型数组的方式,其中“[]”表示数组的维度可以在后面定义。

举例 :声明一个长度为5的整数型数组

  • 声明数组变量并指定长度
    int[] array = new int[5];
  • 声明数组变量并初始化元素
    int[] array = {1, 2, 3, 4, 5};
  • 声明数组变量并在后续代码中为其分配空间
    int[] array;
    array = new int[5]; // 先声明数组变量,后在代码中为其分配空间
  • 声明多维数组
int[][] multidimensionalArray = new int[3][4];
 // 声明一个3行4列的二维整数型数组


5.当“X extends Y”是正确时,下面哪是正确的?(A)

A.X、Y同时是类或者接口;
B.X是父类,Y是子类;
C.X是父接口,Y是子接口;
D.X是类,Y是一个接口;

【考点:继承关键字extends——“X extends Y”表示X继承于Y,可以类继承类,也可以接口继承接口,X表示子类(接口),Y表示父类(接口)


6. JDBC加载驱动程序正确的方法是(A)
A.Class.forName()
B.Class.forDrive()
C.Class.forManager()
D.Class.setDrive()

【考点:JDBC加载驱动程序—— Class.forName(),BCD这些方法是不存在的】


7. Java的java.awt包中定义了5种布局类,分别是(D)、BorderLayout、CardLayout、GridLayout和GridBagLayout。
A.3DLayout
B.PanleLayout
C.TestLayout
D.FlowLayout

Java  Swing的标准式布局管理器——FlowLayout(流布局)、BorderLayout(边界布局)、CardLayout(卡片布局)、GridLayout(网格布局)和GridBagLayout、BoxLayout(盒布局)】

  • BorderLayout: BorderLayout 是 Java Swing 中最常用的布局管理器之一。它将容器分为 5 个区域:北(North)、南(South)、东(East)、西(West)和中央(Center)。每个区域只能放置一个组件。如果某个区域没有放置组件,则该区域将不可见。BorderLayout 可以根据窗口大小自动调整组件的位置和大小。

  • CardLayout: CardLayout 是一种适用于多个组件需要在同一个区域中显示的布局管理器。它允许将多个组件“垂直”叠加在一个容器中,只有一个组件处于可见状态。通过切换可见组件,CardLayout 可以实现面板之间的快速切换,因此被广泛用于实现轮播图、向导和切换不同的操作区域等。

  • GridLayout: GridLayout 是一种网格布局管理器,可以将组件按行列排列在容器中。网格布局管理器的大小被设置为 M 行 N 列。每个空间中都可以容纳一个组件,每个组件的大小相等。如果没有足够的组件填充容器,则剩余的位置将留空。GridLayout 可以用于创建表格、网格、矩阵等结构化的布局。

  • GridBagLayout: GridBagLayout 是一种相对灵活的布局管理器,允许将组件放置在一个网格中的任意位置。每个组件都有一个 GridBagConstraints 对象,该对象包含了组件所在行列的位置、大小、对齐方式等信息。GridBagLayout 可以用于创建复杂的、非常灵活的布局。

  • FlowLayout: FlowLayout 是一种简单的流式布局管理器,可以将组件按顺序排列在容器中,如果容器宽度不足以放置所有的组件,则会自动换行。FlowLayout 可以根据容器的大小自动调整组件的大小和位置。它通常用于创建工具栏、按钮组、标签等需要按顺序排列的组件。

  • BoxLayout:可横向或纵向排列组件,可以指定它们应该是同一个宽度或者高度。

8. 创建两个字符串String s1="seig"、String s2="seig"对象,s1.equals(s2)比较两个字符串中对应的每个字符是否相等,返回的结果是(D)                 
A.right
B.false
C.wrong
D.true

【考点:equals()】

拓展:s1.equals(s2)———进行字符串之间的值比较,相同返回ture,不同返回false值。

s1==s2——进行字符串地址的比较。

String s1="2023"——存放到常量池中;

String s1=new String("2003");——在堆中生成地址;


9.语句 “int a[ ] = { 3, 9, 8};”属于数组的 (D) 初始化

A.动态
B.无状态
C.拟态
D.静态

【考点:数组的初始化形式】

  • 静态初始化:在定义数组的同时,为数组元素赋初值。
int[] arr1 = {1, 2, 3}; // 声明一个int类型数组,元素为1、2、3
String[] arr2 = {"hello", "world"}; // 声明一个String类型数组,元素为"hello"、"world"
  • 动态初始化:只指定数组的长度,而不指定数组元素的值,数组元素的默认值为0(对于基本类型)或null(对于引用类型)。在声明数组后,再为数组元素赋值。
int[] arr1 = new int[3]; // 声明一个int类型数组,长度为3
arr1[0] = 1; // 为数组第一个元素赋值
arr1[1] = 2; // 为数组第二个元素赋值
arr1[2] = 3; // 为数组第三个元素赋值
  • 静态初始化和动态初始化结合使用:
int[] arr = new int[]{1, 2, 3};
  • Java 8中新增的Stream流方式——将一个数字流转换为数组。
int[] arr = Stream.of(1, 2, 3).mapToInt(Integer::intValue).toArray();

需要注意的是,Java中的数组是定长的,一旦定义长度后,就不能再改变长度。因此,在动态初始化时,只能指定长度,不能指定数组元素的值。如果需要为数组元素赋初值,必须使用静态初始化或静态初始化和动态初始化结合使用的方式。

10.Java中,按流传输基本单位,分为两种:字节流和字符流(Unicode)。字节流中抽象类:InputStream负责输入流,OutputStream负责( A )。

A.输出流
B.字符流
C.视频流
D.输入流

考点:文件的输入输出流——这里放一张上课课件里的思维导图】


11. 创建线程可以通过继承( C )类和实现Runnable接口实现。
A.String
B.List
C.Thread
D.Collection

【考点:创建线程的方法——继承Thread类和实现Runnable接口】

继承Thread类步骤:

(1)创建一个继承Thread的子类,并重写run()方法,,该方法是线程的执行体,线程启动后会自动执行该方法中的代码。

public class MyThread extends Thread {
    public MyThread(){
        // 代码
    }
    public void run() {
        //代码
    }
}

(2)  创建MyThread的实例对象,然后调用start()方法启动线程

MyThread thread = new MyThread();
thread.start();

实现Runnable接口步骤:

(1)定义一个类,实现Runnable接口。重写Runnable接口中的run()方法

public class MyThread implements Runnable {
    public void run() {
        // 代码
    }
}

(2)需要创建MyThread的实例对象,然后将该对象传递给Thread类的构造方法中,最后调用start()方法启动线程

MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
thread.start();


12. Java应用程序中的静态方法用关键字(B)来声明。
A.const
B.static
C.public
D.final

【考点:static关键字——被static修饰 的方法可以用类去调用,无需再创建对象去调用


13. 数组一般要经过声明、创建、初始化等操作才能使用,初始化操作分为静态初始化和(_C_)初始化
A.拟态
B.自动
C.动态
D.无状态

【考点:数组的初始化操作——看第四题】


14.(B) 是类中的一种特殊方法,它没有返回值类型,其名称与类名称相同,主要作用是初始化新创建的对象
A.测试方法
B.构造方法
C.销毁方法
D.析构方法

【考点——构造方法的性质】


15.使用 (A)关键字声明的方法就称为抽象方法。抽象方法必须声明在抽象类中,但抽象类可以没有抽象方法,可以包含具体方法。

A.abstract
B.final
C.class
D.static

【考点——abstract关键字】


16. Java处理异常时,不管异常被不被处理,哪个块中(C)的代码一定会被执行?
A.final
B.try
C.finally
D.catch

【考点——异常处理】

try {
    // 可能发生异常的代码
} catch (Exception e) {
    // 异常处理代码
} finally {
    // 一定会执行的代码,例如关闭文件或释放资源等
}

17. 面向对象程序设计的三大特征是:封装、(D)、多态。
A.传递
B.重写
C.覆盖
D.继承

【考点——面向对象的三大特征】


18. 在Java中,(C)类是类层次结构的根类,所有的类的默认父类都是该类。
A.system
B.super
C.object
D.test

【考点——object】

在Java中,所有类的默认父类是Object类。Object类是类层次结构的根类,它包含所有对象都具有的通用方法,例如equals()、hashCode()、toString()等


19.Inputstream类表示8位的(C)。

A.输入字符流
B.输入字节流 
C.输出字节流 
D.输出字符流

【考点——文件的输入输出流——(回顾第10题)


20.在Java中为使用JDBC提供了一系列的概念,并有专门的类和接口与之对应。其中用来执行查询和更新操作的是(D)

A.ResultSet
B.DriverManager
C.Connection
D.Statement

【考点——数据库连接主要步骤之一——(回顾第2题)


21.异常处理是由try、(D)  和finally块三个关键字所组成的程序块。

A.final
B.teach
C.default
D.Catch


22. 接口是抽象方法和常量值的定义的集合,使用  (C)   关键字定义接口。
A.static
B.abstract
C.interface
D.class

【考点:接口】

  • 接口可以看做是一种特殊的抽象类,所有的方法都是抽象方法,方法体为空。
  • 接口使用 interface 关键字定义。
  • 接口可以被类实现,关键字是implements。
  • 接口中的方法默认为 public abstract,不允许定义成员变量,但允许定义常量。
  • 接口可以继承多个接口,形成接口的继承关系。在Java 8开始,接口可以定义默认方法和静态方法,这些方法可以有自己的实现。
  • 接口的主要作用是实现类之间的解耦。通过定义方法的签名,接口使得不同的实现类可以提供不同的实现从而在程序设计中提高了灵活性和可扩展性。在某些特定的场景中,接口还可以用作回调函数的实现
  • 使用接口可以帮助我们在代码设计和软件架构上做出良好的决策,提高代码的可重用性和可维护性。


23.Java通过java.io包中File类的众多方法来实现文件I/O操作。下面哪个方法 指定路径创建File对象 ?(C)

A.GetFile(String pathname)
B.GetPath(String pathname)
C.File(String pathname)
D.CPath(String pathname)

【考点:File对象创建的形式】

File file = new File("file.txt"); // 相对路径
File file = new File("/home/username/file.txt"); // 绝对路径

24.Java的集合接口框架中, ( A )接口,(又称列表)是一种有序集合,也称为序列;它允许存在重复的元素。

A.list
B.array
C.tree
D.map

【考点——集合接口框架——list】

Collection:表示一组元素,可能包括重复元素。

Set:表示一组不包含重复元素的元素。

List:表示一个有序的元素序列,可以包含重复元素。

Queue:表示一组按特定顺序排列的元素,通常使用队列或优先级队列实现。

Deque:表示一个双端队列,支持在队列的两端添加和删除元素。

(1)实现 Collection 接口的类称为集合类。常见的集合类有:

  • ArrayList:基于数组实现的可动态扩容的列表。
  • LinkedList:基于链表实现的列表,支持在任意位置插入和删除元素。
  • HashSet:基于哈希表实现的无序集合类。
  • TreeSet:基于红黑树实现的有序集合类。
  • LinkedHashSet:基于哈希表和链表实现的有序集合类

(2)Map 接口表示映射,即一组键/值对。与 Collection 系列接口不同,Map 接口并不继承自 Collection 接口,而是独立存在的。Map 接口的实现类包括:

  • HashMap:基于哈希表实现的无序映射。
  • TreeMap:基于红黑树实现的有序映射。
  • LinkedHashMap:基于哈希表和链表实现的有序映射。

25. 泛型将原本确定不变的数据类型参数化。其本质是参数化类型,即所操作的数据类型被指定为一个参数,示例: List <String> list = new ArrayList<String>,下面说法错误的是(A)
A.可以往集合添加整型数字 
B.从集合取元素出来自动转换为String类型
C.提高程序的安全性、可维护性、可靠性
D.这种泛型集合里面允许存放重复的元素

【考点:泛型】

泛型可以让类、接口和方法在定义时不指定具体使用的数据类型,而在使用时再确定数据类型

作用:

  • 类型安全:泛型可以在编译期间检查类型,避免了运行时类型转换错误的问题。

  • 可读性和重用性:泛型代码比非泛型代码更易读且更容易重用,可以减少代码量。

  • 高效性:泛型可以消除类型转换的开销,因为在编译时会将泛型代码转换成具体的类型。

注意:

  • 泛型类型参数不能是基本数据类型,只能是类或接口类型。

  • 泛型实例化时,类字面量后面需要带上尖括号,并在尖括号中指定具体的类型参数。在使用Diamond语法时<>可以省略。

  • 泛型类型擦除:在泛型代码被编译成字节码后,泛型类型参数都会被擦除掉,变成了普通的类或接口类型。这意味着在运行时无法获取泛型类型参数的信息。


26. Java允许在一个类的内部再定义一个不命名其它的类,这个类称为(A) 。
A.匿名内部类
B.外部类
C.起名内部类
D.异常类

【考点:匿名内部类】


28. Swing包含一套图形对象,用来辅助窗体完成与用户的互交功能,组件通常要添加到容器中。下面哪个不是Swing组件?(D)
A.JTextArea
B.JTextField
C.JRadioButton
D.InputStream  


29. 为了让一个类不允许被继承,可以用(C)关键字修饰这个类。
A.private
B.class
C.final
D.public


30.( B   )是Java Runtime Environment的简称,即Java运行环境
A.JDK
B.JRE
C.JAVAC
D.JPA


31. Java的数据类型分两大类:基本数据类型和(C)                   
A.字符类型
B.数字类型
C.引用数据类型
D.字符串类型


32. 事件委托模型中,要让事件侦听器能够处理相应事件,必须向(A )注册,并实现相应侦听接口的所有方法。
A.事件源
B.事件
C.抽象类
D.监听器实例

【考点:事件处理】

拓展:

(1)事件委托模型三要素

事件(Event)——用对象表示,它描述了发生什么事情。

事件源(Event source)——产生事件的组件。当这个事件源内部状态以某种方式改变时,就产生了相应事件对象。

事件处理(Event Process)——事件发生之后,要做什么事情

(2)事件处理的实现三步骤:

  • 创建侦听器类
class MyListener implements ActionListener {
    // 重写ActionListener接口中的事件处理方法actionPerformed()
    public void actionPerformed(ActionEvent e) {
			......
    }
}
  • 创建侦听器对象
MyListener listener = new MyListener();
  • 事件源注册侦听器对象
button.addActionListener(listener);

(3)在Java中,通过事件源对象的addXXXListener()方法来向其注册事件监听器。例如,要向一个按钮注册点击事件监听器,可以使用按钮的addActionListener()方法。


33. 在控制台的命令行模式中,执行 Java 字节码文件命令的是(C)
A.javac
B.jdk
C.java
D.jre

【考点:JAVA概述】

  • javac(编译)是Java编译器的命令行工具,用于将Java源代码编译成Java字节码文件。它的作用是将Java源代码转换为平台无关的字节码,以便在Java虚拟机(JVM)中运行。
  • JDK (Java Development Kit) 是Java开发工具包,包含了Java编译器、Java虚拟机、Java类库、开发工具和Java API文档等工具和资源。它的作用是为Java开发人员提供一个完整的开发环境,使他们可以开发、测试和部署Java应用程序和Java Applet。
  • java(运行 )是Java源代码文件的扩展名,它包含了Java程序的源代码。Java程序员使用文本编辑器编写Java源代码,并将其保存为.java文件。然后使用Java编译器将.java文件编译成Java字节码文件。
  • JRE (Java Runtime Environment) 是Java运行时环境,包含了Java虚拟机(JVM)和Java类库。它的作用是为Java应用程序提供运行环境,使Java应用程序能够在计算机上运行。与JDK不同,JRE不包含Java编译器和其他开发工具。


34. 如果容器组件p的布局是BorderLayout,则在p的下边中添加一个按钮b,应该使用的语句是(C)
A.p.add(b);
B.p.add(b,"North");
C.p.add(b,"South");
D.b.add(p,"North");


35. Java类中对象的类型转换有两种方式:(   B   ):称为向上类型转换。   
A.子类转换成子类
B.父类转换成子类
C.父类转换成父类
D.子类转换成父类
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值