java实验11 输入输出流 - 答案
java第十一章课后习题答案

11.1、线程的概念:Thread 每个正在系统上运行的程序都是一个进程。
每个进程包含一到多个线程。
进程也可能是整个程序或者是部分程序的动态执行。
线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。
也可以把它理解为代码运行的上下文。
所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。
通常由操作系统负责多个线程的调度和执行。
多线程的概念:多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。
线程是在同一时间需要完成多项任务的时候实现的。
多线程的优点:使用线程可以把占据长时间的程序中的任务放到后台去处理用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度·11.2、答:一个线程从创建到不再有用称为线程的生命周期。
线程的生命周期可以分为4个状态:①创建(new)状态;②可运行(runnable)状态;⑧不可运行(not runnable)状态;④消亡(dead)状态。
创建状态是指创建一个线程所对应的对象的过程。
Java系统中,这些对象都是从java. lang包内一个称为Thread的类用关键字new创建的。
刚创建的线程不能执行,必须向系统进行注册、分配必要的资源后才能进入可运行状态,这个步骤是由start操作完成的。
而处于可运行状态的线程也未必一定处于运行中,它有可能由于外部的I/O请求而处于不可运行状态。
进入消亡状态后,此线程就不再存在了。
答:一个线程创建之后,总是处于其生命周期的4个状态之一中。
线程的状态表明此线程当前正在进行的活动,而线程的状态是可以通过程序来进行控制的,就是说,可以对线程进行操作来改变状态。
这些操作包括启动(start)、终止(stop)、睡眠(sleep)、挂起(suspend)、恢复(resume)、等待(wait)和通知(notify)。
每一个操作都对应了一个方法,这些方法是由软件包ng提供的。
Java程序设计实验指导书(答案)

第Ⅰ部分:实验指导实验1:Java开发环境J2SE一、实验目的(1)学习从网络上下载并安装J2SE开发工具。
(2)学习编写简单的Java Application程序.(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。
二、实验任务从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。
三、实验内容1.安装J2SE开发工具Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从上进行下载。
安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.4.1_03目录下。
教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。
2.安装J2SE源代码编辑工具Edit Plus教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java 原程序的常用命令的用法。
3.编写并编译、运行一个Java Application程序。
创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。
public class HelloWorldApp{public static void main(String[] args){System.out.println("老师,你好!");}}4.编译并运行下面的Java Application程序,写出运行结果。
1:public class MyClass {2:private int day;3:private int month;4:private int year;5:public MyClass() {6:day = 1;7:month = 1;8:year = 1900;9:}10:public MyClass(int d,int m,int y) {11:day = d;12:month = m;13:year = y;14:}15:public void display(){16:System.out.println(day + "-" + month + "-" + year);17:}18:public static void main(String args[ ]) {19:MyClass m1 = new MyClass();20:MyClass m2 = new MyClass(25,12,2001);21:m1.display();22:m2.display();23:}24:}运行结果:1-1-190025-12-2001实验2:Java基本数据类型一、实验目的(1)掌握javadoc文档化工具的使用方法。
java输入输出流试验

输入输出流一、实验目的:熟悉Java的文件读写机制,练习输入输出流的使用。
二、实验内容:1、键盘输入10个整数,从小到大进行排序。
2、接收键盘输入的字符串,用FileInputStream类将字符串写入文件,用FileOutputStream类读出文件内容显示在屏幕上。
3、将一个文本文件的内容按行读出,每读出一行就顺序加上行号,并写入到另一个文件中。
三、实验要求:1. 通过实验掌握文件输入输出流的使用方法;2. 程序必须能够从键盘接收字符串并保存在文件中;3. 程序必须能够读出文件内容显示在屏幕上;4. 写出实验报告。
四、实验步骤:1、键盘输入10个整数,从小到大进行排序。
package javaTest;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Gui_21 {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubBufferedReader br=new BufferedReader(newInputStreamReader(System.in));String str;int array[]=new int[10];for(int i=0;i<10;i++){System.out.println("请输入一个整数:");str=br.readLine();array[i]=Integer.parseInt(str);}for(int j=0;j<9;j++){for(int k=j+1;k<10;k++){if(array[k]<array[j]){int temp=array[k];array[k]=array[j];array[j]=temp;}}}for(int m=0;m<10;m++){if(m!=9)System.out.print(array[m]+",");elseSystem.out.print(array[m]);}}}2、接收键盘输入的字符串,用FileInputStream类将字符串写入文件,用FileOutputStream类读出文件内容显示在屏幕上。
JAVA填空题标准答案 (103题)

