当前位置:文档之家› JAVA的多进程运行模式分析与编程

JAVA的多进程运行模式分析与编程

JAVA的多进程运行模式分析与编程
JAVA的多进程运行模式分析与编程

一般我们在java中运行其它类中的方法时,无论是静态调用,还是动态调用,都是在当前的进程中执行的,也就是说,只有一个java虚拟机实例在运行。而有的时候,我们需要通过java代码启动多个java子进程。这样做虽然占用了一些系统资源,但会使程序更加稳定,因为新启动的程序是在不同的虚拟机进程中运行的,如果有一个进程发生异常,并不影响其它的子进程。

在Java中我们可以使用两种方法来实现这种要求。最简单的方法就是通过Runtime中的exec方法执行java classname。如果执行成功,这个方法返回一个Process对象,如果执行失败,将抛出一个IOException错误。下面让我们来看一个简单的例子。

//Test1.java文件

import java.io.*;

public class Test

{

public static void main(String[]args)

{

FileOutputStream fOut=new FileOutputStream("c:\\Test1.txt");

fOut.close();

System.out.println("被调用成功!");

}

}

//Test_Exec.java

public class Test_Exec

{

public static void main(String[]args)

{

Runtime run=Runtime.getRuntime();

Process p=run.exec("java test1");

}

}

通过java Test_Exec运行程序后,发现在C盘多了个Test1.txt文件,但在控制台中并未出现"被调用成功!"的输出信息。因此可以断定,Test已经被执行成功,但因为某种原因,Test的输出信息未在Test_Exec的控制台中输出。这个原因也很简单,因为使用exec建立的是Test_Exec的子进程,这个子进程并没有自己的控制台,因此,它并不会输出任何信息。

如果要输出子进程的输出信息,可以通过Process中的getInputStream得到子进程的输出流(在子进程中输出,在父进程中就是输入),然后将子进程中的输出流从父进程的控制台输出。具体的实现代码如下如示:

//Test_Exec_Out.java

import java.io.*;

public class Test_Exec_Out

{

public static void main(String[]args)

{

Runtime run=Runtime.getRuntime();

Process p=run.exec("java test1");

BufferedInputStream in=new BufferedInputStream(p.getInputStream());

BufferedReader br=new BufferedReader(new InputStreamReader(in));

String s;

while((s=br.readLine())!=null)

System.out.println(s);

}

}

从上面的代码可以看出,在Test_Exec_Out.java中通过按行读取子进程的输出信息,然后在Test_Exec_Out中按每行进行输出。上面讨论的是如何得到子进程的输出信息。那么,除了输出信息,还有输入信息。既然子进程没有自己的控制台,那么输入信息也得由父进程提供。我们可以通过Process的getOutputStream方法来为子进程提供输入信息(即由父进程向子进程输入信息,而不是由控制台输入信息)。我们可以看看如下的代码:

//Test2.java文件

import java.io.*;

public class Test

{

public static void main(String[]args)

{

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

System.out.println("由父进程输入的信息:"+br.readLine());

}

}

//Test_Exec_In.java

import java.io.*;

public class Test_Exec_In

{

public static void main(String[]args)

{

Runtime run=Runtime.getRuntime();

Process p=run.exec("java test2");

BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));

bw.write("向子进程输出信息");

bw.flush();

bw.close();//必须得关闭流,否则无法向子进程中输入信息

//System.in.read();

}

}

从以上代码可以看出,Test1得到由Test_Exec_In发过来的信息,并将其输出。当你不加bw.flash()和bw.close()时,信息将无法到达子进程,也就是说子进程进入阻塞状态,但由于父进程已经退出了,因此,子进程也跟着退出了。如果要证明这一点,可以在最后加上System.in.read(),然后通过任务管理器(在windows下)查看java进程,你会发现如果加上bw.flush()和bw.close(),只有一个java进程存在,如果去掉它们,就有两个java进程存在。这是因为,如果将信息传给Test2,在得到信息后,Test2就退出了。在这里有一点需要说明一下,exec的执行是异步的,并不会因为执行的某个程序阻塞而停止执行下面的代码。因此,可以在运行test2后,仍可以执行下面的代码。

exec方法经过了多次的重载。上面使用的只是它的一种重载。它还可以将命令和参数分开,如exec("java.test2")可以写成exec("java","test2")。exec还可以通过指定的环境变量运行不同配置的java虚拟机。

除了使用Runtime的exec方法建立子进程外,还可以通过ProcessBuilder建立子进程。ProcessBuilder的使用方法如下:

//Test_Exec_Out.java

import java.io.*;

public class Test_Exec_Out

{

public static void main(String[]args)

{

ProcessBuilder pb=new ProcessBuilder("java","test1");

Process p=pb.start();

……

}

}

在建立子进程上,ProcessBuilder和Runtime类似,不同的ProcessBuilder使用start()方法启动子进程,而Runtime使用exec方法启动子进程。得到Process 后,它们的操作就完全一样的。

ProcessBuilder和Runtime一样,也可设置可执行文件的环境信息、工作目录等。下面的例子描述了如何使用ProcessBuilder设置这些信息。

