java第十章课后习题解答
Java语言程序设计第10章习题参考答案

习题十参考答案10.1什么是进程?什么是线程?二者有什么联系和区别?进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程从产生、发展到消亡的过程。
线程是比进程更小的执行单位。
一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。
每条线索,即每个线程也有它自身的产生、存在和消亡的过程,是一个动态的概念。
在进程运行过程中,每个进程都有一段专用的内存区域,并以PCB作为它存在的标志;与进程不同的是,线程间可以共享相同的内存单元(包括代码与数据),并利用这些共享单位来实现数据交换、实时通信与必要的同步操作。
10.2线程有哪些基本状态?试描述它们的相互转换过程。
新建状态、就绪状态、运行状态、阻塞状态、死亡状态。
相互转换的过程如图:10.3创建线程的方式有哪几种?请举例说明。
1.继承自Thread类,代码逻辑写在子线程中,需要重写run()方法,主线程里start()就可以了。
public class ExtendsThread extends Thread{private final static int THREAD_NUM = 5;public static void main(String[] args){for (int i = 0; i <THREAD_NUM; i++) {new ExtendsThread("thread"+i).start();}}public ExtendsThread(String name){super(name);}@Overridepublic void run() {// TODO Auto-generated method stubfor (int i = 0; i < this.THREAD_NUM; i++) { System.out.println(this.getName()+i);}}}运行结果:thread00thread01thread02thread03thread04thread20thread21thread22thread23thread24thread40thread41thread42thread43thread44thread11thread12thread13thread14thread30thread31thread32thread33thread342.实现Runnable接口public class ImplRunnable implements Runnable {private static final int THREAD_NUM = 5;@Overridepublic void run() {for (int i = 0; i < THREAD_NUM; i++) {System.out.println(Thread.currentThread().getName()+i);}}public static void main(String[] args) {// TODO Auto-generated method stubfor (int j = 0; j < THREAD_NUM; j++) {ImplRunnable implRunnable= new ImplRunnable();new Thread(implRunnable,"thread"+j).start();}}}运行结果thread10thread12thread13thread14thread30thread31thread32thread33thread34thread00thread01thread02thread03thread04thread20thread21thread22thread23thread24thread40thread41thread42thread43thread4410.4试说明线程优先级及其调度的关系,并编写一个程序说明其关系。
Java期末复习题及答案——第十章

JAVA期末复习题及答案——第十章一.填空题1.在java.io包中有某个类同时实现了DataInput接口和DataOutput接口,这个类是RandomAccessFile 。
2.所有字节流类的超类是InputStream和OutputStream,所有字符流类的超类是Reader和Writer二.选择题1.下列叙述中,错误的是:CA、所有的字节输入流都继承自InputStream类B、所有的字节输出流都继承自OutputStream类C、所有的字符输入流都继承自OutputStreamReader类D、所有的字符输出流都继承自Writer类2.查找随机文件的记录时,应使用的方法是:CA、readInt()B、readBytes(int n)C、seek(long l)D、readDouble()3.在文件类提供的方法中,用于创建包括父目录的所有目录层次的方法是( B)。
A、mkdir()B、mkdirs()C、list()D、listRoots()4.以下哪个类中有readLine方法:A、InputStreamB、OutputStreamC、BufferedReaderD、BufferedWriter4.下列写法错误的是(D)A.File f = new File (“a.txt”);B.File f = new File (“d:\\a.txt”);C.FileInputStream fis = new FileInputStream (new File (“a.txt”));D.FileOutputStream fos = new FileOutputStream ( File (“.”));5.下列说法正确的是(A)A.InputStream 是字节流B.Reader 是字节流C.Writer 是字节流D.BufferWriter 可以从文件中读取一行1。
Java程序设计基础与实战-习题答案(人邮) 第10章作业参考答案

第10章作业参考答案1 .填空题(1)多线程(2)阻塞Runnable(4)并行(5)同步2 .选择3 .简答题(1)回答要点线程可以彼此独立的执行,它是一种实现并发机制的有效手段,可以同时使用多个线程来完成不同的任务,并且一般用户在使用多线程时并不考虑底层处理的细节。
进程(process)是程序的一次执行过程,或是正在运行的一个程序。
线程是比进程更小的程序执行单位,一个进程可以启动多个线程同时运行,不同线程之间可以共享相同的内存区域和数据。
(2)回答要点有三种方式,如下所示:①继承Thread类:编写简单,如果需要访问当前线程,那么无需使用Thread.currentThread() 方法,直接使用this即可获得当前线程。
但线程类已经继承了Thread类,所以不能再继承其他父类。
②实现Runnable接口:防止由于Java单继承带来的局限性。
但编程稍微复杂,如果要访问当前线程,那么必须使用Thread.currentThread()方法。
③使用Callable接口和Future接口创立多线程:防止由于Java单继承带来的局限性,有返回值,可以抛出异常。
但编程稍微复杂,如果要访问当前线程,那么必须使用Thread. currentThread。
方法。
(3)回答要点线程从新建到死亡称为线程的生命周期。
(4)回答要点启动一个线程是调用start。
方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。
这并不意味着线程就会立即运行。
4 .编程题(1)源代码:参考本章资料文件夹下“作业1”。
(2)源代码:参考本章资料文件夹下“作业2”。
Java程序设计课后练习答案

《J a v a程序设计》课后练习答案第一章Java概述一、选择题1.( A )是在Dos命令提示符下编译Java程序的命令,( B )是运行Java程序的命令。
A.javacB.javaC.javadocD.javaw2.( D )不是Java程序中有效的注释符号。
A.//B.C.D.3.(A.B.C.D.4.JavaA.B.C.D.5.JavaA.1、JavaJava(JVM)Java以下图展示了Java程序从编译到最后运行的完整过程。
2、简述Java语言的特点Java具有以下特点:1)、简单性Java语言的语法规则和C语言非常相似,只有很少一部分不同于C语言,并且Java还舍弃了C语言中复杂的数据类型(如:指针和结构体),因此很容易入门和掌握。
2)、可靠性和安全性Java从源代码到最终运行经历了一次编译和一次解释,每次都有进行检查,比其它只进行一次编译检查的编程语言具有更高的可靠性和安全性。
3)、面向对象Java是一种完全面向的编程语言,因此它具有面向对象编程语言都拥有的封装、继承和多态三大特点。
4)、平台无关和解释执行Java语言的一个非常重要的特点就是平台无关性。
它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。
Java之所以能平台无关,主要是依靠Java虚拟机(JVM)来实现的。
Java编译器将Java源代码文件编译后生成字节码文件(一种与操作系统无关的二进制文件)5)、6)、Java来。
1、/****/}}第二章Java语法基础一、选择题1.下面哪个单词是Java语言的关键字( B )?A. DoubleB. thisC. stringD. bool2.下面属于Java关键字的是( D )。
A. NULLB. IFC. DoD. goto3.在启动Java应用程序时可以通过main( )方法一次性地传递多个参数。
如果传递的参数有多个,可以用空格将这些参数分割;如果某一个参数本身包含空格,可以使用( B )把整个参数引起来。
java程序设计第十章十一题参考答案

