Java基础题库整理练习附答案(Java基础案例教程1

您所在的位置:网站首页 java语言题库 Java基础题库整理练习附答案(Java基础案例教程1

Java基础题库整理练习附答案(Java基础案例教程1

2023-06-28 09:43| 来源: 网络整理| 查看: 265

第1章 *Java开发**入门* *习题*

一、 填空题

在classpath环境变量的配置中,“.”代表的是【 】。

JDK【 】版本后,classpath环境变量可以不用配置。

将Hello.java文件编译为class文件,需要键入【 】命令。

java.exe程序是用来解析【 】文件的。

SUN公司将Java划分为三个技术平台,它们分别是【 】、【 】和【 】。

二、 判断题

可以通过鼠标右键单击包名的方式创建一个Java类。( )

只能使用Eclipse开发Java程序。( )

配置classpath环境变量的目的是为了查找java文件。( )

JDK5以后可以不用配置classpath环境变量。( )

main()函数是java程序的执行入口。( )

三、 选择题

下列选项中,可以正确配置classpath的命令是( )。

A: set classpath =C:\Program Files\Java\jdk1.7.0_15\bin

B: set classpath : C:\Program Files\Java\jdk1.7.0_15\bin

C: classpath set =C:\Program Files\Java\jdk1.7.0_15\bin

D: classpath set : C:\Program Files\Java\jdk1.7.0_15\bin

下面关于path环境变量的说法中,错误的是( )。

A: path环境变量是系统环境变量中的一种,它用于保存一系列的路径

B: 在命令行窗口输入"setpath"命令,可以查看当前系统的path环境变量

C: 在命令窗口对环境变量进行的任何修改只对当前窗口有效,一旦关闭窗口,所有的设置都会被取消

D: 配置系统环境变量时以英文半角逗号(,)分隔每一个路径

下面关于Java程序的描述中,错误的是( )。

A: Java程序运行时,必须经过编译和运行两个步骤

B: .java格式的源文件是用来编译的

C: .class格式的文件是用来运行的

D: 不同操作系统上的Java虚拟机是相同的

下面关于javac命令作用的描述中,正确的是( )。

A: 可以执行java程序

B: 可以将编写好的Java文件编译成.class文件

C: 可以把文件压缩

D: 可以把数据打包

下列关于Java特点的描述中,错误的是( )。

A: Java语言不支持指针

B: Java具有自动垃圾回收的机制

C: Java只能运行在Window和Linux平台

D: Java允许多个线程同时执行

四、 简答题

请简述一下Java语言的特点。 *答案*

一、 填空题

当前目录

5或1.5

javac Hello.java

.class (或字节码)

JavaSE(Java平台标准版);JavaME(Java平台小型版);JavaEE(Java平台企业版)

二、 判断题

三、 选择题

A

D

D

B

C

四、 简答题

1、是一种相对简单的编程语言2、是一个纯粹的面向对象程序设计语言3、安全性较高4、跨平台能力强5、支持多线程。

第2章 *Java编程基础* *习题*

一、 填空题

定义一个方法时,要有访问修改符、返回值类型、方法名和【 】。

方法重载要满足两个条件,一是【 】相同,二是【 】不同。

if语句中的条件语句只能是【 】类型。

switch语句中,case后面的值必须是【 】。

当break语句出现在嵌套循环中的内层循环时,它只能跳出【 】。

二、 判断题

在存储同学姓名时,可以使用数组解决多个数据的存储问题。( )

break语句可以在循环语句或者switch条件语句中使用。( )

continue语句只能在循环语句中使用。

一个类中可以定义多个同名的方法,只要他们的返回值类型不同即可。( )

数组的排序算法只有冒泡排序这一种。( )

三、 选择题

下列选项中,哪一个不能通过编译( )。

A: byte a=1; B: short b=100;

C: int c=‘a’; D: long d=8888888888;

下面浮点型数据的定义中,错误的是( )。

A: float a=1.23; B: double b=1.23;

C: double c=1.5E4; D: float d=‘a’;

下列关于int类型变量的定义,错误的是( )。

A: int a=10; B: int b,c=20;

C: int d=e=30; D: int f=40;

下面关于整数类型的描述中,错误的是( )。

A: byte是java中的整数类型,它的取值范围是-127到128

B: java中的整数有正负之分

C: bit是java中的整数类型,它代表的是1个字节

D: int是java中的整数类型,它在内存中占4个字节

表达式7%(-3)的运算结果为( )。

A: -2 B: -1 C: 2 D: 1

四、 简答题

请简述运算符“&”和“&&”的区别。 *答案*

一、 填空题

参数列表

方法名、参数列表

布尔

常量

内层循环

二、 判断题

三、 选择题

D

A

C

C

D

四、 简答题

运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。当运算符“&”和“&&”的右边为表达式时,两者在使用上还有一定的区别。在使用“&”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用“&&”进行运算,当左边为false时,右边的表达式则不会进行运算,因此“&&”被称作短路与。

第3章 *面向对象(上)* *习题*

一、 填空题

在Java中,对象是通过【 】创建出来的。

构造方法的名称必须和【 】保持一致。

this关键字可以访问一个类的【 】变量,解决与局部变量名称冲突的问题。

一个类中可以定义多个构造方法,只要每个构造方法的【 】不同,即可实现重载。

int类型的成员变量初始化值为【 】。

二、 判断题

在Java中使用String类型的实例对象表示一个字符串。( )

在成员方法中出现的this关键字,代表的是调用这个方法的对象。( )

在成员方法中可以使用“this([参数1,参数2…])”来调用其它的构造方法。( )

垃圾回收器会随时将垃圾对象从内存中释放。( )

静态代码块中可以对静态成员变量进行赋值。( )

三、 选择题

下列关于this的说法中,错误的是( )

A: 只能在构造方法中使用this调用其它的构造方法,不能在成员方法中使用

B: 在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次

C: this关键字可以用于区分成员变量与局部变量

D: this可以出现在任何方法中

当一个类中成员变量和局部变量重名时,可以使用哪个关键字进行区分( )

A: super B: this C: public D: true

下面关于静态变量的描述,正确的是( )

A: 静态变量可以定义在类中的任意位置

B: 静态变量一但被赋值不能被修改

C: 静态变量可以被类直接调用,因此可以说静态变量的生命周期与实例无关

D: 以上都不对

下列关于构造方法的描述中,错误的是( )

A: 构造方法的方法名必须和类名一致

B: 构造方法不能写返回值类型

C: 构造方法可以重载

D: 构造方法的访问权限必须和类的访问权限一致

请阅读下面的代码

String s1=new String(“abc”);

String s2=”abc”;

System.out.println(s1==s2);

System.out.println(s1.equals(s2));

下列选项中,程序的输出结果为( )

A: false、true

B: false、false

C: true、true

D: true、false

四、 简答题

请简要说明静态变量有哪些特点。 *答案*

一、 填空题

类名

成员

参数类型或参数个数

0

二、 判断题

三、 选择题

D

B

C

D

A

四、 简答题

静态变量可以使用“类名.变量名”的方式调用;静态变量会被类的实例对象所共享;静态变量随着类的加载而加载到内存静态区;静态变量随着类的消失而消失。

第4章 *面向对象(下)* *习题*

一、 填空题

【 】类及其子类用于表示运行时异常。

Java中的异常分为两种,一种是【 】另外一种是运行时异常。

一个类如果要实现一个接口,可以通过关键字【 】来实现这个接口。

在Java中一个接口可以继承多个接口,继承的接口之间使用【 】隔开即可。

Object类中的equals方法的参数是【 】类型的参数。

二、 判断题

Exception类称为异常类,它表示程序本身可以处理的错误,在开发Java程序中进行的异常处理,都是针对Exception类及其子类。( )

Error类称为错误类,它表示Java运行时产生的系统内部错误或资源耗尽的错误,是比较严重的,仅靠修改程序本身是不能恢复执行的。( )

在try…catch语句中,try语句块中用于存放可能发生异常的语句。( )

protected修饰的方法,只能给子类使用。( )

自定义的异常类必须继承自Exception或其子类。( )

三、 选择题

已知类的继承关系如下:

class A

class B extends A

class C extends A

则以下语句能通过编译的是( )

A: A a=new B();

B: C c=new B();

C: C c=new A();

D: B b=new C();

下列关于protected的说法中,正确的是( )

A: protected修饰的方法,只能给子类使用

B: protected修饰的类,类中的所有方法只能给子类使用

C: 如果一个类的成员被protected修饰,那么这个成员既能被同一包下的其它类访问,也能被不同包下该类的子类访问

D: 以上都不对

下列关于对象的类型转换的描述,说法错误的是( )

A: 对象的类型转换可通过自动转换或强制转换进行

B: 无继承关系的两个类的对象之间试图转换会出现编译错误

C: 由new语句创建的父类对象可以强制转换为子类的对象

D: 子类的对象转换为父类类型后,父类对象不能调用子类的特有方法

下列关于匿名内部类的描述,错误的是( )

A: 匿名内部类是内部类的简化形式

B: 匿名内部类的前提是必须要继承父类或实现接口

C: 匿名内部类的格式是"new父类(参数列表)或父接口(){}"

D: 匿名内部类可以有构造方法

一个具体类实现接口时,需要重写接口中的( )

A: 成员变量

B: 局部变量

C: 成员方法

D: 构造方法

四、 简答题

编译时异常的处理方案有几种?分别是什么? *答案*

一、 填空题

RuntimeException

编译时异常

implements

英文逗号

Object

二、 判断题

三、 选择题

A

C

C

D

C

四、 简答题

有两种。

方式1:使用try…catch语句对异常进行捕获。

方式2:使用throws关键字声明抛出异常调用者对其处理。

第5章 *Java API* *习题*

一、 填空题

通过循环完成查找,直到找不到子串为止,此时indexOf()方法返回值为【 】。

可以使用【 】类的contains()方法,判断整串中是否包含子串。

JAVA中 int类型对应的包装类是【 】。

针对字符串的操作,Java提供了两个字符串类,分别是String和【 】。

System类的【 】静态方法可以启动垃圾回收器。

二、 判断题

在JDK5.0中,switch语句可以支持字符串类型。( )

StringBuffer类的append()方法可以将数组元素和空格连接成字符串。( )

ceil()、floor()和round()方法返回的都是double类型的数。( )

java.util.Random的nextInt( )方法会生成一个正整数类型的伪随机数。( )

JAVA中拆箱是指将引用数据类型的对象转为基本数据类型。( )

三、 选择题

下面哪个选项可以获取Runtime类的实例( )

A: Runtime r = new Runtime();

B: Runtime r = Runtime.getRuntime();

C: Runtime r = Runtime.getInstance();

D: 以上选项都不能获取Runtime实例

下列选项中,可以正确实现String初始化的是( )

A: String str = “abc”;

B: String str = ‘abc’;

C: String str = abc;

D: String str = 0;

若double val = Math.ceil(-11.9);,则val的值是( )

A: 11.9

B: -11.0

C: -11.5

D: -12.0

下列关于System类的描述中,错误的是( )

A: System类是final关键字修饰的类,它不能被其他类所继承

B: System类不能被实例化

C: System类中定义了许多方法,但是没有定义字段

D: System类中提供了获取当前系统属性的方法

下列选项中,对Math.random()方法描述正确的是( )

A: 返回一个不确定的整数

B: 返回0或是1

C: 返回一个随机的double类型数,该数大于等于0.0小于1.0

D: 返回一个随机的int类型数,该数大于等于0.0小于1.0

四、 简答题

在Java中可以通过哪些方式对String进行初始化? *答案*

一、 填空题

-1

String

Integer

StringBuffer()

gc()

二、 判断题

三、 选择题

B

A

B

C

C

四、 简答题

在操作String类之前首先需要对String类进行初始化,在Java中可以通过以下两种方式对String类进行初始化:

1、使用字符串常量直接初始化一个String对象。

2、使用String的构造方法初始化字符串对象。

第6章 *集合类* *习题*

一、 填空题

Set接口主要有两个实现类,分别是HashSet和【 】。

Set接口和List接口一样,同样继承自【 】接口。

Hashtable类有一个子类【 】,主要用来存储字符串类型的键和值。

ArrayList内部封装了一个长度可变的【 】。

LinkedList的底层是由【 】结构实现的。

二、 判断题

HashSet是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。( )

可以通过Scanner类的nextInt()方法来接受控制台的信息。( )

Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value。( )

Set接口中元素是有序的。( )

HashSet是Set接口的一个实现类,它所存储的元素是可重复的,并且元素都是无序的。( )

三、 选择题

下列集合类中,能和IO流结合使用的是( )。

A: HashMap B: TreeMap

C: Properties D: SimpleBindings

下列关于泛型的说法中,错误的是( )。

A: 在对泛型类型进行参数化时,类型参数的实例必须是引用类型,不能使基本类型

B: ArrayList中的E称为类型变量或类型参数

C: 泛型中的通配符?用于表示任意类型

D: 泛型是JDK6.0的新特性

下列集合中,不属于Collection接口的子类的是( )

A: ArrayList B: LinkedList C: TreeSet D: Properties

下面关于List集合的描述中,哪一个是错误的( )

A: List集合是有索引的

B: List集合可以存储重复的元素

C: List集合存和取的顺序一致

D: List集合没有索引

执行下面程序,其运行结果是( )

public class Example {

public static void main(String[] args) {

​ ArrayList list = new ArrayList(); // 创建ArrayList集合

​ list.add(“Tom”); // 向该集合中添加字符串

​ list.add(“Jerry”);

​ Iterator it = list.iterator(); //获取迭代器

​ it.next();

​ it.next();

System.out.println(it.next());

}

}

运行以上程序,输出结果是( )

A: Tom B: null C: “” D: 以上结果都错误

四、 简答题

简述一下,为什么ArrayList的增删操作比较慢,查找操作比较快。 *答案*

一、 填空题

TreeSet

Collection

Properties

数组

链表

二、 判断题

三、 选择题

C

D

D

D

D

四、 简答题

由于ArrayList集合的底层是使用一个数组来保存元素,在增加或删除指定位置的元素时会导致创建新的数组效率比较低,因此不适合做大量的增删操作。但这种数组的结构允许程序通过索引的方式来访问元素,因此使用ArrayList集合查找元素很便捷。

第7章 *IO(输入输出)* *习题*

一、 填空题

字符流有两个抽象的顶级父类,分别是Reader和【 】。

File类delete()方法的返回值是【 】类型。(答案写中文)。

IO流有很多种,按照操作数据的不同,可以分为【 】和字符流。

InputStream类中专门用于读取文件中数据的子类是【 】。

JDK中提供的两个转换流分别是【 】和OutputStreamWriter。

二、 判断题

BufferedReader和BufferedWriter是具有缓冲功能的流,使用它们可以提高读写效率。( )

File类中的list()方法用于得到所有子目录下的File类型对象。( )

如果File对象表示的目录下有文件或者子目录,调用delete()方法可以将其直接删除。( )

IO流有很多种,按照数据传输方向的不同可分为输入流和输出流。( )

字节流只能用来读写二进制文件。( )

三、 选择题

下列说法中,关于在Java中删除目录说法错误的是( )

A: 在Java中删除目录是从虚拟机直接删除不走回收站,文件将无法恢复

B: File类的delete()方法不允许对还有子文件的目录直接删除

C: delete()方法可以删除一个指定的文件

D: 在删除目录时,先删除这个目录再删除该目录下的所有文件

下列选项中,哪一个不是InputStream的直接子类( )

A: ByteArrayInputStream

B: FileInputStream

C: BufferedInputStream

D: PipedInputStream

以下选项中,哪个是FileInputStream的父类( )

A: File

B: FileOutput

C: OutputStream

D: InputStream

下列关于java.io.FileOutputStream的说法错误的是( )

A: java.io.FileOutputStream用来进行文件的写入操作。用它提供的方法可以将指定文件写入本地主机硬盘上。

B: 通过类File的实例和者一个表示文件名称的字符串可以生成文件输出流。在流对象生成的同时文件被打开。但还不能进行文件读写。

C: java.io.FileOutputStream可以读取字节文件也可以读取字符文件。

D: java.io.FileOutputStream一次只能读取一个字节的内容。

阅读下列代码

import java.io.*;

public class Example{

public static void main(String[] args) throws Exception {

OutputStream out = new FileOutputStream("itcast.txt ", true);

String str = “欢迎你!”;

byte[] b = str.getBytes();

for (int i = 0; i < b.length; i++) {

​ out.______(b[i]);

}

out.close();

}

}

请说出下划线上,填写的方法名称( )

A: read()

B: write()

C: close()

D: available()

四、 简答题

编写一个程序,遍历D盘下所有的文件,将格式为avi的文件的绝对路径打印出来。

提示:

(1)使用遍历文件的方式,遍历D盘中所有的文件

(2)判断遍历出来的文件名是否以”avi”结尾。

*答案*

一、 填空题

\1. Writer

\2. 布尔

\3. 字节流

\4. FileInputStream

\5. InputStreamReader

二、 判断题

\1. 对

\2. 错

\3. 错

\4. 对

\5. 错

三、 选择题

\1. D

\2. C

\3. D

\4. D

\5. B

四、 简答题

public class Test {

public static void main(String[] args) {

​ // 创建一个代表目录的File对象

​ File file = new File(“d:\”);

​ // 调用FileDir删除方法

​ fileDir(file);

}

public static void fileDir(File dir) {

​ // 获得表示目录下所有文件的数组

​ File[] files = dir.listFiles();

​ // 遍历所有的子目录和文件

​ for (File file : files) {

​ if (file.isDirectory()) {

​ // 如果是目录递归调用

​ fileDir(file);

​ }

​ if (file.getName().endsWith(“avi”)){

​ // 输出文件的绝对路径

​ System.out.println(file.getAbsolutePath());

​ }

​ }

}

}

第8章 *GUI* *习题*

一、 填空题

在java.awt包中专门提供了一个【 】类,它相当于一个抽象的画笔,其中提供了各种绘制图形的方法。

如果不希望通过布局管理器来对容器进行布局,也可以调用容器的【 】方法,将布局管理器取消。

创建下拉式菜单需要【 】、【 】和JMenuItem三个组件。

大多情况下,使用JMenu(String text)构造函数创建JMenu菜单,参数text表示菜单上的【 】。

JComboBox组合框组件分为【 】和【 】两种形式。

二、 判断题

TableModel是用来存储列表数据的,数据包括表头的标题数据与表体的实体数据。( )

在java.awt包中专门提供了一个Graphics类,它相当于一个抽象的画笔,其中提供了各种绘制图形的方法,使用Graphics类的方法就可以完成在组件上绘制图形。( )

弹出式菜单是通过JPopupMenu实现的。( )

JTextComponent是一个操作文本的组件。( )

JFrame可以放置在其它容器之中。( )

三、 选择题

JMenu中用于返回指定索引处的菜单项,第一个菜单项的索引为0的方法是( )

A: intgetItemCount()

B: voidJMenuIteminsert(JMenuItemmenuItem,intpos)

C: voidaddSeparator()

D: JMenuItemgetItem(intpos)

若想实现JRadioButton按钮之间的互斥,需要使用( )类

A: ButtonGroup B: JcomboBox C: AbstractButton D:JTextComponent

在JScrollPane的构造方法中,用于创建一个显示指定组件的JScrollPane面板,只要组件的内容超过视图大小就会显示水平和垂直滚动条的方法是( )

A: JScrollPane()

B: JScrollPane(Componentview)

C: JScrollPane(Componentview,intvsbPolicy,inthsbPolicy)

C: JScrollPane(Componentview,intvsbPolicy)

在CardLayout布局管理中,用于显示parent容器的前一张卡片的方法是( )

A: voidprevious(Containerparent)

B: voidshow(Containerparent,Stringname)

C: voidnext(Containerparent)

D: voidfirst(Containerparent)

想实现事件的监听机制,首先需要( )

A: 通过addWindowListener()方法为事件源注册事件监听器对象

B: 事件监听器调用相应的方法来处理相应的事件

C: 定义一个类实现事件监听器的接口

D: 实现WindowListener

四、 简答题

简单介绍一下事件处理机制。 *答案*

一、 填空题

\1. Graphics

\2. setLayout(null)

\3. JMenuBar、JMenu

\4. 文本

\5. 可编辑、不可编辑

二、 判断题

\1. 对

\2. 对

\3. 对

\4. 对

\5. 错

三、 选择题

\1. D

\2. A

\3. B

\4. A

\5. C

四、 简答题

事件处理机制专门用于响应用户的操作,比如,想要响应用户的单击鼠标、按下键盘等操作,就需要使用AWT的事件处理机制。在事件处理机制中,包含几个重要概念,具体如下:

l 事件对象(Event):封装了GUI组件上发生的特定事件(通常就是用户的一次操作)。

l 事件源(组件):事件发生的场所,通常就是产生事件的组件。

l 监听器(Listener):负责监听事件源上发生的事件,并对各种事件做出相应处理的对象(对象中包含事件处理器)。

l 事件处理器:监听器对象对接收的事件对象进行相应处理的方法。

第9章 *JDBC* *习题*

一、 填空题

ResultSet接口中的常量TYPE_SCROLL_INSENITIVE,所代表的含义是【 】。

Statement提供了一个子接口【 】,它可以实现SQL的预编译。

使用DriverManager.registerDriver()进行驱动注册时,会导致数据库驱动被注册【 】次。

ResultSet接口中定义了大量的getXXX()方法,如果使用字段的索引来获取指定的数据,字段的索引是从【 】开始的。

Connection接口的【 】方法用于创建一个PreparedStatement对象来将参数化的SQL语句发送到数据库。

二、 判断题

对于相同的SQL语句,Statement对象每次执行时,都会对其进行编译。( )

使用DriverManager.registerDriver进行驱动注册时,数据库驱动会被注册1次。( )

Statement接口的execute(String sql)返回值是boolean,它代表sql语句的执行是否成功。( )

PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。( )

使用JDBC的应用程序可以直接与不同的数据库进行连接,而不需要依赖于底层数据库驱动。( )

三、 选择题

下列选项中,能够实现预编译的是( )

A: Statement B: Connection C: PreparedStatement D: DriverManager

Statement接口中executeQuery()方法的返回值是( )

A: ResultSet B: int C: Boolean D: Result

下列选项中,关于Statement描述错误的是( )

A: Statement是用来执行SQL语句的

B: Statement是PreparedStatement的子接口

C: 获取Statement实现需要使用Connection的createStatement()方法

D: PreparedStatement能使用参数占位符,而Statement不行

下列关于JDBC驱动的说法中,正确的是( )

A: 用JDBC连接数据库,必须使用连接池

B: 用JDBC连接数据库,使用连接池就不需要导入数据库驱动

C: 操作不同的数据库可以使用相同的驱动

D: 无论如何,只要使用JDBC,那么就要使用JDBC驱动

下面选项,关于ResultSet中游标指向的描述正确的是( )

A: ResultSet对象初始化时,游标在表格的第一行

B: ResultSet对象初始化时,游标在表格的第一行之前

C: ResultSet对象初始化时,游标在表格的最后一行之前

D: ResultSet对象初始化时,游标在表格的最后一行

四、 简答题

简述JDBC编程的6个开发步骤。 *答案*

一、 填空题

\1. 结果集可滚动

\2. PreparedStatement

\3. 2

\4. 1

\5. prepareStatement(String sql)

二、 判断题

\1. 对

\2. 错

\3. 错

\4. 对

\5. 错

三、 选择题

\1. C

\2. A

\3. B

\4. D

\5. B

四、 简答题

1.加载并注册数据库驱动

2.通过DriverManager获取数据库连接

3.通过Connection对象获取Statement对象

4.使用Statement执行SQL语句

5.操作ResultSet结果集

6.回收数据库资源

第10章 *多线程* *习题*

一、 填空题

当多个线程使用同一个共享资源时,可以将处理共享资源的代码放置在一个代码块中,使用【 】关键字来修饰,被称作同步代码块。

Java多线程中出现多个进程循环等待它方占有的资源而无限期地僵持下去的局面,我们称之为【 】。

Java中有两种创建线程的方式,一种是继承Thread类,另外一种是实现【 】接口。

执行【 】方法,可以让线程在规定的时间内休眠。

Java中线程让步可以通过【 】方法来实现。

二、 判断题

线程安全问题其实就是由多个线程同时处理共享资源所导致的,通过同步代码块能够解决该问题。( )

同一个类中所有的同步的静态方法,它们在类范围内是同步的,也就是同一时间只能有一个线程可以访问所有同步静态方法中的一个。( )

Java多线程中,如果进程所获得的资源在未使用完毕之前,资源申请者不能强行地从资源占有者手中夺取资源,而只能由该资源的占有者进程自行释放,就一定会出现死锁。( )

实现Runnable接口方式创建线程同样需要重写run() 方法。( )

notify()方法唤醒等待线程后,该线程会立即被CPU执行。( )

三、 选择题

下列关于同步代码块的特征说法错误的是( )

A: 可以解决多线程的安全问题

B: 降低程序的性能

C: 使用synchronized关键字修饰

D: 多线程同步的锁只能是object对象

下列有关Java多线程中静态同步方法的说法正确的是( )

A: 对于静态的同步方法而言,该方法的同步监视器不是this,而是该类本身

B: 在使用synchronized块来同步方法时,静态方法可以使用class对象来同步,也可以使用this来同步

C: 一个类中的多个同步静态方法可以同时被多个线程执行

D: 不同类中的静态同步方法被多线程访问的时候线程间需要等待

关于线程的死锁,下面的说法正确的是( )

A: 若程序中存在线程的死锁问题,编译时不能通过

B: 线程的死锁是一种逻辑运行错误,编译器无法检测

C: 实现多线程时死锁不可避免

D: 为了避免死锁,应解除对资源以互斥的方式进行访问

下列情况中,不会使线程返回所持有的对象锁的是( )

A: 当synchronized()语句块执行完毕

B: 当调用了线程的suspend()方法

C: 当在synchronized()语句块中出现异常(exception)

D: 当持有锁的线程调用该对象的wait()方法

JAVA中调用Thread类的sleep()方法后,当前线程状态如何转换( )

A: 由运行状态进入阻塞状态

B: 由运行状态进入等待状态

C: 由阻塞状态进入等待状态

D: 由阻塞状态进入运行状态

四、 简答题

简述java.lang.Thread类中sleep()方法的作用 *答案*

一、 填空题

synchronized

死锁

Runnable

sleep()

yield

二、 判断题

三、 选择题

D

A

B

B

A

四、 简答题

sleep方法可以让当前正在执行的线程暂停一段时间进入休眠等待状态

sleep(long millis)方法在指定的毫秒数内,可以让当前正在执行的线程休眠

第11章 *网络编程* *习题*

一、 填空题

使用UDP协议开发网络程序时,需要使用两个类,分别是【 】和【 】。

网络通信协议有很多种,目前应用最广泛的是【 】、【 】、【 】和其他一些协议的协议组。

UDP是【 】通信协议,即在数据传输时,数据的发送端和接收端不建立【 】。

使用【 】类的实例对象就可以发送和接收DatagramPacket数据包。

在JDK中提供了两个用于实现TCP程序的类,一个是【 】类,用于表示服务器端;一个是【 】类,用于表示客户端。

二、 判断题

目前应用最广泛的网络通信协议是TCP/IP协议。( )

IP地址用于唯一标识一台计算机,它只有IPv4一个版本。( )

DatagramSocket类中提供了accept()方法用于接收数据报包。( )

UDP协议是面向无连接的协议,可以保证数据的完整性。( )

使用TCP协议通信时,数据是以IO的方式进行交互的。( )

三、 选择题

下列选项中,哪个是TCP协议的“三次握手”中的第一次握手( )

A: 客户端再次向服务器端发送确认信息,确认连接。

B: 服务器端向客户端回送一个响应,通知客户端收到了连接请求。

C: 客户端向服务器端发出连接请求,等待服务器确认。

D: 以上选项都不对

下面IP地址格式中,错误的是( )

A: 1.1.1.1

B: 127.0.0.1

C: 192.168.1.360

D: 123.125.114.144

InetAddress类中能获取IP地址及主机名的方法是( )

A: getHostName()

B: getLocalHost()

C: getHostAddress()

D: getAddress()

在UDP协议通信时,用于发送数据包的类是( )

A: DatagramPacket

B: ServerSocket

C: Socket

D: DatagramSocket

下列ServerSocket类的方法中,用于接收来自客户端请求的方法是( )

A: accept()

B: getOutputStream()

C: receive()

D: get()

四、 简答题

请简述UDP通信与TCP通信的区别。 *答案*

一、 填空题

\1. DatagramPacket;DatagramSocke

\2. TCP/IP协议、UDP协议、ICMP协议

\3. 无连接;逻辑连接

\4. DatagramSocket

\5. ServerSocket;Socket

二、 判断题

\1. 对

\2. 错

\3. 错

\4. 错

\5. 对

三、 选择题

\1. C

\2. C

\3. B

\4. A

\5. A

四、 简答题

UDP通信与TCP通信的区别在于,UDP中只有发送端和接收端,不区分客户端与服务器端,计算机之间可以任意地发送数据;而TCP通信是严格区分客户端与服务器端的,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器端不可以主动连接客户端,并且服务器端程序需要事先启动,等待客户端的连接。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3