ProcessBuilder pb=new ProcessBuilder("Command","arg2","arg2",''');

//设置环境变量

Mapenv=pb.environment();

env.put("key1","value1");

env.remove("key2");

env.put("key2",env.get("key1")+"_test");

pb.directory("..\abcd");//设置工作目录

Process p=pb.start();//建立子进程

Java多线程程序设计详细解析

一、理解多线程

多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。

线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。

多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU 的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。

多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度,同步等问题,将在以后探讨。

二、在Java中实现多线程

我们不妨设想,为了创建一个新的线程,我们需要做些什么?很显然,我们必须指明这个线程所要执行的代码,而这就是在Java中实现多线程我们所需要做的一切!

真是神奇!Java是如何做到这一点的?通过类!作为一个完全面向对象的语言,Java提供了类https://www.doczj.com/doc/748171130.html,ng.Thread来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程,我们以后的讨论都将围绕这个类进行。

那么如何提供给Java我们要线程执行的代码呢?让我们来看一看Thread类。Thread类最重要的方法是run(),它为Thread类的方法start()所调用,提供我们的线程所要执行的代码。为了指定我们自己的代码,只需要覆盖它!

方法一:继承Thread类,覆盖方法run(),我们在创建的Thread类的子类中重写run(),加入线程所要执行的代码即可。下面是一个例子:

public class MyThread extends Thread

{

int count=1,number;

public MyThread(int num)

{

number=num;

System.out.println

("创建线程"+number);

}

public void run(){

while(true){

System.out.println

("线程"+number+":计数"+count);

if(++count==6)return;

}

}

public static void main(String args[])

{

for(int i=0;i〈5;i++)new MyThread(i+1).start();

}

}

这种方法简单明了,符合大家的习惯,但是,它也有一个很大的缺点,那就是如果我们的类已经从一个类继承(如小程序必须继承自Applet类),则无法再继承Thread类,这时如果我们又不想建立一个新的类,应该怎么办呢?

我们不妨来探索一种新的方法:我们不创建Thread类的子类,而是直接使用它,那么我们只能将我们的方法作为参数传递给Thread类的实例,有点类似回调函数。但是Java没有指针,我们只能传递一个包含这个方法的类的实例。

那么如何限制这个类必须包含这一方法呢?当然是使用接口!(虽然抽象类也可满足,但是需要继承,而我们之所以要采用这种新方法,不就是为了避免继承带来的限制吗?)

Java提供了接口https://www.doczj.com/doc/748171130.html,ng.Runnable来支持这种方法。

方法二:实现Runnable接口

Runnable接口只有一个方法run(),我们声明自己的类实现Runnable接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是Runnable接口并没有任何对线程的支持,我们还必须创建Thread类的实例,这一点通过Thread类的构造函数public Thread(Runnable target);来实现。下面是一个例子:

public class MyThread implements Runnable

{

int count=1,number;

public MyThread(int num)

{

number=num;

System.out.println("创建线程"+number);

}

public void run()

{

while(true)

{

System.out.println

("线程"+number+":计数"+count);

if(++count==6)return;

}

}

public static void main(String args[])

{

for(int i=0;i〈5;i++)new Thread(new MyThread(i+1)).start();

}

}

严格地说,创建Thread子类的实例也是可行的,但是必须注意的是,该子类必须没有覆盖Thread类的run方法,否则该线程执行的将是子类的run方法,而不是我们用以实现Runnable接口的类的run方法,对此大家不妨试验一下。

使用Runnable接口来实现多线程使得我们能够在一个类中包容所有的代码,有利于封装,它的缺点在于,我们只能使用一套代码,若想创建多个线程并使各个线程执行不同的代码,则仍必须额外创建类,如果这样的话,在大多数情况下也许还不如直接用多个类分别继承Thread来得紧凑。

综上所述,两种方法各有千秋,大家可以灵活运用。

下面让我们一起来研究一下多线程使用中的一些问题。

三、线程的四种状态

1.新状态:线程已被创建但尚未执行(start()尚未被调用)。

2.可执行状态:线程可以执行,虽然不一定正在执行。CPU时间随时可能被分配给该线程,从而使得它执行。

3.死亡状态:正常情况下run()返回使得线程死亡。调用stop()或destroy()亦有同样效果,但是不被推荐,前者会产生异常,后者是强制终止,不会释放锁。

4.阻塞状态:线程不会被分配CPU时间,无法执行。

四、线程的优先级

线程的优先级代表该线程的重要程度,当有多个线程同时处于可执行状态并等待获得CPU时间时,线程调度系统根据各个线程的优先级来决定给谁分配CPU时间,优先级高的线程有更大的机会获得CPU时间,优先级低的线程也不是没有机会,只是机会要小一些罢了。

你可以调用Thread类的方法getPriority()和setPriority()来存取线程的优先级,线程的优先级界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之间,缺省是5(NORM_PRIORITY)。

JAVA程序设计期末考试题(多套含答案)

《JA V A程序设计》期末考试试题(五) 一、单选题 1、当某一线程正处于休眠状态,而另一个线程用Thread 类中的interrupt() 方法中断它时,抛出的异常类型是()。 A) IOException B) RuntimeException C) InterruptedException D) ClassNotFoundException 2、下面的程序段的功能是( )。 File file1=new File("d:\\xxx\\yyy\\zzz"); file1.mkdirs(); A)在当前目录下生成子目录:\xxx\yyy\zzz B)生成目录:e:\xxx\yyy\zzz C)在当前目录下生成文件xxx.yyy.zzz D)以上说法都不对 3、应用程序的main方法中有以下语句,则输出的结果是( )。 String s = "xxxxxxxxxxxxxxx#123#456#zzzzz"; int n = s.indexOf("#"); int k = s.indexOf("#", n+1); String s2 = s.substring(n+1, k); System.out.println(s2); A) 123456 B) 123 C) xxxxxxxxxxxxxxx D) zzzzz 4、关于下面的程序Test.java说法正确的是( )。 public class Test { String x="1"; int y; public static void main(String args[]) { int z=2; System.out.println(x+y+z); } } A)3 B)102 C) 12 D)程序有编译错误 5、应用程序的main方法中有以下语句,则输出的结果是( )。

JAVA程序设计-课程标准

《JAVA程序设计》课程标准 一、课程性质 《JAVA程序设计》是计算机类专业的核心课程,是计算机类专业的一门重要的专业基础课程,旨在培养学生程序设计技术和OOP 设计思想,涉及计算机体系结构、面向对象编程、多线程处理、网络通信以及程序设计等内容,通过本课程的学习,学生能够了解Java 语言特征、常见的Java 类库以及面向对象程序设计思想,掌握计算机程序的结构;掌握程序的开发过程;掌握常用数据结构及Java编程语言的语法;学会利用Java 语言编写面向网络应用的简单程序。为以后学习更高级的计算机相关课程,从软件开发相关工作奠定坚实的基础。 二、课程设计思路 1、内容选择 课程中所涵盖的教学内容是依据对行业及相关企业的调研、根据行业专家对IT制造专业所涵盖的岗位群进行的任务和职业能力分析,同时遵循高等职业学校学生的认知规律,紧密结合职业资格证书中相关考核要求。 2、教学法设计 根据本课程的教学目标要求和课程特点以及有关学情,选择适合于本课程的最优化教学法。综合考虑教学效果和教学可操作性等因

素,本课程选用讲授法、实验教学法及案例驱动法。 实验教学法:是指学生在教师的指导下,上机编写程序。 案例驱动法:是指由老师提出或设置某些问题,通过带领学生解决实际的案例教授知识点和类库的用法。 3、内容编排设计 教学内容是根据Java程序员的基本要求,结合职业技能证书考证,培养学生的实践动手能力,使学生在职业实践活动的基础上掌握知识,增强课程内容与职业岗位能力要求的相关性。 三、课程目标 通过本课程的学习,使学生具备Java程序设计语言相关知识、能够编写、调试Java程序,遵守良好的代码编写规范。能够使用Java 语言解决实际问题,能胜任Java程序开发、软件测试等工作任务。 1、知识目标 (1)掌握JAVA语言的基本语法; (2)掌握数组的使用; (3)掌握面向对象程序设计的基本方法; (4)学会处理程序运行中的异常; (5)学会使用Java常用的类,包括(String类,Java包装类,Math类,Java集合框架); (6)学会使用Java IO流读写文件; (7)会使用swing开发简单的图形界面; (8)了解多线程编程;

《JAVA语言程序设计》期末考试试题及答案

《JA V A语言程序设计》期末考试试题及答案3 一、单项选择题 1、如下哪个是Java中的标识符() A、public B、super C、3number D、width 2、如下哪个是Java中的标识符( ) A、fieldname B、super C、3number D、#number 3、已知如下定义:String s = "story"; 下面哪个语句不是合法的( ) A、s += "books"; B、s = s + 100; C、int len = s.length; D、String t = s + “abc”; 4、如下哪个是Java中有效的关键字() A、name B、hello C、false D、good 5、下面的代码段执行之后count的值是什么( ) int count = 1; for (int i = 1; i <= 5; i++) { count += i; } System.out.println(count); A、5 B、1 C、15 D、16 6、定义一个类,必须使用的关键字是( ) A、public B、class C、interface D、static 7、定义一个接口必须使用的关键字是() A、public B、class C、interface D、static 8、如果容器组件p的布局是BorderLayout,则在p的下边中添加一个按钮b,应该使用的语句是() A、p.add(b); B、p.add(b,"North"); C、p.add(b,"South"); D、b.add(p,"North"); 9、声明并创建一个按钮对象b,应该使用的语句是() A、Button b=new Button(); B、button b=new button();

JAVA语言程序设计期末考试试题及答案

《JA V A语言程序设计》期末考试试题及答案1(应考必备题库) 一、单选择题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A. java B. .class C. html D. .exe 2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A )。 A. 3 B. 3. 5 C. 4 D. 5 3、不允许作为类及类成员的访问控制符的是( C )。 A. public B. private C. static D. protected 4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 二、填空题 1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、 编译生成字节码和解释运行字节码。 2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占 用2字节内存空间,这样,无论是中文字符还是英文字符,都是占 用2字节内存空间。 3、设x = 2 ,则表达式( x + + )/3 的值是0 。 4、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为true和false。 5、抽象(abstract) 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final)方法是不能被当前类的子类重新定义的方法。 6、创建一个名为MyPackage 的包的语句是package MyPackage ; , 该语句应该放在程序的位置为:应该在程序第一句。 7、设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70}; 则执行以下几个语句后的输出结果是120。

Java程序设计课程项目题目2017年

Java程序设计课程项目题目 1、汽车出租管理程序 功能要求:1)基本信息管理,包括车辆及车辆租赁信息的增、删、改、查功能;可出租的汽车有客车、面包车和轿车,要求使用继承设计类结构; 2)客户信息管理,包括客户信息的增、删、改、查功能,可对客户分组,不同组别给予不同的折扣,添加客户信息时刻增加担保人信息; 3)日常业务管理,包括汽车租赁、汽车归还等功能,归还汽车时进行结算价钱。 4)数据可存到数据库中。 2、图形编辑与计算管理程序 功能要求:1)利用菜单选择不同功能; 2)可利用字符绘制三角形、矩形、圆形和梯形,具体尺寸和坐标可由用户输入; 3)可计算各图形的面积; 4)可统计各图形个数及图形总数; 5)要求用到多态和接口等知识点; 6)要求有异常处理机制。 3、个人通讯录管理程序 功能要求:1)通讯录信息包括姓名、性别、职业、手机号、email地址等属性; 2)能够保存通讯录信息(数组、文件、数据库); 3)能够增加通讯录信息; 4)能够修改通讯录信息; 5)能够删除通讯录信息 6)能够查找通讯录信息(查询分为快速查找(首字母查找)、精确查找和按组查找,而且可选择按姓名、性别、手机号、email地址等查找); 7)可为通讯录设置组(组也可以增加、修改、删除、查询); 8)要求用到大部分Java知识,如继承、多态、接口和异常处理等。 9)数据可存到数据库中。 4、计算器模拟程序 功能要求:1)要求实现的运算:+、-、×、÷、%(取余)、求平方根,求平方等; 2)支持的数据类型有整型、浮点型、复数类型(复数不能进行后三种运算)等; 3)用户从键盘输入两个数据,在显示器输出运算结果; 4)要有菜单让用户选择功能,可以为命令行式的菜单,也可以为图形方式的菜单。 5、自动售货机模拟程序 功能要求:1)自动售货机只出售矿泉水、冰红茶、果粒橙、可乐和雪碧等几种饮料; 2)初始显示各种饮料的剩余瓶数及价格,用户输入要购买的饮料及瓶数,并输入投递的金额,系统自动计算找零,并提示饮料出仓,售完的饮料给出提示; 3)系统只接受1元、5元和10元的钱币,一次最多只能买3瓶饮料,

Java程序设计期末考试试题

Java程序设计期末考试试题、试卷、习题A卷 一、选择题。本题共20小题,每题2分,满分40 分。 1、在浏览器中执行applet 程序,以下选项中的哪个方法将被最先执行……… () A)init() B)start() C)destroy() D)stop() 2、有以下方法的定义,请选择该方法的返回类型() ReturnType method(byte x, double y) { return (short)x/y*2; } A)byte B)short C)int D)double 3、以下哪项可能包含菜单条()。 A)Panel B)Frame C)Applet D)Dialog 4、Java application中的主类需包含main方法,main方法的返回类型是什么?()A)int B)float C)double D)void 5、Java application中的主类需包含main方法,以下哪项是main方法的正确形参?( ) A)String args B)String ar[] C)Char arg D)StringBuffer args[] 6、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。 A). java B) .class C) . html D) .exe 7、设int型变量x = 1 , y = 2 , z = 3,则表达式y+=z--/x++ 的值是( )。 A)3 B)3. 5 C)4 D)5 8、不允许作为类及类成员的访问控制符的是( )。 A)public B)private C)static D)protected 9、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。 A)static void method( ) B)public void method( ) C)final void method( ) D)abstract void method( ) 10、以下哪一个不是JAVA的标准数据流( )。 A)标准输出数据流B)标准输入数据流C)标准错误数据流D)标准运算数据流 11.设有下面两个赋值语句:( ) a = Integer.parseInt(“123”); b = Integer.valueOf(“123”).intValue(); 下述说法正确的是()。 A)、a是整数类型变量,b是整数类对象。B)、a是整数类对象,b是整数类型变量。C)、a和b都是整数类对象并且值相等。D)、a和b都是整数类型变量并且值相等。 12、下列代表十六进制整数的是( ) A)0123 B)1900 C)fa00 D)0xa2

Java程序设计期末考试题

Java程序设计期末考试题 一、选择题 下列说法中,不正确的是( A ) A) 一个java源程序编译通过后,得到的结果文件数也只有一个。 B) 一个java源程序经过编译后,得到的文件的扩展名一定是.class。 C) 一个java源程序只能有一个public class类定义,且源文件的名字与public class的类名相同,扩展名必须是.java。 D) 一个java源程序可以包含多个class类。 请问,以下哪些描述是正确的? 请选择所有正确答案: (1)如果package语句存在,则必须出现在源文件的非空白首行。(2)如果import语句存在,则必须出现在源文件的非空白首行。(3)如果main()方法存在,则必须出现在源文件的非空白首行。(4)如果在源文件中声明了一个public接口,则其名称必须和源文件名一致。 请问,以下哪些是Java中的合法标识符? 请选择所有正确答案: (1)my-id (2)my_id

(3)101ids (4)id101 请问,以下哪些是合法的标识符? 请选择所有正确答案: (1)%abcd (2)$abcd (3)1abcd (4)package (5)_a_long_name 以下哪个不是Java的关键字?() A、FALSE B、const C、this D、void 以下哪个不是Java的关键字?() A、TRUE B、goto C、this D、void Java的字符类型采用的是Unicode编码方案,每个Unicode码占用()个比特位。 A、8 B、16

C、32 D、64 请问一下哪些修饰符用于声明一个常量?请选择一个正确答案:static final abstract public 给出以下代码,该程序的运行结果是什么? public class Example{ final int x=0; Example(){ x=1; } final int aMethod(){ return x; } } 请选择所有正确答案: 代码编译错误,因为非final类中存在final方法。 代码编译成功。

《JAVA程序设计》期末考试试题汇总

《JA V A程序设计》期末考试试题 汇总 (适用于计科11) 喻思远 2012-12-3

前言: 同学们,JA V A考试就要来咯,现在我给大家一份复习资料,这份资料是我从网上找的,是各高校历年的期末试题,然后经过我的删选而得的。主要题型是单选题,填空题,判断题,读程序题,写程序题。 其中需要注意注意的是,最后的写程序题,本套题目中相对较少,我们的期末考试考的写程序题应该是书上的原题,因此我过两天再给大家说下具体可能考的写程序题目。还有,这份题目中可能有些题目重复了或很相似,对于这种出现次数多的题目,同学们要更加引起重视。这个题库题目较多,不要求大家能够看完每道题,只希望把看到的掌握好。大家一定要结合课本来复习,毕竟这个题不是老师给的,不会像c++那样都是原题。 最后,我想说明一点,我给这个题库只是想给大家一个复习的思路,知道考什么知识点,然后进行复习。 加油,同学们,JA V A考试的成功一定会眷顾你!!!

《JA V A程序设计》期末考试试题(一) 一、单选择题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A. java B. .class C. html D. .exe 2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A )。 A. 3 B. 3. 5 C. 4 D. 5 3、不允许作为类及类成员的访问控制符的是( C )。 A. public B. privates C. static D. protected 4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 二、填空题 1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、 编译生成字节码和解释运行字节码。 2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占 用2字节内存空间,这样,无论是中文字符还是英文字符,都是占 用2字节内存空间。 3、设x = 2 ,则表达式( x + + )/3 的值是0 。 4、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为true和false。 5、抽象(abstract) 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final)方法是不能被当前类的子类重新定义的方法。 6、创建一个名为MyPackage 的包的语句是package MyPackage ; ,

(程序设计基础JAVA)期末考试试卷

……………… …………………………密 ……………………封… …………………线………………………………………级号名班学姓《程序设计基础(java)》试题B 卷试卷说明:闭卷考试,时间120分钟。一、填空(本题共15空,每空2分,共30分)1.如果一个java 源程序文件中定义有4个类,使用sun 公司的JDK 编译器javac 编译该源程序文件将产生________个文件名与类名相同扩展名为_______的字节码文件。2.Java 中所有类都是类__Object__的子类。3.请填出在java .lang 包中与下列基本数据类型相对应的封装类:float :java .lang .Float ,char :_______,boolean :________。4.被关键字_________修饰的方法是不能被当前类的子类重新定义的方法5.线程的四种状态是_______、__、_、____。6.java 语言中_____是所有类的根。7.Swing 的事件处理机制包括___、事件和事件处理者。8.URL__________是的缩写。9.java 有两类应用程序java Application 和__________。10.转义字符以_____开头。二、选择(本题共20小题,每题2分,共40分)1.欲构造ArrayList 类的一个实例,此类继承了List 接口,下列哪个方法是正确的?()A 、ArrayList myList=new Object ();B 、List myList=new ArrayList ();C 、ArrayList myList=new List ();D 、List myList=new List ();2.paint()方法使用哪种类型的参数?()A 、Graphics B 、Graphics2D C 、String D 、Color 3.指出正确的表达式()A 、byte=128;B 、Boolean=null;C 、long l=0xfffL;D 、double=0.9239d;4.指出下列程序运行的结果()public class Example{String str=new String("good");char[]ch={'a','b','c'};public static void main(String args[]){Example ex=new Example();ex .change(ex .str,ex .ch);System .out .print(ex .str+"and ");Sytem .out .print(ex .ch);}public void change(String str,char ch[]){ch[0]='g';}}B 、good and abc B 、good and gbc C 、test ok and abc D 、test ok and gbc 5.运行下列程序,会产生什么结果()public class X extends Thread implements Runable{public void run(){System .out .println("this is run()");}public static void main(String args[]){Thread t=new Thread(new X());t .start();}}A 、第一行会产生编译错误B 、第六行会产生编译错误C 、第六行会产生运行错误D 、程序会运行和启动6.要从文件"file .dat"文件中读出第10个字节到变量C 中,下列哪个方法适合?()A 、FileInputStream in=new FileInputStream("file .dat");in .skip(9);int c=in .read();B 、FileInputStream in=new FileInputStream("file .dat");in .skip(10);int c=in .read();C 、FileInputStream in=new FileInputStream("file .dat");int c=in .read();D 、RandomAccessFile in=new RandomAccessFile("file .dat");in .skip(9);int c=in .readByte();7.容器被重新设置大小后,哪种布局管理器的容器中的组件大小不随容器大小的变化而改变?()A 、CardLayout B 、FlowLayout C 、BorderLayout D 、GridLayout 8.给出下面代码:public class Person{static int arr[]=new int[10];public static void main(String a[]){System .out .println(arr[1]);}}那个语句是正确的?()A 、编译时将产生错误;B 、编译时正确,运行时将产生错误;C 、输出零;D 、输出空。9.下列那个是反斜杠的正确表示?()A 、\\B 、*\\C 、\’D 、\’\’10.下列哪些语句关于内存回收的说明是正确的?()A 、程序员必须创建一个线程来释放内存;题号一二三四五六七八九总分得分得分得分

《JAVA程序设计项目案例训练》期末试卷(A卷)

献给Java专业期末考试复习的同学希望你们能考个好成绩 JAVA程序设计项目案例训练试题(A卷) 一、选择题(共10小题,每小题4分,共计40分) 1. 下面()数据类型可用于main()方法中传递的参数 A、String B、Integer C、Boolean D、Variant 2. 在屏幕上显示的消息正确的语句是() A、System.out.println("I am Java Expert"); B、system.out.println("I am Java Expert"); C、System.Out.Println("I am Java Expert"); D、System.out.println('I am Java Expert'); 下面()命令可用于编译Java程序 A、java B、javac C、appletviewer D、javadoc 4. 在一个类中定义的成员变量和成员方法时,不允许()。 A. 两个成员变量名相同. B. 成员变量与成员方法名相同. C. 两个成员方法名相同 D. 成员方法中的参数与成员变量名相同 5. 在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序的特性称为()。 A、隐藏 B、覆盖 C、重载 D、Java不支持此特性 6. 执行下面的程序,输出结果是()。 public class Test { int x= 12; public void method(int x) { x+=x; System.out.println(x);

} public static void main(String[] args){ Test t = new Test(); t.method(5); } } A. 5 B. 10 C. 12 D. 17 E. 24 7. 关于下面程序片段,()的结论是正确的。 String a = "Java"; String b = "Java"; String x = "Ja"; String y = "va"; String c = x + y; A、a和b指向同一个实例对象,a和c指向同一个实例对象 B、a和b指向同一个实例对象,a和c不指向同一个实例对象 C、a和b不指向同一个实例对象,a和c指向同一个实例对象 D、a和b不指向同一个实例对象,a和c不指向同一个实例对象 8. 设有定义:String s=”World”;,下列语句错误的是()。 A、int m=s.indexOf(‘r’); B、char c=s.charAt(0); C、int n=s.length(); D、String str=s.append(); 9. 执行完下面程序片段后,(B)的结论是正确的。 int a, b, c; a = 1; b = 2; c = (a + b > 3 ? a++ : b++); A、a的值是2,b的值是3 B、a的值是1,b的值是3 C、a的值是1,b的值是2 D、c的值是false 10. 字符流与字节流的区别是()。 A、每次读入的字节数不同 B、前者带有缓冲,后者没有 C、前者是块读写,后者是字节读写 D、二者没有区别,可以互换使用 二、填空题(共10个空,每空2分,共计20分) 1. JVM是指()。 2. 在Java语言中,所有的数组都有一个()属性,这个属性存储了该数组的元素的个数(或者说数组长度)。 3. Java中类成员的限定词有以下几种:private 缺省, (), ()。其中()的限定的范围最大。 4. 在Java程序运行时,系统自动通过System类创建三个静态的I/O对象,它们是标准输入流对象( )、标准输出流对象( ) 和标准错误流对象( )。 5. java中的异常处理通过5个关键字来实现:它们是try、catch、throw、throws和finally。进行异常监测的代码要放在try子句内:捕获异常需要使( )子句;在方法中宣布可能产生的异常应使用()关键字。

JAVA语言程序设计期末考试试题及答案

《JA V A语言程序设计》期末考试试题及答案 (应考必备题库) 一、单选择题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。 A. java B. .class C. html D. .exe 2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( )。 A. 3 B. 3. 5 C. 4 D. 5 3、不允许作为类及类成员的访问控制符的是( )。 A. public B. private C. static D. protected 4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 二、填空题 1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、 编译生成字节码和解释运行字节码。 2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占 用2字节内存空间,这样,无论是中文字符还是英文字符,都是占 用2字节内存空间。 3、设x = 2 ,则表达式( x + + )/3 的值是0 。 4、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为true和false。 5、抽象(abstract) 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final)方法是不能被当前类的子类重新定义的方法。 6、创建一个名为MyPackage 的包的语句是package MyPackage ; , 该语句应该放在程序的位置为:应该在程序第一句。 7、设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70}; 则执行以下几个语句后的输出结果是120。

java程序设计项目教程第3章答案

一、选择题 参考答案: 1.B 2.A 3.D 4.C 5.A 6.A 7.B 8.B 9.A 10.A 11.A 12.D 二、填空题 参考答案: 1.覆盖 2.参数 3.方法体 4.public static final 5.抽象 6.extends 7.Student String 8.class static 三、简答题 1.子类能够继承父类的哪些成员变量和方法? ①子类可以继承父类的属性,包括实例成员变量和类成员变量。 ②子类可以继承父类除构造方法以外的成员方法,包括实例成员方法和类成员方法。2.this和super关键字的作用是什么? 使用this关键字可实现调用本类的构造方法及调用被方法隐藏的成员变量。 super关键字可调用父类的构造方法及调用父类的同名成员。 3.什么是方法的重载?什么是方法的覆盖? 方法重载是指同一个类中多个方法享有相同的名字,但是这些方法的参数必须不同,参数不同是,指或者是参数的个数不同,或者是参数类型不同,或者是不同类型参数的排列顺序不同。 类继承的过程中,子类方法跟父类方法名字相同,并且传递的参数完全一样,称子类覆盖了父类的方法。 4.什么是多态?使用多态有什么优点? 多态的表现形式主要有方法的重载和方法的覆盖。 使用多态可根据同名方法的参数不同实现不能的功能或同一类对象根据赋予的引用对象的不同来实现不同的行为。 5.什么是包?定义包的作用是什么? 包是java提供的一种命名空间机制,实现了对类的存放和引用位置的管理,包对应一个文件夹。 java的类库就是用包来实现了类的分类和存放,每个包中都有多组相关的类和接口。6.什么是接口?接口中的变量和方法各有什么要求? 接口是特殊的抽象类,可以想象为一个“纯”抽象类,就是一组具有特定意义的静态常量和抽象方法的集合。 属性定义时必须赋初值,是常量。属性性前修饰符时默认该属性由final、static修饰。 接口中的方法必须是抽象方法。 7.类BB是AA类的子类。类AA和类BB中都定义了变量x和method()方法,这种情况称为子类隐藏了父类的同名变量x并覆盖了父类的method()方法. 8.输出结果为: AA BB 若将main()方法中的语句改为:BB b=new BB(10); 程序输出的结果是什么? AA AAAA BBBB

《JAVA程序设计》期末考试试题

《JA V A程序设计》期末考试试题(六)一、填空题 1.定义类的保留字是(class ),定义接口的保留字是( interface )。 2.Socket通常也称为(套接字),用于描述( IP 地址) 和( 端口)。 3.线程的优先级在( 1 )至( 10)之间,数值越大( 任务越紧急)。 4.构造方法是一种特殊的成员方法,构造方法名与( 类名) 相同。 5.Java语言只允许单继承,指每个类只能有一个( 父类)。 6.Java源程序的扩展名是( .java ),经过编译后的程序的扩展名是(.class )。 7. 在一个时间只能由一个线程访问的资源称为( 临界资源) 。访问临界资源的代码(临界代码)。 8. 在多线程系统中,多个线程之间有( 同步) 和( 互斥) 两种关系。 二、选择题 1.关于选择结构下列哪个说法正确?(B)A.if语句和else语句必须成对出现 B.if语句可以没有else语句对应 C.switch结构中每个case语句中必须用break语句 D.switch结构中必须有default语句 2.while循环和do…while循环的区别是:(D) A.没有区别,这两个结构任何情况下效果一样B.while循环比do…while循环执行效率高C.while循环是先循环后判断,所以循环体至少被执行一次 D.do…while循环是先循环后判断,所以循环体至少被执行一次 3.关于for循环和while循环的说法哪个正确?(B) A.while循环先判断后执行,for循环先执行后判断。 B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果 C.两种循环任何时候都不可以替换 D.两种循环结构中都必须有循环体,循环体不能为空 4.下列修饰符中与访问控制无关的是(D)A.private B.public C.protected D.final 5.void的含义:(A) A.方法没有返回值 B.方法体为空 C.没有意义 D.定义方法时必须使用 6.return语句:(C) A.只能让方法返回数值 B.方法都必须含有 C.方法中可以有多句return D.不能用来返回对象 7.关于对象成员占用内存的说法哪个正确?(B) A.同一个类的对象共用同一段内存 B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间 C.对象的方法不占用内存 D.以上都不对 8下列说法哪个正确?(C) A.不需要定义类,就能创建对象 B.对象中必须有属性和方法 C.属性可以是简单变量,也可以是一个对象 D、属性必须是简单变量

Java程序设计课程标准

J a v a程序设计课程标准标准化工作室编码[XX968T-XX89628-XJ668-XT689N]

《J a v a程序设计》课程标准 1.课程定位 本课程是网络技术与信息处理专业和计算机相关专业的核心课程和必修课程。学生经过本课程的学习可以掌握Java面向对象程序设计的能力。本课程与前修课程《计算机操作基础》、《程序设计基础》相衔接,共同培养计算机操作技能;与后续课程《Java WEB应用设计》、《Java ME手机应用开发》相衔接,共同培养程序设计能力和软件开发能力。 2.课程目标 2.1知识目标 (1)掌握面向对象程序设计基本概念、理解和掌握类及对象的基本构成和实现方法, (2)掌握继承、接口和异常处理的方法; (3)掌握图形界面的设计方法及事件处理的方法; (4)掌握多线程的概念并学会简单的多线程应用程序编写; (5)了解数据流的概念,并能实现基本的文件读写过程和程序实现; (6)了解数据库应用程序的基本构成,并能够编写一般的数据库访问操作程序。 2.2能力目标 2.2.1专业能力: (1)熟练掌握Java开发工具,掌握面向对象程序的基本结构,能够完成基本类的设计和应用。 (2)掌握程序设计的基础:基本的数据类型,运算符、表达式和语句。 (3)掌握程序设计的结构、设计方法。 (4)掌握数组和字符串的使用。

(5)掌握继承的概念、能够正确地实现继承。 (6)能够准确地理解接口,掌握接口的设计和实现方法。 (7)理解异常处理的概念,能够准确地应用异常的处理方法,处理不同类型的异常。 (8)掌握集合类的概念和使用方法。 (9)掌握图形界面的设计方法,掌握不同组件的功能和使用方法,掌握布局的设计方法。 (10)理解事件及事件处理的过程,掌握事件接口的选择及接口实现的方法,掌握主要的事件的处理技巧。 (11)掌握数据库应用的基本要求和方法,实现数据库的访问操作。 2.2.2社会能力: (1)具有良好的思考和分析问题的能力; (2)具有较好的信息检索能力; (3)具有良好的职业道德和团队精神; (4)具有很好的与人沟通和交流的能力。 2.2.3方法能力: (1)建立面向对象程序设计的思想和基本方法; (2)具备一定的程序逻辑能力,程序模仿能力,程序设计的思维方法和能力; (3)能够对于给定问题进行基本的分析,并能够对事物进行抽象,创建基本的类,并通过程序代码予以实现; (4)掌握Java基本的应用程序的设计和调试方法。 (5)能够对现实进行抽象,建立基本的类,掌握基本的算法技能; (6)能够使用不同的方式解决一些比较困难的问题。 3.教学内容及教学设计 学习情境描述、内容排序及学时分配见下表:

Java程序设计期末试卷(附答案)

一、单项选择题:在每小题的备选答案中选出一个正确答案,并将正确答案的代码填在题干 上的括号内。(每小题1 分,共 20分) 1. 在Java的以下的变量赋值语句中,无法通过编译的是(A)。 A.char c1=”男”; B. double d1=1.2 ; C.char c2=’女’; D. int f1=128 ; 2. 下列选项中关于Java类的理解错误的是(A)。 A.因为类中的属性和方法是从共性中抽象出来的,所以类的属性不能被赋值,类 的方法不能有具体实现 B.在Java类中使用class关键字定义类 C.定义类就定义了一个自己的数据类型 D.类是具有相同属性和共同行为的一组对象的集合 3. 在Java中,想要存储如员工年龄的数据最好使用(D)数据类型。 A. boolean B. String C. char D. int 4. Java语言中的数组是一个变量,用于保存一组相同数据类型的元素。以下数组声明 错误的是(D)。 A. int[] ABC; B. double ABC[]; C. String[] name; D. char ABC[10]; 5. 给定如下所示的Java代码,要使这段代码能够编译成功,横线处应该填入(D)。 public count(int i,double d){ return i*d*2.0; } A. int B. void C. char D. double 11. Java在使用interface声明一个接口时,只可以使用(D)修饰符修饰该接口。 A. private B. protected C. public D. private protected 14. 在Java中,通过调用以下(C)方法,可以加载Sun的JDBC-ODBC桥。 A. new Class().load("sun.jdbc.odbc.JdbcOdbcDriver"); B. new Class().forName("sun.jdbc.odbc.JdbcOdbcDriver"); C. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); D. Class.load("sun.jdbc.odbc.JdbcOdbcDriver"); 15. 在Java中,类Test的代码如下所示,假设类Test的实例化对象名为t,则选项(C) 中的语句不能正确调用Test类的方法。 class Test { public void change(int m){ System.out.println("one parameter"); }

JAVA程序的设计期末考试试题汇总与答案

《JAVA程序设计》期末考试试题(一) 一、单选择题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码 文件的扩展名为( )。 A. java B. .class C. html D. .exe 2、设 x = 1 , y = 2 , z = 3,则表达式 y+=z--/++x 的值是( )。 A. 3 B. 3. 5 C. 4 D. 5 3、不允许作为类及类成员的访问控制符的是( )。 A. public B. private C. static D. protected 4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类 名AB作为前缀就可以调用它,该方法头的形式为( )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 二、填空题 1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、 编译生成字节码和解释运行字节码。 2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode 码占 用2字节存空间,这样,无论是中文字符还是英文字符,都是占 用2字节存空间。 3、设 x = 2 ,则表达式 ( x + + )/3 的值是0 。 4、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为true和false。 5、抽象(abstract) 方法是一种仅有方法头,没有具体方法体和操作实现 的方法,该方法必须在抽象类之中定义。最终(final)方法是不能被当前类的 子类重新定义的方法。

项目书(Java程序设计)

目录 项目的引入 (2) 需求 (3) 任务 (4) 项目要求 (5) 需求分析 (6) 一、基本数据维护功能需求 (6) 二、基本业务功能需求 (7) 三、数据库维护功能 (7) 四、查询功能需求 (8) 五、安全使用管理功能需求 (9) 项目主要涉及到的知识点 (10) 项目的评分标准 (11) 编码规范 (12) 示例代码 (15) 项目文档模板 (18) 项目指导表 (18)

项目的引入 HNS软件学院随着学校规模的扩大,图书馆中传统的手工管理方式已远远不能满足与日俱增的书籍管理需要,为了提高工作效率,降低运行成本,方便读者使用,图书管理系统必须引入信息化管理方式。因此,由软件学院软件开发部组织成立一个项目小组来为图书馆开发一套图书馆管理系统。

需求 在对图书馆管理的工作流进行现场考察、学习以及与图书馆工作人员进行交流后,经整理和分析后。现决定在本次项目中需要实现的功能如下: ①基本数据维护功能模块 在这个功能模块中,提供了使用者录入、修改并进行维护基本数据的途径。比如在这个模块中可以输入读者的信息、书籍的各项信息,也可以对这些信息做修改、更新。 ②基本业务功能模块 这个功能模块主要实现对读者利用图书馆借还书籍的管理,比如根据读者的借用书籍要求更新图书籍数据库系统,如果书籍已经借出,则显示借阅失败。用户每次还书也要进行数据库记录的各项更新。这个模块是整个图书馆管理系统的关键部分。 ③数据库管理功能模块 在图书管理部门,对所有的图书信息以及会员信息都要进行统一管理,书籍的借出等情况也都要进行详细的登记,以便能对整个图书管理部门的运作有全面的了解,并根据实际情况补充书源不足的部分。 ④信息查询功能模块 在对图书馆管理信息系统进行全面信息化管理的过程中,查询是一项非常重要的功能。比如用户借书信息,借还日期的信息,书籍库源情况信息,预留信息等,这项功能能使用户得到即时书籍信息,方便用户根据实际情况选择业务方式。 ⑤安全/使用管理功能模块 这是任何一个信息管理系统都需要的部分,图书管理系统的操作也只能由专人进行,只有图书管理部门的工作人员才能拥有权限,特别是图书的借出状况,如果没有安全管理部分,后果难以想象,可能每次登录都需要用户身份的验证。

相关主题
文本预览
相关文档 最新文档