10.11.定义一个Circle2D类,包括:两个带有get方法的名为x和y的double型数据域,表明园的中心点;一个带get方法的数据域radius;一个无参数构造方法,该方法创建一个中心点(x,y)值为(0,0)且radius为1的默认圆;一个构造方法,创建指定的x,y和radius的圆;一个返回圆面积的方法getArea();一个返回圆周长的方法getPerimeter();如果给定的点(x,y)在这个圆内,那么方法contains(doubel x, double y)返回true;如果给定的圆在这个圆内,那么方法contains(Circle2D circle)返回true;如果给定的圆和这个圆重叠,那么方法overlaps(Circle2D circle)返回true。
实现这个类。
编写测试程序,创建一个Circle2D对象c1,其中心点在(2,2),半径为5.5,显示它的面积和周长。
同时,检查点(3,3)是否位于这个圆的内部。
然后,再检查另一个圆(中心点为(4,5),半径为10.5)是否位于这个圆的内部。
之后,再检查另一个圆(中心点为(3,5),半径为2.3)是否和这个圆重叠。
代码:class Circle2D{double x=0,y=0,radius=1;public double getX(){return x;}public double getY(){return y;}public double getRadius(){return radius;}Circle2D(){}Circle2D(double x,double y,double radius){this.x=x;this.y=y;this.radius=radius;}public double getArea(){return radius*radius*Math.PI;}public double getPrimeter(){return 2*radius*Math.PI;}public boolean contains(double x,double y){double d=Math.pow(x*x+y*y,0.5);return d<radius?true:false;}public boolean contains(Circle2D circle){return this.radius>circle.radius&&this.getArea()>circle.getArea()?true:false;}public boolean overlaps(Circle2D circle){return this.radius+circle.radius<2*this.radius?true:false;}public static void main(String[] args){Circle2D c1=new Circle2D(2,2,5.5);c1.getArea();c1.getPrimeter();c1.contains(3, 3);Circle2D c2=new Circle2D(4,5,10.5);c1.contains(c2);Circle2D c3=new Circle2D(3,5,2.3);c1.contains(c3);System.out.println("c1的面积为:"+c1.getArea()+" c1的周长为:"+c1.getPrimeter());System.out.println("点(3,3)在圆c1内吗(是为true,不是为否)?"+c1.contains(3, 3));System.out.println("圆c2在圆c1内吗(是为true,不是为否)?"+c1.contains(c2));System.out.println("圆c3和圆c1重叠吗(是为true,不是为否)?" +c1.overlaps(c3));}}。
JAVA程序设计 郭广军 课后答案

