java期末复习题答案

更新时间:2023-11-07 19:30:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、选择题

1. Java application中的主类需包含main方法,main方法的返回类型是什么?( ) A、int B、float C、double D、void 2、异常包含下列那些内容? A)程序中的语法错误 B)程序的编译错误 C)程序执行过程中遇到的事先没有预料到的情况 D)程序事先定义好的可能出现的意外情况  3、.函数重载是指

A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同

B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C.两个以上的函数名字不同,但形参的个数或类型相同

D.两个以上的函数取相同的函数名,并且函数的返回类型相同 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″); System.out.print(ex.ch); }

public void change(String str,char ch[]){ str=″test ok″; ch[0]=′g′; } }

A.good and abc B.good and gbc

C.test ok and abc D.test ok and gbc

5. 下列哪个选项的java源文件代码片段是不正确的? A.package testpackage; public class Test{ } B.import java.io.*; package testpackage; public class Test{ } C.import java.io.*; class Person{ }

public class Test{ } D.import java.io.*; import java.awt.*; public class Test{ }

6. 以下程序段执行后将有( )个字节被写入到文件afile中。

try{ FileOutputStream fos=new FileOutputStream(“afile.txt”); DataOutputStream dos=new DataOutputStream(fos);

1

dos.writeInt(3);

dos.writeDouble(0.01); dos.close(); fos.close( ); }

catch(IOException e) { }

A、2

B、8 C、12

D、16

7、以public修饰的类如:public class Car{…} 则Car( )A

A、可被其它程序包中的类使用 B、仅能被本程序包中的类使用 C、不能被任意其它类使用 D、不能被其它类继承 8、构造函数何时被调用( )

A.类定义时 B.创建对象时

C.调用对象方法时 D.使用对象的变量时

9.Java中,数值类型值中可能出现的符号是( ) A.R B.D C.T D.Y 10.下面的表达式中正确的是( ) A.String s=″你好″;int i=3;s+=i;

B.String s=″你好″;int i=3;if(i==s){s+=i}; C.String s=″你好″;int i=3; s=+i; D.String s=″你好″;int i=3;s=i+;

11.在异常处理中,如释放资源、关闭文件、关闭数据库等由( )来完成。 A.try子句 B.catch子句 C.finally子句 D.throw子句

12、.如果任何包中的子类都能访问超类中的成员,那么应使用哪个限定词( ) A.public B.private C.protected D.transient 13、.在Java中,不属于整数类型变量的是( ) A.double B.long C.int D.byte 14、.下面属于Java关键字的是( )

A.NULL B.IF C.do D.goto

15、.当方法遇到异常又不知如何处理时,下列哪种说法是正确的( ) A.捕获异常 B.抛出异常

C.声明抛出异常 D.嵌套异常

16、.Java程序的执行过程中用到一套JDK工具,其中java.exe是指( ) A.Java文档生成器 B.Java解释器 C.Java编译器 D.Java类分解器 17、.Java语言中,下列标识符错误的是( )

A.diss B.—name C.&count D.—j 18、下列能表示字符串S1长度的是

A S1.length B S1.length() C si.Size D S1.Size()

2

19、子类继承了父类的方法和状态,在子类中可以进行的操作是

A 更换父类的方法 B 减少父类方法 C 减少父类变量 D 增添方法 20、 下列语句中错误的是

A String S[]={“box”,”are”} ; B byte b=255; C String s=”one”+”two”; D int i=2+200; 21、 下列可用于作switch(expression)语句参数的是

A String s B Integer I C boolean b D int i 22.阅读下列代码

Public class Test{

Public static void main(String args[]){ System.out.println((2<0)?10;8);

} }

其运行结果是D

A 、2 B 、0 C、 10 D、 8

23、下列常见的系统定义的异常中,哪个是输入、输出异常? A.ClassNotFoundException B.IOException

C.FileNotFoundException D.UnknownHostException 24 阅读下列代码

Public class Test{

String s=” One World One Dream”; Public static void main(String args[]){ Syastem.out.println(s);

} }

其运行结果是

A、 args B、 OneWorld OneDream C、 s D、 编译时出错 25、下列叙述中,正确的是

A.Java语言的标识符是区分大小写的 B.源文件名与public类名可以不相同 C.源文件扩展名为.jar D.源文件中public类的数目不限 26、下列属于合法的Java标识符是

A._cat B.5books C.+static D.-3.14159

27、在Java中,由Java编译器自动导入,而无需在程序中用import导入的包是 A.java.applet B.java.awt C.java.util D.java.lang 28、在Java中,所有类的根类是

