输入与输出流和线程习题
- 格式:doc
- 大小:40.00 KB
- 文档页数:5
线程、输入输出与集合练习题答案1、C创建一个新的Thread对象并调用start()方法。
对start()方法的调用会立即返回,而线程会异步启动run()方法。
2、C当扩展Thread类时,应该覆盖run()方法以提供线程要执行的代码。
这与Runnable 接口的run()方法的实现是类似的。
3、B、EThread类实现了Runnable接口,并且不是抽象的。
当最后一个非后台线程结束时,程序也就终止了。
Runnable接口有一个叫做run的方法,不过该接口没有规定实现必须定义一个叫做start的方法。
在一个Runnable对象上调用run()方法无须创建新线程。
Run()是由线程执行的方法。
必须创建Thread类的实例以生成大量的新线程。
4、E我们会创建两个线程对象,但是永远不会启动它们。
在线程对象上必须调用start()方法,使得这些线程可以异步执行run()方法。
5、A、E因为调度程序的确切行为是为定义的,所以打印文本A、B和END的次序是任意的。
打印B的线程是一个后台线程,这意味着程序可以在线程设法打印字母之前终止。
6、B在执行期间我们不能确定是否字母i、j和k中的任意一个会被打印出来。
对于每次的doit()方法调用来说,每个变量对都会递增,而当该方法返回时它们的值总是相等的。
如果check()方法是在第1个和第2个变量递增的间期执行的,一个字母可能被打印的唯一途径就会呈现。
7、D当run()方法的执行终止时,一个线程的生命期也就结束了。
Start()方法的调用是异步的,即它能立即返回,并且能启动线程的运行。
Sleep()或wait()方法的调用只是暂时阻塞线程。
8、B、D首先计算的是内部currentThread方法调用,并将打印出23作为第一个数字。
Main线程打印的最后一个数字是14。
在main线程结束之后,内部currentThread方法创建的线程会完成其join()调用,并打印出22。
第一章思考题】1、简述path 环境变量的作用。
2、请说说你对JVM 的理解。
答案】1、path 环境变量是系统环境变量中的一种,它用于保存一系列可执行文件的路径,每个路径之间以分号分隔。
当在命令行窗口运行一个可执行文件时,操作系统首先会在当前目录下查找是否存在该文件,如果不存在会继续在path 环境变量中定义的路径下去寻找这个文件,如果仍未找到,系统会报错。
2、JVM 是Java Virtual Machine 的缩写,全称是Java 虚拟机。
Java 语言的一个非常重要的特性就是跨平台性,而Java 虚拟机是实现这一特性的关键。
不同的操作系统需要使用不同版本的虚拟机,这种方式使得Java语言能够“一次编写,到处运行”。
Java语言编译程序只需生成在Java 虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
第二章【思考题】1、请简述& 与&& 的区别。
2、简述break、continue 和return 语句的区别。
【答案】1、&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
当运算符“ &”和“ && ”的右边为表达式时,使用“ &”进行运算,不论左边为true 或者false,右边的表达式都会进行运算。
如果使用" && ”进行运算,当左边为false时,右边的表达式则不会进行运算,因此“ && ”被称作短路与。
2、break 语句:在switch 条件语句和循环语句中都可以使用break 语句。
当它出现在switch 条件语句中时,作用是终止某个case并跳出switch结构。
5 Java 输入流与输出流5.1 单项选择题1.实现字符流的写操作类是( A . FileReader B . Writer C)。
. FileInputStream D. FileOutputStream2. 实现字符流的读操作类是( )。
A . FileReaderB . WriterC . FileInputStreamD . FileOutputStream3.凡是从中央处理器流向外部设备的数据流称为() A. 文件流 B. 字符流 C. 输入流 D. 输出流4.构造 BufferedInputStream 的合适参数是哪一个?( ) A . FileInputStream B . BufferedOutputStreamC . FileD . FileOuterStream5.在编写 Java Application 程序时,若需要使用到标准输入输出语句,必须在程序的开头写上( )语句。
D . import java.awt.Graphics ;6.下列流中哪个不属于字符流?( A . InputStreamReaderC . FilterReader 7.流的传递方式是() A. 并行的B. 串行的C. 并行和串行D. 以上都不对8.字符流与字节流的区别在于( )A. 前者带有缓冲,后者没有B. 前者是块读写,后者是字节读写C. 二者没有区别,可以互换使用A . import java.awt.* ;B import java.applet.Applet ;C . import java.io.* ; )B . BufferedReaderD . FileInputStream2D. 每次读写的字节数不同9.下列流中哪个不属于字节流 A . FileInputStream B . BufferedInputStream C. FilterInputStream D. InputStreamReader10.如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象()A . FileInputStreamB . FileOutputStreamC . DataOutputStreamD . FileWriter11. 下列哪一个 import 命令可以使我们在程序中创建输入/ 输出流对象()A .import java.sql.*;B . import java.util.*;C . import java.io.*;D . import .*;12.下面的程序段创建了 BufferedReader 类的对象in ,以便读取本机 c 盘my 文件夹下的文件 1.txt 。
javaio流练习题Java IO流练习题Java IO流是Java语言中用于输入和输出操作的重要组件。
掌握IO 流的使用对于Java程序员来说是至关重要的。
本文将介绍一些Java IO 流的练习题,旨在帮助读者熟悉IO流的用法。
练习一:文件复制题目要求:编写一个程序,实现文件的复制功能。
程序接收两个文件路径作为参数,将源文件复制到目标文件路径下,并输出复制完成的信息。
解题思路:1. 使用FileInputStream读取源文件的内容;2. 使用FileOutputStream将读取到的内容写入到目标文件;3. 分别关闭输入流和输出流。
练习二:文本文件排序题目要求:编写一个程序,从一个文本文件中读取多行文本,并按字母顺序对其进行排序,然后将排序后的结果写入到另一个文件中。
解题思路:1. 使用BufferedReader读取文本文件的内容,将每一行存储到一个List<String>中;2. 使用Collections类的sort方法对List<String>进行排序;3. 使用BufferedWriter将排序后的结果写入到另一个文本文件。
练习三:对象序列化与反序列化题目要求:编写一个程序,实现对象的序列化和反序列化。
程序可以接收一个对象作为参数,将对象序列化后保存到一个文件中,并可以将文件中的对象反序列化,并输出对象的内容。
解题思路:1. 创建一个实现Serializable接口的类,表示需要被序列化和反序列化的对象;2. 使用ObjectOutputStream将对象写入到文件中;3. 使用ObjectInputStream从文件中读取对象,并输出对象的内容。
练习四:文件压缩与解压缩题目要求:编写一个程序,实现文件的压缩和解压缩功能。
程序可以接收一个文件作为参数,将文件压缩后保存到另一个文件中,并可以将压缩后的文件解压缩。
解题思路:1. 使用ZipOutputStream将文件压缩并写入到另一个文件中;2. 使用ZipInputStream从压缩文件中读取内容,并解压缩。
软件091班java程序机试题编程题:0. 求两点之间的距离。
要求:1)设计点类,属性为点的坐标;利用点类设计距离类。
2)两点的坐标通过键盘输入,键盘输入要运用流,输入数据时要有合理的提示信息,输出信息表达明确。
1.实现如下界面功能的图形界面应用程序(字体设置)。
2.编写程序,通过键盘输入多行信息,直接输入一个文本文件中。
要求:键盘输入的信息要使用流。
3.求5个以上学生的Java平均成绩。
要求:1)要利用对象数组生成对象2)信息通过键盘输入(利用流)。
3)Java成绩的范围在0-分100分,若输错,则需要重新输入。
4.设计一个包含两个命令按钮(显示文字和显示图片)的界面。
要求:1)当单击“显示文字”命令按钮后,命令按钮变为“文字消失”,同时显示一行“单击了命令按钮!”的文字。
单击“文字消失”命令按钮后,命令按钮又变为“显示文字”命令按钮,同时文字“单击了命令按钮!”消失。
如此可以反复。
2)当单击“显示图片”命令按钮后,命令按钮变为“图片消失”,同时显示任意一幅图片。
单击“图片消失”命令按钮后,命令按钮又变为“显示图片”命令按钮,同时图片消失。
如此可以反复。
5.求5个以上人的平均年龄。
要求:1)要利用对象数组生成对象2)信息通过键盘输入(利用流)。
3)人年龄的范围在0岁-120岁,若输错,则需要重新输入。
6.打开Login1.Java源程序,题目要求见源程序的注释部分。
7.分别利用接口和抽象类,求给定三个以上三角形和给定三个以上矩形的平均周长。
提示:应该产生两个源程序。
要求:1)要利用对象数组生成对象。
2)信息通过键盘输入(利用流)。
3)输入的三角形的三条边要能构成三角形,否则需要重新输入。
8.利用列表框和命令按钮实现如下界面功能的图形界面应用程序()。
要求:提示信息:。
C++ 标准输入输出试题1.C++标准库中,哪个流对象用于标准输入?o A. couto B. cerro C. cino D. clog答案: C解析: cin是C++标准库中用于标准输入的流对象。
2.如何将一个整数变量i的值以十六进制形式输出?o A. cout << hex << i;o B. cout << dec << i;o C. cout << oct << i;o D. cout << "hex" << i;答案: A解析: 使用hex标志可以将整数以十六进制形式输出。
3.以下哪个函数用于将字符串转换为流对象?o A. stro B. geto C. puto D. stringstream答案: D解析: stringstream是一种流对象,可以用于将字符串转换为流,以便进行输入输出操作。
4.如何从流中读取一个字符串,直到遇到空格为止?o A. cin >> str;o B. cin.getline(str, 256);o C. cin.read(str, 256);o D. getline(cin, str);答案: A解析: >>运算符会读取流中的一个单词,即读取到第一个空格为止。
5.下面哪个流对象用于输出标准错误信息,不会被缓冲?o A. couto B. cerro C. clogo D. cin答案: B解析: cerr用于输出标准错误信息,且立即输出,不会被缓冲。
6.要设置流的宽度为10,可以使用哪个成员函数?o A. setw(10)o B. setfill(10)o C. setprecision(10)o D. setbase(10)答案: A解析: setw设置输出的宽度,setfill设置填充字符,setprecision设置小数点后的精度,setbase设置基数。
Java练习题库一、基础知识篇1.1 变量与数据类型1. 定义一个整型变量并赋值为10。
2. 声明一个浮点型变量并初始化为3.14。
3. 创建一个字符变量并赋值为'A'。
4. 使用字符串类型声明并初始化一个变量,内容为"Hello World"。
1.2 运算符5. 计算5 + 3 2的值。
6. 判断下列表达式的结果:10 > 5 && 8 < 6。
7. 编写一个程序,实现两个整数的交换。
8. 使用三元运算符判断一个数是奇数还是偶数。
1.3 控制结构9. 编写一个for循环,输出1到10的整数。
10. 使用while循环计算1到100的和。
11. 根据分数判断学生等级(优秀、良好、及格、不及格)。
12. 编写一个switch语句,根据月份输出对应的天数。
二、面向对象篇2.1 类与对象13. 创建一个名为Person的类,包含姓名和年龄属性。
14. 为Person类添加一个方法,用于打印个人信息。
15. 编写一个构造方法,为Person类初始化姓名和年龄。
16. 创建一个Student类,继承自Person类,并添加一个成绩属性。
2.2 封装、继承与多态17. 将Person类的姓名和年龄属性设置为私有,并提供对应的get和set方法。
18. 在Student类中重写toString方法,输出学生信息。
19. 定义一个接口Animal,包含一个方法eat()。
20. 创建两个类Cat和Dog,实现Animal接口,并分别实现eat()方法。
2.3 异常处理21. 编写一个程序,捕获并处理数组越界异常。
22. 创建一个自定义异常类MyException,并在适当的时候抛出异常。
23. 使用trycatchfinally结构编写一个读取文件的程序。
三、高级特性篇3.1 集合框架24. 使用ArrayList存储并遍历一组字符串。
25. 创建一个HashMap,存储学生姓名和成绩,并遍历输出。
Java练习题一、基本语法1. 编写一个Java程序,输出“Hello, World!”。
2. 声明一个整型变量并赋值为10,然后输出该变量的值。
3. 编写一个Java程序,实现两个整数的加、减、乘、除运算。
4. 声明一个浮点型变量并赋值为3.14,然后输出该变量的值。
5. 编写一个Java程序,判断一个整数是奇数还是偶数。
6. 使用三元运算符计算两个整数中的较大值。
7. 编写一个Java程序,实现字符串的拼接。
8. 声明一个布尔型变量并赋值为true,然后输出该变量的值。
9. 编写一个Java程序,输出1到100的所有偶数。
10. 使用for循环输出九九乘法表。
二、数组与字符串1. 声明一个整型数组并初始化,然后输出数组中的所有元素。
2. 编写一个Java程序,实现数组的逆序输出。
3. 计算一个整型数组的平均值。
4. 编写一个Java程序,查找数组中的最大值和最小值。
5. 使用冒泡排序算法对整型数组进行排序。
6. 编写一个Java程序,实现字符串的反转。
7. 判断一个字符串是否为回文。
8. 输出一个字符串中字母和数字的个数。
9. 编写一个Java程序,实现字符串的截取。
10. 使用StringBuilder类拼接一个由100个“Java”组成的字符串。
三、面向对象1. 定义一个学生类(Student),包含姓名、年龄和成绩属性,并实现一个打印学生信息的方法。
2. 编写一个Java程序,创建一个学生对象并设置其属性,然后调用打印学生信息的方法。
3. 定义一个矩形类(Rectangle),包含长和宽属性,并实现计算面积和周长的方法。
4. 编写一个Java程序,创建两个矩形对象,并比较它们的面积大小。
5. 定义一个动物类(Animal),包含吃、睡和叫的方法,然后创建一个狗类(Dog)继承动物类,并重写叫的方法。
6. 编写一个Java程序,演示多态性,创建一个动物数组,包含狗和猫对象,并调用它们的叫方法。
输入与输出流一、选择题1.流的传递方式是(B)A. 并行的B. 串行的C. 并行和串行D. 以上都不对2.下列不是java的输入输出流的是(A)A. 文本流B. 字节流C. 字符流D. 文件流3.凡是从中央处理器流向外部设备的数据流称为(D)A. 文件流B. 字符流C. 输入流D. 输出流4.获取一个不包含路径的文件名的方法为(A)A. String getName( )B. String getPath( )C. String getAbslutePath( )D. String getParent( )5.下列属于文件输入输出类的是(D)A. FileInputStream和FileOutputStreamB. BufferInputStream和BufferOutputStreamC. PipedInputStream和PipedOutputStreamD. 以上都是6.下列不属于FileInputStream输入流的read()成员函数的是(D)A. int read();B. int read(byte b[]);C. int read(byte b[],int offset,int len);D. int read(int line);7.当处理的数据量很多,或向文件些很多次小数据,一般使用(C)流A. DataOutputB. FileOutputC. BufferedOutputD.PipedOutput8.当把一个程序、线程或代码段的输出连接到另一个程序、线程或代码短的输入时,应使用(D)流A. DataOutputB. FileOutputC. BufferedOutputD. PipedOutput9.当要将一文本文件当作一个数据库访问,读完一个纪录后,跳到另一个纪录,它们在文件的不同地方时,一般使用(B)类访问。
A. FileOutputStreamB. RandomAccessFileC. PipedOutputStreamD. BufferedOutputStream10.java中,实现通过网络使用URL访问对象的功能的流是(A)A. URL输入流B. Sock输入流C. PipedInputStream输入流D. BufferedInputStream输入流二、填空题1.java的输入输出流包括___字节流____、字符流、文件流、对象流以及多线程之间通信的管道。
2.java中的非字符输出流都是____OutputStream ____抽象类的子类。
3.java对I/O访问还提供了同步处理机制,保证某时刻只有一个线程访问一个I/O流,这就是___过滤流____4. java中的字符输出流都是抽象类____Writer ____的子类.5. DataOutputStream数据流向文件里写数据的方法为____write() ______.6. RandomAccessFile所实现的接口是____DataInput接口_____和DataOutput接口.7. 文件类___File ____是java.io中的一个重要的非流类,里面封装了对文件系统进行操作的功能.8. 文件操作中经常需要的是随机访问, java中的___RandomAccessFile ____类提供了随机访问文件的功能.9.下列程序实现从控制台输入并读取输出字符串. 请将程序补充完整import java.io.*;public class CharInput{public static void main(String args[]) throws java.io.IOException}String s;inputStreamReader ir;BufferedReader in;ir=new______InputStreamReader______(System.io);in=new______BufferedReader______(ir);while ((s=in.____readLine()______)!=null){System.out.println(“Read;”+s);}}}10. 下列程序实现从当前目录的date.ser文件中读取文件内容并显示出来.请将程序补充完整.import java.io.*;import java.util.Date;public class UnSerializeDate{UnSerializeDate(){Date d=null;try{FileInputStream f=new_____FileInputStreamf____(“date.ser”);ObjectInputStream s=newObjectInputStream(________);d=(Date) s.readObject();f.close();}catch(Exception e){e.printStackTrace();}System.out.println(“Unserialized Date object from date.set”);System.out.println(“Date:”+d);}public static void main(String args[]){new UnSerializeDate();}}多线程一、选择题1. 线程调用了sleep()方法后,该线程将进入( A )状态。
可运行状态运行状态阻塞状态终止状态2. 关于java线程,下面说法错误的是(D)线程是以CPU为主体的行为java利用线程使整个系统成为异步创建线程的方法有两种:实现Runnable接口和继承Thread类新线程一旦被创建,它将自动开始运行3. 在java中的线程模型包含(D)A. 一个虚拟处理器B. CPU执行的代码C. 代码操作的数据D. 以上都是4.在java语言中,临界区可以是一个语句块,或者是一个方法,并用(A)关键字标识。
A. synchronizedB. includeC. importD. Thread5. 线程控制方法中,yield()的作用是(D)A. 返回当前线程的引用B. 使比其低的优先级线程执行C. 强行终止线程D. 只让给同优先级线程运行6. 线程同步中,对象的锁在(D)情况下持有线程返回A. 当synchronized()语句块执行完后B. 当在synchronized()语句块执行中出现例外(exception)时C. 当持有锁的线程调用该对象的wait()方法时D. 以上都是7. 在以下(C)情况下,线程就进入可运行状态A. 线程调用了sleep()方法时B. 线程调用了join()方法时C. 线程调用了yield()方法时D. 以上都是8. java用(A)机制实现了进程之间的异步执行A. 监视器B. 虚拟机C. 多个CPUD. 异步调用9. 下列程序实现简单的线程调度,请回答以下问题:1 Thread myThread=new MyThreadClass();myThread.start();try{myThread.sleep(10000);}catch(InterruptedException e){}myThread.stop();程序执行完第一行后,线程进入____A____状态;程序执行完第二行后,线程进入____B____状态;程序开始执行第五行时,线程进入____C____状态;程序执行完第五行后,线程进入_____B___状态;程序执行完第十行后,线程进入____D____状态;A.新建状态B.可运行状态C.阻塞状态D.终止状态10.Thread类的方法中,toString()方法的作用是(D)A. 只返回线程的名称B. 返回当前线程所属的线程组的名称C. 返回当前线程对象D. 返回线程的名称二、填空题1. ____多线程____是java程序的并发机制,它能同步共享数据、处理不同的事件。
2. 线程是程序中的一个执行流,一个执行流是由CPU运行程序的代码、______操纵程序的数据____所形成的,因此,线程被认为是以CPU为主体的行为。
3. 线程的终止一般可以通过两种方法实现:自然撤销或者是____被停止______.4. 线程模型在java中是由_____ng.Thread_____类进行定义和描述的。
5. 线程的创建有两种方法:实现_____Runnable____接口和继承Thread类。
6. 多线程程序设计的含义是可以将程序任务分成几个____并行____的子任务。
7. 按照线程的模型,一个具体的线程也是由虚拟的CPU、代码与数据组成,其中代码与数据构成了_____线程体______,线程的行为由它决定。
8. java中,新建的线程调用start()方法、如myThread.start(),将使线程的状态从New(新建状态)转换为____可运行状态_____。
9. 多线程是java程序的____并发____机制,它能同步共享数据,处理不同事件。
10. 进程是由代码、数据、内核状态和一组寄存器组成,而线程是表示程序运行状态的___寄存器___,如程序计数器、栈指针以及堆栈组成。
11. Thread类提供了一系列基本线程控制方法,如果我们需要让与当前进程具有相同优先级的线程也有运行的机会则可以调用____yield()____方法。