《Java程序设计教程》习题及参考答案作者:郭广军习题试题来源:郭广军点击数:2436 更新时间:2008-9-3第1章Java语言概述习题一一、简答题1.Java语言的诞生日是哪一天?它有哪些特点与优势?2.Java语言程序分为哪几种?Java Application程序和Java Applet程序的主要区别是什么?3.Java Application程序在结构上有哪些特点?如何编译、运行?被编译后生成什么文件?该文件机器可以直接识别吗?如何执行?4.安装JDK后如何对JA V A_HOME、PATH和CLASSPA TH环境变量进行设置?它们的作用是什么?5.Java程序在书写上应注意哪些事项?有哪些编码规范?6.为什么要对程序进行注释?Java中有哪几种注释?文档注释符与多行注释符有何不同?二、选择题1.下面关于Java Application 程序结构特点描述中,错误的是(D )。
A.一个Java Application程序由一个或多个文件组成,每个文件中可以定义一个或多个类,每个类由若干个方法和变量组成。
B.Java程序中声明有public类时,则Java程序文件名必须与public类的类名相同,并区分大小写,扩展名为.java。
C.组成Java Application程序的多个类中,有且仅有一个主类。
D.一个.java文件中定义多个类时,允许其中声明多个public类。
2.编译Java程序后生成的面向JVM的字节码文件的扩展名是(B )。
A..java B..class C..obj D..exe3.下面关于Java 语言特点的描述中,错误的是(A )。
A.Java是纯面向对象编程语言,支持单继承和多继承。
B.Java支持分布式的网络应用,可透明地访问网络上的其他对象。
C.Java支持多线程编程。
D.Java程序与平台无关、可移植性好。
4.Java SE的命令文件(java、javac、javadoc等)所在目录是(C )。
《Java基础入门》课后章节习题及答案(完整版)

《Java基础入门》课后章节习题及答案(完整版)《Java基础入门》课后习题第1章Java开发入门一、填空题1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____。
2、Java程序的运行环境简称之为JRE_____。
3、编译Java程序需要使用_javac_____命令。
4、javac.exe和java.exe两个可执行程序存放在JDK安装目录的bin______目录下。
5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用来保存保存Java虚拟机要运行的“.class”文件路径。
二、选择题1、以下选项中,哪些属于JDK工具?(多选)ABCDA、Java编译器B、Java运行工具C、Java文档生成工具D、Java打包工具2、Java属于以下哪种语言?CA、机器语言B、汇编语言C、高级语言D、以上都不对3、下面哪种类型的文件可以在Java虚拟机中运行?DA、.javaB、.jreC、.exeD、.class4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以下哪一种?BA、Java文档制作工具B、Java解释器C、Java编译器D、Java启动器5、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项?B A.d:\jdk; B.d :\jdk\bin; C.d:\jre\bin; D.d:\jre;三、问答题1、简述Java的特点。
面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。
2、简述JRE与JDK的区别。
JRE(Java Runtime Environment,Java运行时环境),它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等。
JAVA第9章第10章课后习题答案