1. ( 1.0分)Java中预定义的数据类型中都有对应的常量,对于整型直接数,他的形式又有多种,以1-9开头的正负整数为十进制,以0开头的正负整数为八进制数,以0x或者0X开头的正负整数为数。
你的答案:十六进制 (得分1.0 分);参考答案:十六进制2. ( 2.0分) 一个类如果实现一个接口,那么它需要实现接口中的全部,否则该类就必须定义为。
你的答案:方法‖抽象类 (得分2.0 分);参考答案:方法‖抽象(或abstract)3. ( 3.0分) 下列程序实现从控制台输入并读取输出字符串.请将程序补充完整import java.io.*;public class CharInput {public static void main(String args[]) throws java.io.IOException{String s;InputStreamReader ir;BufferedReader in;ir=new____________(System.in);in=new____________(ir);while((s=in._________)!=null) {System.out.println(“R ead;”+s);}}}你的答案:InputStreamReader‖BufferedReader‖read line() (得分3.0 分);参考答案:InputStreamReader‖BufferedReader‖readLine( )4. ( 1.0分)线程类型中的yield()方法只能让相同优先级或者更高优先级、处于状态的线程获得运行机会。
你的答案:就绪 (得分1.0 分);参考答案:就绪5. ( 1.0分) 在非静态成员方法中,可以使用关键字访问类的其他非静态成员。
你的答案: this (得分1.0 分);参考答案:this6. ( 1.0分) Java定义的变量要求赋初值,如果没有显式赋值,整型变量获得的值是0,实型变量的值是,布尔类型数据的量是false,复合数据变量的值是分null。
Java语言程序设计实用教程第十一讲输入输出流