A.java.lang.Object B.java.lang.Class C.java.applet.Applet D.java.awt.Frame

29、在Java中,用Package语句说明一个包时,该包的层次结构必须是 A.与文件的结构相同 B.与文件目录的层次相同 C.与文件类型相同 D.与文件大小相同 30、下列构造方法的调用方式中,正确的是 A.按照一般方法调用 B.由用户直接调用 C.只能通过new自动调用 D.被系统调用 31、在Java中,能实现多重继承效果的方式是

3

A.内部类 B.适配器 C.接口 D.同步 32. 在Java中,负责对字节代码解释执行的是( )。

A.垃圾回收器 B.虚拟机 C.编译器 D.多线程机制

33、能够支持javadoc命令的注释语句是

A./**...// B./*...*/ C.// D./**...*/ 34、十进制数16的16进制表示格式是 A.0x10 B.0x16 C.0xA D.16

35、int型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是 A.public int MAX_LENGTH=100 B.final int MAX_LENGTH=100

C.public const int MAX_LENGTH=100 D.public final int MAX_LENGTH=100

36 请说出下列代码的执行结果 : String s = \

String s1 = new String(s);

if (s = = s1) System.out.println(\if (s.equals(s1)) System.out.println(\A. the same equals B. equals C. the same

D. 什么结果都不输出

37 下列有关 Java 中接口的说法哪个是正确的? A. 接口中含有具体方法的实现代码

B. 若一个类要实现一个接口,则用到 “implements” 关键字 C. 若一个类要实现一个接口,则用到“ extends ”关键字 D. 接口不允许继承

38 下列哪个说法是错误的。

A. Exception 可以用 try/catch 进行捕获处理 B. Exception 可以递交给上一级调用方处理 C. JVM 会自动处理 Exception D. Exception会使程序终止执行 39 下列代码的执行结果是什么? String s1 = \s1.concat(\

System.out.println(s1); A. The string \B. The string \C. The string \D. The string \

4

40、下列的哪个赋值语句是不正确的?

A.float f = 11.1; B.double d = 5.3E12; C.float d = 3.14f ; D.double f=11.1E10f; 41、下列的哪个赋值语句是正确的?

A.char a=\.int a=12.0; C.int a=12.0f; D.int a=(int)12.0; 42、给出下列的代码,哪行在编译时可能会有错误? ① public void modify(){ ② int i, j, k; ③ i = 100;

④ while ( i > 0 ){ ⑤ j = i * 2;

⑥ System.out.println (\); ⑦ k = k + 1; ⑧ } ⑨ }

A.line 4 B.line 6 C.line 7 D.line 8 43、下列关于继承的哪项叙述是正确的?

A.在java中允许多重继承 B.在java中一个类只能实现一个接口 C.在java中一个类不能同时继承一个类和实现一个接口 D.java的单一继承使代码更可靠

44、下列哪个修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问? A.private B.无修饰符 C.public D.protected

45、给出下列代码,如何使成员变量m 被方法fun()直接访问? class Test {

private int m;

public static void fun() { ... } }

A.将private int m 改为protected int m B.将private int m 改为 public int m C.将private int m 改为 static int m D.将private int m 改为 int m 46已知有下列类的说明,则下列哪个语句是正确的? public class Test {

private float f = 1.0f; int m = 12; static int n=1;

public static void main(String arg[]) {

Test t = new Test(); } }

5

A.t.f; B.this.n; C.Test.m; D.Test.f; 47、给出下列代码,则数组初始化中哪项是不正确的? byte[]array1,array2[]; byte array3[][]; byte [][] array4;

A.array2 = array1 B.array2=array3 C.array2=array4 D.array3=array4 48、下列代码的执行结果是 public class Test {

public int aMethod() {

static int i=0; i++;

System.out.println(i); }

public static void main(String args[]) {

Test test = new Test(); test.aMethod(); } }

A.编译错误 B.0 C.1 D.运行成功,但不输出 49、顺序执行下列程序语句后,则b的值是 String a=\

String b=a.substring(0,2);

A.Hello B.hello C.He D.null

50、在oneMethod()方法运行正常的情况下,程序段将输出什么? 果为:condition1

finally

public void test() {

try { oneMethod();

System.out.println(\);

} catch (ArrayIndexOutOfBoundsException e) {

System.out.println(\); } catch(Exception e) {

System.out.println(\); } finally {

System.out.println(\);

6

(答案必须换行,即结

} }

A.condition 1 B.condition 2 C.condition 3 D.condition 1 finally 二. 判断题

1. 对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相

同的新对象。F new

2. 类及其属性、方法可以同时有一个以上的修饰符来修饰。

3. 抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。 4. Final 类中的属性和方法都必须被 final 修饰符修饰。 (不对) 5. 最终类不能派生子类,最终方法不能被覆盖。 6. 一个 Java 类可以有多个父类。 7. 一个Java类可以有多个构造函数。 8. Java类的构造函数可以有返回值。

9. 一个类不能既被声明为abstract的,又被声明为final的。

10. 如果 p 是父类 Parent 的对象,而 c 是子类 Child 的对象,则语句 c = p 是正确的。 11. 一个类如果实现了某个接口,那么它必须重载该接口中的所有方法。 (不对?)

一个非抽象类实现一个接口,它必须覆盖方法中的所有方法。(为所有方法编写类体) 12. 一个抽象类的子类必须要定义从超类中继承过来的所有的抽象方法。(不对?)

(如果这个类也为抽象类就不必定义所有抽象方法) 13. 类及其属性、方法可以同时有一个以上的修饰符来修饰。 14. 所有的抽象方法都必须存在于抽象类中。 15. 抽象类中不允许包含非抽象的方法。

16. static方法不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变

量。

17. 子类构造函数总是先显式的或隐式地调用其父类的构造函数,以创建和初始化子类的父

类成员。

18. 在类的引用中,子类的对象可以当作其父类的对象对待。

三 . 简答题

1. Java中命名标识符有什么规则? 2. 什么是继承机制? 3. 什么是抽象类?

4. Java中的接口如何声明?

7

5. 什么是包?

6. 什么是域的隐藏?子类和父类有同名域,在子类方法中如何进行访问父类的域? 7. 静态属性如何声明、存储和访问?

8. Java的访问控制符有哪些?各有什么作用?

9. StringBuffer和String有什么区别,试举例说明。

10. 说明利用记事本和JDK开发一个Java程序的基本步骤。

11. Applet与java application有什么区别?简述各自的运行机制。 12. java中的数据类型转换有哪两种?分别解释其含义和用法。 13. 图形用户界面的设计原则有哪些?

14. AWT组件集提供的组件大致可以分为哪几类?各起有什么作用? 15. 简述如何创建AWT的菜单系统。

16. 简述AWT提供的基于事件监听模型的事件处理机制。

四.编程题目

1. 设计一个表示二维平面上的点的类Point,包含表示坐标位置的protected类型的成员变

量x和y,以及获取和设置x和y的值的public类型的方法:getx()、gety()、setx()、sety()。Point类的构造方法要有多种形式。

2. 设计一个表示二维平面上的圆的类Circle,它继承自Point类。类Circle包含表示圆半

径的protected类型的成员变量r,以及获取和设置r的值的public类型的方法:getr()、setr(),计算圆面积的方法area()。此外,Circle类的构造方法要有多种形式。 3. 编写一个java应用程序,以不同形式建立若干个Circle类的对象,输出它们的中心点、。 4. 给定一个正整数数组,按照冒泡排序算法进行排序

5. 编写一个Java程序,将某一整数范围内所有素数打印出来。要求用图形界面实现。

判断方法:对于整数n,如果n能被2到n-1中的任意一个整数整除,则使用break语句终止,可判定n不是素数。 6. 编写一个程序,找出整数数组中的最小元素和最大元素,并统计最大元素和最小元素的

个数。 7. 补充完整下面方法,可以从三个数a, b, c中找出最大值,作为方法的返回值返回

int findMax(int a, int b, int c){ // 完整该方法 }

8. 数组a中存放了若干整数,补充完整下面的方法,能从屏幕上分别打印出其中最大的整

数,最小的整数,以及所有整数的算术平均数 void ProcessArray(int[] a){ //完整该方法 }

9. 编写一个方法判断一个字符串是否为回文,例如“abcba”

bool isHuiwen (String str){ }

10. 根据下面的要求,编程实现复数类ComplexNumber:

8

1)属性: m_dRealPart:实部; m_dImaginPart:虚部

2)构造方法: ComplexNumber() 以及 ComplexNumber(double r, double i) 3)方法:复数相加 complexAdd(ComplexNumber c);toString()打印当前复数 进一步,编写一段程序,创建三个复数对象,打印其相加后的结果 11. 根据下图,定义相应的Java中的接口与类,不要求写方法的具体实现。

interface Instrumentvoid play();String what();void adjust();implementsWindvoid play()String what()void adjust()implementsPercussionvoid play()String what()void adjust()implementsStringedvoid play()String what()void adjust()extendsWoodwindvoid play()String what()extendsBrassvoid play()void adjust()

12. 创建一个有文本框和三个按钮的框架窗口程序,同时要求按下不同按钮时,文本框中能

显示不同的文字。

14.请用AWT组件来设计实现计算器程序,要求能完成简单四则运算。

15.Java为什么要引入线程机制?线程的概念是什么?线程和进程的区别是什么?解释什么是Java的多线程?

16.简述File类的应用,它与RandomAccessFile类有何区别。 17. Java中的异常处理机制的简单原理和应用。

五.阅读程序

1、以下程序的输出结果为________。

public class AppTest {

public static void main(String args[]) { int i = 10, j = 5; int m = i > j ? i : j;

System.out.println(\ } }

9

2、以下程序的输出结果为________。 public class WhileTest {

public static void main(String args[]) { int i = 10;

while (i-- > 0) {

if (i % 2 == 0) { continue; }

System.out.print(i + \ } } }

3、以下程序的输出结果为________。

class Person {

private String name; public Person() { this(\陈敏\ }

public Person(String setName) { name = setName; }

public String getName() { return name; } }

class Teacher

extends Person { private String id;

public Teacher(String s1, String s2) { super(s1); id = s2; }

public String getId() { return id; } }

public class Test {

public static void main(String[] args) {

Teacher t = new Teacher(\黄牧\

10

System.out.println(t.getName()); System.out.println(t.getId()); } }

4、以下程序的输出结果为________。

class Grandpa { public Grandpa() { System.out.print(\ } }

class Father

extends Grandpa { public void Father() { System.out.print(\ } }

class Son

extends Father { public Son() {

System.out.print(\ } }

public class aaa {

public static void main(String[] args) { Son t = new Son(); } }

三 . 简答题

17. Java中命名标识符有什么规则?

Java语言规定标识符是以字母、下划线“_”或美元符号“$”开始随后可跟数字、字母、下划线或美元符号的字符序列;不可用数字开头,不能是java 的关键字

18. 什么是继承机制?

类具有继承性,子类对父类的继承关系体现了现实世界中特殊和一般的关系。通过继承可以更有效地组织程序结构,明确类间关系,并充分利用已有的类来完成更复杂、深入的开发 19. 什么是抽象类?

抽象类体现数据抽象的思想,是实现程序多态性的一种手段。接口则是Java中实现多重继承的唯一途径。

11

抽象类的作用在于将许多有关的类组织在一起,提供一个公共的类,即抽象类,而那些被它组织在一起的具体的类做为它的子类由它派生出来。 20. Java中的接口如何声明?

声明接口的格式如下:

[修饰符] interface 接口名[extends 父接口名列表] { 常量数据成员声明 抽象方法声明 } 21. 什么是包?

包(package)是Java提供的文件(即公共类)的组织方式。一个包对应一个文件夹,一个包中可以包括许多类文件。包中还可以再有子包,称为包等级。

22. 什么是域的隐藏?子类和父类有同名域,在子类方法中如何进行访问父类的域?

(1). 数据成员的隐藏

数据成员的隐藏是指在子类中重新定义一个与父类中已定义的数据成员名完全相同的数据成员,即子类拥有了两个相同名字的数据成员,一个是继承父类的,另一个是自己定义的。 (2)当子类要操作继承自父类的同名数据成员时,可使用关键字super引导。 即super.数据成员

23. 静态属性如何声明、存储和访问?

static:静态方法,又称类方法

使用类名或对象名作为前缀,建议使用类名

在方法体中只能使用static变量和static方法或访问自己的局部变量 24. Java的访问控制符有哪些?各有什么作用?

访问控制符(访问权限) public:可被所有其他类引用

protected:该类自身、子类、同一包中的其他类

private:仅可被该类自身引用和修改,不能被其他任何类(包括子类)引用default(缺省):本包中的类 25. StringBuffer和String有什么区别,试举例说明。

String是对象不是原始类型。为不可变对象,一旦被创建,就不能修改它的值

StringBuffer是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象,它只能通过构造函数来建立。

String str = new String(\可以赋值; StringBuffer sb = new StringBuffer();不能赋值

26. 说明利用记事本和JDK开发一个Java程序的基本步骤。

环境变量的设置:path jdk1.6\\bin classpath jdk1.6\\bin 源程序的编写:*.java

javac编译源程序,生成字节码执行文件:javac *.java 用java执行命令执行字节码文件 java *

27. Applet与java application有什么区别?简述各自的运行机制。

Applet:无main函数,不能单独运行,必须嵌入到html文件中运行 Application:有main函数,可以独立运行

28. java中的数据类型转换有哪两种?分别解释其含义和用法。

有自动转换和强制转换 自动转换:占用字节数较少的值赋给占用字节数较多的变量时,系统自动完成数据类型转换,byte->short->int->long->float->double-> char 字符型数据类型转换为相应的类型: Interger.parseInt(“123”);

12

数值类型转换为字符类型: String.valueOf(23); 29. 图形用户界面的设计原则有哪些?

使用图形界面GUI (Graphics User Interface) 字符界面—采用命令行方式与用户交互。

图形界面—用多种媒体显示信息,用直观、方便的GUI标准组件来接收命令。 ? ? ? ?

控制权在用户(用户要由操作的主动权) 界面与操作的风格一致性。 宽容(容错)性。 简洁与美观并重

30. AWT组件集提供的组件大致可以分为哪几类?各起有什么作用?

AWT组件大致可以分为以下三类:

1.容器类组件 2.布局类组件 3.普通组件类

容器类组件可以用来容纳其他普通组件或者甚至是容器组件自身, 起到组织用户界面的作用 ,布局类组件本身是非可视组件, 但它们却能很好地在容器中布置其他普通可视组件,AWT提供了一系列的普通组件以构建用户图形界面,它们主要包括:标签、文本框、文本域、按钮、复选框、单选框、列表框、下拉框、滚动条和菜单等。 31. 简述如何创建AWT的菜单系统。

AWT提供的菜单系统类包括:MenuBar、MenuItem、Menu、CheckboxMenuItem以及PopupMenu。MenuBar类对应菜单系统的整体,Menu类对应菜单系统中的一列菜单(实际上它只是一种特殊的菜单项),MenuItem和CheckboxMenuItem类则对应具体的菜单项其中CheckboxMenuItem为带复选框的菜单项,而PopupMenu类对应弹出式菜单,它是菜单Menu类的子类。菜单系统创建好后,最后必须调用Frame类的setMenuBar()方法将其加入到框架界面中。 32. 简述AWT提供的基于事件监听模型的事件处理机制。

基于事件监听模型的事件处理是从一个事件源授权到一个或多个事件监听者,组件作为事件源可以

触发事件,通过addXXXlistener()方法向组件注册监听器,一个组件可以注册多个监听器,如果组件触发了相应类型的事件,此事件被传送给已注册的监听器,事件监听器通过调用相应的实现方法来负责处理事件的过程。

需要一个对象对事件源进行监视,以便对发生的事件作出处理。 例如:对于文本框,这个方法为:addActionListener(监视器);(自己查的)

四.编程题目

13. 设计一个表示二维平面上的点的类Point,包含表示坐标位置的protected类型的成员变量x和y,以

及获取和设置x和y的值的public类型的方法:getx()、gety()、setx()、sety()。Point类的构造方法要有多种形式。

import java.util.*;//Scanner类在这个包里 class Point{

protected float x,y; //定义Circle类的坐标

protected Scanner scan=new Scanner(System.in); //设一个SCanner对象scan,指定输入方式是从键public Point(){

x=0;y=0; } //无参构造

public Point(float x,float y){

this.x=x; this.y=y;

盘读入

13

}

14. 设计一个表示二维平面上的圆的类Circle,它继承自Point类。类Circle包含表示圆半径的protected

类型的成员变量r,以及获取和设置r的值的public类型的方法:getr()、setr(),计算圆面积的方法area()。此外,Circle类的构造方法要有多种形式。 class Circle extends Point{ }

15. 编写一个java应用程序,以不同形式建立若干个Circle类的对象,输出它们的中心点、。

public class Test{

public static void main(String []args ){ Circle circle1,circle2;

protected float r; //定义出半径r public Circle(){

super(); //调用Point类的无参构造 r=0; } //有参构造 public void setx(){

x=scan.nextFloat(); }//从键盘读入坐标x public void sety()

y=scan.nextFloat(); }//从键盘读入坐标y public float getx(){

return this.x; }//得到当前对象的x public float gety(){

return this.y; }//得到当前对象的y

} //无参构造

public Circle(float x,float y,float r){

super(x,y); //调用Point类的有参构造 this.r=r;

}//有参构造 public void setr(){ } }

final float PI=(float)3.14; return(PI*r*r); return this.r; r=scan.nextFloat();

public float getr(){

public float area(){

}//返回此圆 的面积的一个函数 public static void main(String[]args){

}

14

System.out.println(\ circle1=new Circle(1,2,3); //circle1 采用传参的方式构造

System.out.println(\+circle1.x+\+circle1.y+\+circle1.r);//输出中心点和半径 System.out.println(\输出面积 System.out.println(\circle2=new Circle();

System.out.println(\System.out.println(\circle2.setx(); //circle2采用从键盘的方式构造 circle2.sety(); circle2.setr();

System.out.println(\输出中心点和半径 System.out.println(\输出面积 System.out.println(\ } }

16. 给定一个正整数数组,按照冒泡排序算法进行排序

int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};

import java.util.Scanner; public class Sort{

private int []data;//定义一个数组 private Scanner scan;//一个阅读类对象 Sort(){ }

public void readdata(){//从键盘读入数组

int n;

System.out.println(\ n= scan.nextInt();//读入一个整数(数组长度)赋给n data=new int[n];//data给data赋空间 for(int i=0;i

data[i]=scan.nextInt();//读入数组中的所有的数 } }

public void outputdata(){ //输出一个数组 }

public void sort(){ //升序排列

for(int i=0;i

System.out.print(data[i]+\输出每个元素 }

System.out.println();//输出一个回车 data=null;

scan=new Scanner(System.in); //初始化对象,让其输入方式是从键盘读入

int i,j,r;

for(i=0;i

for(j=0;j

15

} }

public static void main(String []args){//在类里面定义的 Sort sortdata=new Sort();//创建一个这样的对象 sortdata.readdata();//读入一个数组 sortdata.sort();//进行排序 sortdata.outputdata();//输出数组 } }

17. 编写一个Java程序,将某一整数范围内所有素数打印出来。要求用图形界面实现。

import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.*; import java.util.*; import java.io.*;

public class File1 extends JFrame{ //继承窗口容器

private JLabel labela; //设标签对象 private JLabel labelb;

private JTextField texta; //设文本输入框对象 private JTextField textb;

private JButton ok; //设一个按扭对象

private Container content; //设一个面板容器对象 private int low,high; //low-下限 high-上限 private Scanner scan; //阅读类

private JTextArea text;//结果显示区域的文本区对象 public File1(){ //构造函数

this.setSize(300,450); //设置窗口大小 this.setTitle(\素数\设置标题 this.setVisible(true); //可见

this.setResizable(false);//不可改大小

Dimension screen=Toolkit.getDefaultToolkit().getScreenSize(); //读取屏幕大小尺寸 Dimension mySize=this.getSize(); //读取窗口大小尺寸

setLocation((screen.width-mySize.width)/2,(screen.height-mySize.height)/2); content=this.getContentPane(); //把面板容器加入到窗口中 content.setLayout(null); //无布局模式

labela=new JLabel(\ //为标签开辟空间 labelb=new JLabel(\content.add(labela); //向面板中加入标签

if(data[j]>data[j+1]){//相邻的两个数比较,把大的放在后面,每一轮下来最大的都是在最后 }

r=data[j]; data[j]=data[j+1]; data[j+1]=r; }

16

}

public void sendtotext(int low,int high) throws IOException {//把所有的素数挑出来输出到文本显示区的函数 }

public class clicked implements ActionListener{//监听类

@Override

public void actionPerformed(ActionEvent e) {//若触发了事件则执行的函数,也就是说在String str=new String(\ str=str+Integer.toString(low); str=str+\

str=str+Integer.toString(high);

str=str+\ //让str中存入“between low and high: ” int i,j,flag=0; if(low<2)low=2; for(i=low;i

for(j=2;j

if(j!=i)continue;

else {str=str+Integer.toString(i);str=str+\flag=1;

if(i%j==0)break;

content.add(labelb);

texta=new JTextField(\ //为文本输入框开辟空间 textb=new JTextField(\

content.add(texta); //向面板容器中加入文本框对象 content.add(textb);

text=new JTextArea(); //开辟一片文本显示区域的空间 content.add(text); //加入到面板中

text.setBounds(0, 150, screen.width, screen.height/3); ok=new JButton(\content.add(ok);

labela.setBounds(5,5,80,20); //设置各个对象在窗口中的位 置(x,y,width,heigth); labelb.setBounds(5,50,80,20); texta.setBounds(80,5,100,20); textb.setBounds(80,50,100,20); ok.setBounds(225,40,50,50);

ok.addActionListener(new clicked());//对按扭进行事件监听

}//选出所有素数,写入到str中

if(flag==0){ //若没有素数则存入没有素数 }

str=\

text.setText(\

text.append(str); //在文本显示区中输入str结果

text.setCaretPosition(0);//让文本区的焦点一开始在文本开头儿

17

按下按扭之后要执行的函数

low=Integer.parseInt(texta.getText());//把下限转换为整型 high=Integer.parseInt(textb.getText()); try { sendtotext(low,high); //把结果写入到文本显示区 } catch (IOException e1) {

// TODO Auto-generated catch block e1.printStackTrace(); }

}

}

public static void main(String[]args){

File1 file=new File1();//新建一个File1对象,这样 就会弹出图形化窗口

}

}

18. 编写一个程序,找出整数数组中的最小元素和最大元素,并统计最大元素和最小元素的个数。

import java.util.Scanner; public class Count{ private int []data;//定义数组对象 private int max_count;//最大值的个数 private int min_count;//最小值 的个数 private Scanner scan;//定义一个阅读类的对象 Count(){//构造函数 赋初值 data=null; max_count=0; min_count=0;

scan=new Scanner(System.in); }

public void readdata(){ int n;

System.out.print(\ n=scan.nextInt(); //读入数组长度存入n中

data=new int[n];//为数组开辟空间,这个一定 不要忘 for(int i=0;i

data[i]=scan.nextInt();//读入数组中的每一个元素 } }

public void count(){//统计数组中的最大值和最小值的个数

int max,min; max=data[0];

min=data[0]; //一开始假设最大值和最小值都是第一个元素

for(int i=0;i

max=data[i];

18

} }

19. 补充完整下面方法,可以从三个数a, b, c中找出最大值,作为方法的返回值返回 int findMax(int a, int b, int c){ int max = a > b ? a : b ;

return max = max > c ? max : c ; }

20. 数组a中存放了若干整数,补充完整下面的方法,能从屏幕上分别打印出其中最大的整数,最小的整

数,以及所有整数的算术平均数 void ProcessArray(int[] a){ int min = a[0]; int max = a[0]; long sum=0;

for(int i=0 ; i

if(a[i]

public void output(){//输出结果

public static void main(String []args){ }

Count co=new Count();//新建一个Count对象 co.readdata();//读入数组 co.count();//统计个数 co.output();//输出结果

System.out.println(\ min_count: \

}

else {//若max 是目前最大的,如果有和他一样大的,max_count自增 }

if(max==data[i])max_count++;

max_count=1;

if(min>data[i]){//最小值同理于最大值方法 min=data[i]; min_count=1; } else{

if(min==data[i])min_count++; } }

{ min = a[i]; }

19

if(a[i]>max) { max = a[i]; } sum+=a[i]; }

printf(\21. 编写一个方法判断一个字符串是否为回文,例如“abcba”

public bool IsHuiWen(string str) {

bool isHuiWen = true;

str = str.Replace(\去除空格,逗号,句号 int strLength = str.Length;

for (int i = 0; i < strLength / 2; i++) {

if (str.Substring(i, 1) == str.Substring(strLength - 1 - i, 1)) { continue; } else

{ isHuiWen = false; break; } }

return isHuiWen; }

22. 根据下面的要求,编程实现复数类ComplexNumber:

1)属性: m_dRealPart:实部; m_dImaginPart:虚部

2)构造方法: ComplexNumber() 以及 ComplexNumber(double r, double i) 3)方法:复数相加 complexAdd(ComplexNumber c);toString()打印当前复数 进一步,编写一段程序,创建三个复数对象,打印其相加后的结果 class Complex { int real; int imagin;

public Complex(int a,int b) {

20

public Person() { this(\陈敏\ }

public Person(String setName) { name = setName; }

public String getName() { return name; } }

class Teacher extends Person { private String id;

public Teacher(String s1, String s2) { super(s1); id = s2; }

public String getId() { return id; } }

public class Test {

public static void main(String[] args) {

Teacher t = new Teacher(\黄牧\ System.out.println(t.getName()); System.out.println(t.getId()); } }

4、以下程序的输出结果为___02______。

class Grandpa { public Grandpa() {

System.out.print(\ } }

class Father

extends Grandpa {

public void Father() {//不是构造函数,有void System.out.print(\ } } class Son

26

extends Father { public Son() {

System.out.print(\ } }

public class aaa {

public static void main(String[] args) { Son t = new Son();

27

this.real=a; this.imagin=b; }

public Complex add(Complex x) {

Complex all=new Complex(this.real+x.real,this.imagin+x.imagin); return all; }

public Complex decrease(Complex x) {

complex all=new Complex(this.real-x.real,this.imagin-x.imagin); return all; }

public Complex multiply(Complex x) {

Complex all=new Complex(this.real*x.real-this.imagin*x.imagin,x.real*this.imagin+x.imagin*this.real); return all; }

public static void display(Complex n) {

System.out.println(n.real+\ } } class Test {

public static void main(String [] args) {

Complex c1=new Complex(2,3); Complex c2=new Complex(4,5); Complex.display(c1.add(c2));

21

Complex.display(c1.decrease(c2)); Complex.display(c1.multiply(c2)); } }

23. 根据下图,定义相应的Java中的接口与类,不要求写方法的具体实现。

interface Instrumentvoid play();String what();void adjust();implementsWindvoid play()String what()void adjust()implementsPercussionvoid play()String what()void adjust()implementsStringedvoid play()String what()void adjust()extendsWoodwindvoid play()String what()extendsBrassvoid play()void adjust()

24. 创建一个有文本框和三个按钮的框架窗口程序,同时要求按下不同按钮时,文本框中能显示不同的文

字。

import java.awt.*; import java.awt.event.*; public class ActionEvent1 {

private static Frame frame; //定义为静态变量以便main使用 private static Panel myPanel; //该面板用来放置按钮组件 private Button button1; //这里定义按钮组件 private Button button2; //以便addActionListener private Button button3;

private TextField textfield1; //定义文本框组件

public ActionEvent1() //构造方法, 建立图形界面

22

{

// 创建面板容器类组件 myPanel = new Panel(); // 创建按钮组件

button1 = new Button(\按钮1\ button2 = new Button(\按钮2\ button3 = new Button(\按钮3\ textfield1 = new TextField(30);

MyListener myListener = new MyListener(); // 建立一个actionlistener让两个按钮共享 button1.addActionListener(myListener); button2.addActionListener(myListener); button3.addActionListener(myListener); textfield1.addActionListener(myListener); myPanel.add(button1); // 添加组件到面板容器 myPanel.add(button2);

myPanel.add(button3);

myPanel.add(textfield1);

}

//定义行为事件处理内部类,它实现ActionListener接口 private class MyListener implements ActionListener {

/* 利用该内部类来监听所有行为事件源产生的事件 */ public void actionPerformed(ActionEvent e) { // 利用getSource()方法获得组件对象名

// 也可以利用getActionCommand()方法来获得组件标识信息 // 如 e.getActionCommand().equals(\按钮1\ Object obj = e.getSource();

if (obj == button1)

23

}

}

textfield1.setText(\按钮1被单击\else if (obj == button2)

textfield1.setText(\按钮2被单击\else if (obj == button3)

textfield1.setText(\按钮3被单击\else

textfield1.setText(\

public static void main(String s[]) {

ActionEvent1 ae = new ActionEvent1(); // 新建ActionEvent1组件 frame = new Frame(\新建Frame // 处理窗口关闭事件的通常方法(属于匿名内部类) frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); frame.add(myPanel); frame.pack();

frame.setVisible(true); } }

14.请用AWT组件来设计实现计算器程序,要求能完成简单四则运算。

15.Java为什么要引入线程机制?线程的概念是什么?线程和进程的区别是什么?解释什么是Java的多线程?

答:Java之所以引入线程机制是因为线程间的通信非常简单且有效上下文切换非常快,它们是同一个进程中的两部分之进行的切换,每个线程彼此独立执行,一个程序可以同时使用多个线程来完成不同的任务。 所谓线程是指进程中单一顺序的执行流。 进程是一个动态执行的程序,当你运行一个程序的时候,就创建了一个用来容纳组成代码和数据空间的进程。每一个进程都有自己的一块内存空间和一组系统资源,它们之间都是独立的。线程可以共享内存单元和系统资源,但不能够单独执行,必须存在于某个进程当中。它是比进程更小

24

的能独立运行的基本单位。 Java中的线程由虚拟的CPU、CPU所执行的代码和CPU所处理的数据三部分组成。Java的多线程就是系统每次给Java程序一个CPU时间,Java虚拟处理机在多个线程之间轮流切换,保证每个线程都能机会使用CPU资源,不过每个时刻只能有一个线程在执行。 16.简述File类的应用,它与RandomAccessFile类有何区别。

RandomAccessFile实现随机访问文件的功能,文档定义:随机存取文件的行为类似存储在文件系统中的一个大型字节数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机存取文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置 File只是对一个文件或目录的抽象,可以想象成是一个文件句柄、标识,这个类本身只提供对文件的打开,关闭,删除,属性访问等等;

17. Java中的异常处理机制的简单原理和应用。

当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类 五.阅读程序

1、以下程序的输出结果为__m=10_______。

public class AppTest {

public static void main(String args[]) { int i = 10, j = 5; int m = i > j ? i : j;

System.out.println(\ } }

2、以下程序的输出结果为__9 7 5 3 1________。 public class WhileTest {

public static void main(String args[]) { int i = 10; while (i-- > 0) { if (i % 2 == 0) { continue; }

System.out.print(i + \ } } }

3、以下程序的输出结果为___黄牧_

000001______。

class Person {

private String name;

25

本文来源:https://www.bwwdw.com/article/3t62.html

Top