第9章多线程4、C5、D6、package cn.ntu.zhanbin;public class ThreadOutput implements Runnable {static ThreadOutput to = new ThreadOutput();public static void main(String[] args) {//创建两个线程Thread t1 = new Thread(new ThreadOutput());Thread t2 = new Thread(new ThreadOutput());t1.start();t2.start();}public void run() {synchronized (to) {to.print();}}void print() {for (int i = 0; i < 6; i++) {System.out.print(10 + i);if (i < 5) {System.out.print(",");}try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("");}}--------------------------------------------------------------------- 8、package cn.ntu.zhanbin;public class ThreadAlphabet extends Thread {public static void main(String[] args) {//创建3个线程ThreadAlphabet ta1 = new ThreadAlphabet("线程1:");ThreadAlphabet ta2 = new ThreadAlphabet("线程2:");ThreadAlphabet ta3 = new ThreadAlphabet("线程3:");ta1.start();ta2.start();ta3.start();}ThreadAlphabet(String name) {super(name);//调用父类的构造函数}public void run() {//获取当前线程名String name = Thread.currentThread().getName();//输出for (int i = 0; i < 26; i++) {System.out.println(name + (char) (i + 65));try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}}}}--------------------------------------------------------------------- 9、package cn.ntu.zhanbin;public class PrintOdds implements Runnable {private int bound;//创建一个静态PrintOdds对象,并设置边界范围为20static PrintOdds po = new PrintOdds(20);public PrintOdds(int b) {bound = b;}public void print() {for (int i = 1; i < bound; i+=2) {System.out.println(i);}}public void run() {po.print();}public static void main(String[] args) {Thread t = new Thread(po);t.start();}}第10章数据库编程说明:课本中连接数据库和关闭数据库的操作都是调用的P201的例10-1的ConnectionManager,而书中的类只写了getConnection()方法,各个关闭操作的方法均未给出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[解答]:ExecuteQuery()方法执行给定的SQL语句,返回单个ResultSet对象。发送给数据库的SQL语句,通常为静态SQLSELECT语句,返回包含给定查询所生成数据的ResultSet对象。
【5】试述DriverManager对象建立数据库连接所用的几种不同的方法。
p2.add(new Label("输入该单词更新的汉语解释:"));
p2.add(更新汉语解释_文本条);
p2.add(更新按钮);
p4.add(new Label("输入要删除的英语单词:"));p4.add(删除英文单词_文本条);
p4.add(删除按钮);
p4.add(new Label(" "));
(2)Java到本地API
这种类型的驱动程序是部分使用Java语言编写和部分使用本机代码编写的驱动程序,这类驱动程序也必须在服务器端安装好特定的驱动程序,如ODBC驱动程序,然后通过桥接器的转换,把Java API调用转换成特定驱动程序的调用方法,进而操作数据库。
(3)网络协议搭配的Java驱动程序
{ String cname,ename;
Con=DriverManager.getConnection("jdbc:odbc:test","gxy","ookk");
ResultSet rs=Stmt.executeQuery("SELECT * FROM cidian ");
while (rs.next())
p4.add(清空按钮);
add(p1);add(p3);add(p2);add(p4);
查询按钮.addActionListener(this);
更新按钮.addActionListener(this);
填加按钮.addActionListener(this);
删除按钮.addActionListener(this);
catch(ClassNotFoundException e){}
try{
Con=DriverManager.getConnection("jdbc:odbc:test","gxy","ookk");
Stmt=Con.createStatement();
ResultSet rs=Stmt.executeQuery("SELECT * FROM cidian ");
汉语解释_文本条.setText("");
填加英文单词_文本条.setText("");
填加汉语解释_文本条.setText("");
更新英文单词_文本条.setText("");
更新汉语解释_文本条.setText("");
删除英文单词_文本条.setText("");
}
}
public void查询() throws SQLException
关信息(用户名、用户密码等属性列表)来创建一个连接,使DriverManager从注册的JDBC
驱动程序中选择一个适当的驱动程序。
(1)staticConnectiongetConnection(Stringurl,String user,String password):使用指定的数据
库URL、用户名和用户密码创建一个连接,使DriverManager从注册的JDBC
{ ename=rs.getString("单词"); cname=rs.getString("解释");
if(ename.equals(待查英文单词_文本条.getText().trim()))
{汉语解释_文本条.setText(cname);查询记录=1; break;}
}
Con.close();
catch(ClassNotFoundException e){}
try{
Con=DriverManager.getConnection("jdbc:odbc:test","gxy","ookk");Stmt=Con.来自reateStatement();
}
catch(SQLException ee) {}
清空按钮.addActionListener(this);
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{setVisible(false);System.exit(0); } } );
}
public void actionPerformed(ActionEvent e)
{try{填加();}
catch(SQLException ee) {}
}
else if(e.getSource()==删除按钮)
{try{删除();}
catch(SQLException ee) {}
}
else if(e.getSource()==清空按钮)
{待查英文单词_文本条.setText("");
删除英文单词_文本条=new TextField(16);
删除汉语解释_文本条=new TextField(16);
查询按钮=new Button("查询");
更新按钮=new Button("更新");
填加按钮=new Button("填加");
删除按钮=new Button("删除");
清空按钮=new Button("清空文本框");
{if(e.getSource()==查询按钮)
{查询记录=0;
try{查询();}
catch(SQLException ee) {}
}
else if(e.getSource()==更新按钮)
{try{更新();}
catch(SQLException ee) {}
}
else if(e.getSource()==填加按钮)
DataWindow()
{ super("英汉小词典");
setBounds(150,150,300,150);
setVisible(true);setLayout(new GridLayout(4,1));
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
驱动程序中选择一个适当的驱动程序。
(2)static Driver getDriver(String url):定位在给定URL下的驱动程序,让DriverManager
从注册的JDBC驱动程序中选择一个适当的驱动程序。
【6】编写一个应用程序,实现可以从一个数据库的某个表中查询一个列的所有信息。
[解答]://英汉词典的应用示例,程序代码如下:
待查英文单词_文本条=new TextField(16);
汉语解释_文本条=new TextField(16);
更新英文单词_文本条=new TextField(16);
更新汉语解释_文本条=new TextField(16);
填加英文单词_文本条=new TextField(16);
填加汉语解释_文本条=new TextField(16);
{ TextField待查英文单词_文本条,汉语解释_文本条,
更新英文单词_文本条,更新汉语解释_文本条,
填加英文单词_文本条,填加汉语解释_文本条,
删除英文单词_文本条,删除汉语解释_文本条;
Button查询按钮,更新按钮,填加按钮,删除按钮,清空按钮;
int查询记录=0;
Connection Con=null;Statement Stmt=null;
(4)update语句:更新或修改符合规定条件的记录。
(5)delete语句:删除数据表中的行或记录。
(6)drop table语句:删除某个数据表以及该表中的所有记录。
【3】Statement接口的作用是什么?
[解答]:Statement接口用于执行静态SQL语句并返回它所生成结果的对象。在默认情况下,同一时间每个Statement对象在只能打开一个ResultSet对象。因此,如果读取一个ResultSet对象与读取另一个交叉,则这两个对象必须是由不同的Statement对象生成的。如果存在某个语句的打开的当前ResultSet对象,则Statement接口中的所有执行方法都会隐式关闭它。
import java.sql.*;
public class GetColumnAllData{
public static void main(String args[]){
String cname,ename;
Connection Con=null;
Statement Stmt=null;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
[解答]:DriverManager对象建立数据库连接的方法有以下几种:
(1)staticConnectiongetConnection(Stringurl):使用指定的数据库URL创建一个连接。
(2)staticConnectiongetConnection(Stringurl,Propertiesinfo):使用指定的数据库URL和相