Java语言程序 设计实用教程 SISE
字符流及派生
Java中字符流由两个抽象类来表示(每种流包括输入和输出) Reader,Writer,Java中其他多种多样变化的流均是由它们派生出 来的
Java语言程序 设计实用教程 SISE
各种IO流的用途(P296, 表11-1)
文件流:用于传递当前操作系统的某个文件内容 管道流:用于多线程之间的通信 过滤流:建立在其它流之上,完成暂存数据、统计数 据、转换数据类型等 缓存流:构建内存缓冲区,使得IO流的利用更高效 …
Java语言程序 设计实用教程 SISE
文件输入输出字符流
上面的FileInputStream使用字节读取文件,字 节流不能直接操作Unicode字符,所以Java 提供 了字符流. 由于汉字在文件中占用2 个字节,如果使用字节 流,读取不当会出现乱码现象,采用字符流就可 以避免这个现象,因为,在Unicode 字符中,一个 汉字被看作一个字符.
Java语言程序 设计实用教程 SISE
例:创建一个目录(P299 的创建目录方法有误)
File file=new File("e:\\LeadWay"); boolean a = file.mkdir(); if(a == true){ System.out.println("创建成功"); } else{ System.out.println("失败"); }
Java语言程序 设计实用教程 SISE
例:使用文件输入输出字节 方法(续1)
while (true) { if (fileInputStream.available() < 1024) { // 剩余的数据比1024字节少 // 一位一位读出再写入目的文件 int remain = -1; while ((remain = fileInputStream.read()) != -1) { fileOutputStream.write(remain); } break; } else { // 从来源文件读取数据至缓冲区 fileInputStream.read(buffer); // 将数组数据写入目的文件 fileOutputStream.write(buffer); } }
JAVA程序设计习题及答案

2012年JAVA程序设计习题及答案191.java的输入输出流包括_______、字符流、文件流、对象流以及多线程之间通信的管道。
2.java中的非字符输出流都是________抽象类的子类。
3.java对I/O访问还提供了同步处理机制,保证某时刻只有一个线程访问一个I/O流,这就是_______4. java中的字符输出流都是抽象类________的子类。
5. DataOutputStream数据流向文件里写数据的方法为__________.答案:1. 字节流2. OutputStream3. 过滤流4. Writer5。
write()11.在编写执行JAVA程序的过程中需要用到一些工具,SUN公司为我们提供了一套JDK工具,它主要包括:javac。
exe、java.exe、_____、javap。
exe、jkb。
exe12. JAVA程序包括源代码(。
java文件)、______、由归档工具jar生成的.jar文件、对象状态序列化。
ser文件。
13. 在JAVA语言中,为将源代码翻译成______文件时产生的错误称为编译错误.而将程序在运行中产生的错误称为运行错误。
14。
Java Application应用程序的编写和执行分3步进行:编写源代码、编译源代码、_____。
15. 每个java应用程序可以包括许多方法,但必须有且只能有一个_____方法。
答案:11。
javadoc.exe(或java文档生成器)12。
由编译器生成的类(。
class文件)13. 字节码14。
解释执行15. main6。
关于对象的删除,下列说法正确的是A。
必须由程序员完成对象的清除B。
java把没有引用的对象作为垃圾收集起来并释放C。
只有当程序中调用System.gc()方法时才能进行垃圾收集D. java中的对象都很小,一般不进行删除操作。
7. 下列说法正确的是A. java中包的主要作用是实现跨平台功能B。
package语句只能放在import语句后面C. 包(package)由一组类(class)和界面(interface)组成D. 可以用#include关键词来标明来自其它包中的类;8. Applet是一个面板容器,它默认使用()布局管理器A。
JAVA实验报告(异常和输入输出流部分,含答案)

}
}
publicclassNoOprandExceptionextendsException {
publicNoOprandException(String s ){
super(s);
}
}
importjava.util.Scanner;
publicclassTest {
publicstaticvoidmain(String[] args)throwsException{
输出结果:3因j为除式,除数不能为0,属于运行异常中的ng.ArithmeticException: / by zero,不属于myname.length()>2和NullPointerException的情况,因此输出3
2.下面是一个名称为NegativeAmountException的自定义异常类,表示一个不正常的银行账目事件类。填充下面的语句,完成该类的编写。
2)在main方法中,去掉刚才添加的语句,添加下面几行语句,写出并分析结果
swap1(10,12);
System.out.println("执行swap1(10,12)后");
System.out.println("c1引用的牌是:"+c1+"\tc2引用的牌是:"+c2);
System.out.println("第11张牌是:"+cards[10]+"\t第13张牌是:"+cards[12]);
System.out.println("请输入两个数");
Scanner sc=newScanner(System.in);
java习题及答案第11章 习题参考答案

习题11 课后习题答案1.常见网络端口有哪些?答案:在计算机中操作系统内部使用1-1024保留端口号,所以设计应用程序时需选择除此之外的端口。
如:20文件传输协议(默认数据口) ,80全球信息网超文本传输协议(www)。
2.如何连接和读取URL中的资源?答案:(1)通过URLConnection连接WWW:用URL的openStream()方法从网络上读取数据,若要输出数据,用类URLConnection,与URL建立连接,然后对其进行读/写操作。
(2)用URL读取WWW数据资源:在取得一个URL对象后,通过使用URL的openStream()方法,可以获得所需的特定的WWW 资源。
3.什么是套接字?有哪几种套接字?答案:套接字Socket是网络通信的应用程序接口,可以实现客户机与服务器之间的通信。
常用的TCP/IP协议的3种套接字类型有:流套接字(SOCK_STREAM);数据包套接字(SOCK_DGRAM);原始套接字(SOCK_RAW)。
流套接字用于提供面向连接、可靠的数据传输服务。
该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。
数据包套接字提供了一种无连接的服务。
该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。
原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据包套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。
因此,如果要访问其他协议发送数据必须使用原始套接字。
4.简述TCP套接字的实现过程?答案:实现TCP套接字基本步骤分为服务器端和客户端两部分。
(1)服务器端步骤创建套接字;绑定套接字;设置套接字为监听模式,进入被动接收连接请求状态;接收请求,建立连接;读/写数据;终止连接。
(2)客户端步骤创建套接字;与远程服务器程序连接;读/写数据;终止连接。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验输入输出流
一、实验目的
1、掌握文件字节流的用法;
2、掌握文件字符流的用法;
3、掌握缓冲流的用法;
二、实验内容与步骤
1、编写程序,实现将诗句写入c:\小池.txt文件中,然后再从该文件中读出并打印输出。
宋诗《小池》
作者:杨万里
泉眼无声惜细流,
树荫照水弄轻柔。
小荷才露尖尖角,
早有蜻蜓立上头。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class PoemWrite {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
String s;
try{
FileWriter outOne=new FileWriter("c:\\小池.txt");
BufferedWriter outTwo=new BufferedWriter(outOne);
while(!(s=reader.nextLine()).equals("0")){
outTwo.write(s);
outTwo.newLine();
}
outTwo.flush();
outTwo.close();
outOne.close();
FileReader inOne=new FileReader("c:\\小池.txt");
BufferedReader inTwo=new BufferedReader(inOne);
while((s=inTwo.readLine())!=null){
System.out.println(s);
}
inOne.close();
inTwo.close();
}
catch(IOException e){
System.out.println(e.getMessage());
}
}
}
2、分别使用FileWriter和BufferedWriter向文件写入十万个字符,比较用时的多少。
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
public class XT2 {
public static void main(String[] args) {
File f = new File("c:\\1.txt");
Long startTime,endTime;
startTime=System.currentTimeMillis();
try{
FileWriter out=new FileWriter(f);
BufferedWriter out2=new BufferedWriter(out);
for(int i=1;i<=100000;i++)
out2.write('a');
}
catch(IOException e){
System.out.println(e);
}
endTime=System.currentTimeMillis();
System.out.println(“缓冲流用时:”+endTime-startTime);
startTime=System.currentTimeMillis();
try{
FileWriter out=new FileWriter(f);
for(int i=1;i<=100000;i++)
out.write('a');
}
catch(IOException e){
System.out.println(e);
}
endTime=System.currentTimeMillis();
System.out.println(“字符流用时:”+endTime-startTime);
}
}
3、在D:\中建立学生实体类Student,包括学号,姓名和专业属性,文件名是“Student.java”。
将文件“Student.java”中的内容按行读出,并写入另一个文件中,且给每行加上行号。
public class XT3 {
public static void main(String[] args) {
File readFile=new File("d:\\Student.java"),
writeFile=new File("Hello.txt");
try{
FileReader inOne=new FileReader(readFile);
BufferedReader inTwo=new BufferedReader(inOne);
FileWriter tofile=new FileWriter(writeFile);
BufferedWriter out=new BufferedWriter(tofile);
String s=null;
int i=0;
while((s=inTwo.readLine())!=null){
i++;
out.write(i+" "+s);
out.newLine();
}
out.flush();
out.close();
tofile.close();
inOne.close();
inTwo.close();
}
catch(IOException e){
System.out.print(e.getMessage());
}
}
}
4、创建一个存储若干随机整数的文本文件,其中文件名、整数个数及范围均由键盘输入。
import java.io.*;
import java.util.*;
public class XT4 {
public static void main(String[] args) {
String fileName;
int count,min,max;
Scanner in=new Scanner(System.in);
System.out.println("输入要存储的文件名:");
fileName=in.next();
System.out.println("输入随机数个数:");
count=in.nextInt();
System.out.println("输入随机数最小值:");
min=in.nextInt();
System.out.println("输入随机数最大值:");
max=in.nextInt();
try
{
FileWriter out=new FileWriter(fileName);
int limit=max-min;
for(int i=1;i<=count;i++)
{
int number=min+(int)(Math.random()*limit);
System.out.print(number+" ");
out.write(number+" ");
}
out.close();
}
catch(Exception e)
{
e.getMessage();
}
}
}
5、用记事本程序创建一篇包含几十个英语单词的文章,要求从屏幕输出每一个单词,并统计单词的个数。
public class XT5 {
public static void main(String[] args) {
int num=0;
try{
FileReader inOne=new FileReader("1.txt");
BufferedReader inTwo=new BufferedReader(inOne);
String s,str;
StringTokenizer xiaodao;
while((s=inTwo.readLine())!=null){
xiaodao=new StringTokenizer(s," ");
while(xiaodao.hasMoreTokens()){
str=xiaodao.nextToken();
System.out.println(str);
num++;
}
}
}
catch(IOException e)
{
e.getMessage();
}
System.out.println(num);
}
}
五、实验后记。