2024年1月28日发(作者:)
4747 Java语言程序设计(一)
第一章 Jave语言基础
1.1 Java语言的特点
领会Java语言的特点、关键字
语言采用多种机制来保证可移植性,其中最主要的是______。虚拟机
1110-11.Java语言是一种 ____强类型语言___ 语言,它约束程序员必须遵守规定编写程序,能让编译器检测出程序中尽可能多的错误。
1.2 Java应用程序和小应用程序
识记 Java应用程序与小应用程序的特点和区别
11.一个应用程序必须在某个类中定义的方法是______。main()
1201-11.能在浏览器上执行的Java程序被称为 小应用程序 。
1.3 Java程序的开发过程
程序的字节码文件的扩展名是_________。 Class
1001-11.Java的编译程序先将Java源程序翻译成与机器无关的__________。字节码
源文件的扩展名是_____.java____。
1210-11. 如果Java源文件中有多个类,那么只能有一个__public____类。
1404-11.类Testll经Java编译程序编译后,产生的文件是 ______。
1.4 标识符和关键字
简单应用:Java程序的标识符命名规则、注释、基本数据类型
标识符可以用来标识文件名、变量名、类名、接口名和成员方法名等,其构造规则如下:
1) 标识符由Java字母和Java数字组成;
2) 首字符必须是Java字母;
3) 除去关键字、false、true和null;
4) 所有标识符是区分大小写的。
注释:
1 / 59
1) 行注释
2) 块注释
3) 文档注释
//
/* …. */
/** … */
1404-1.以下标识符中,不是..Java语言关键字的是
A.wait B.new C.long D.switch
1.下述字符组合不能作为Java程序标识符的是( )
A.Aa12 B.大x C.y小 D.5x
1.下面供选字符序列中,不属于...Java语言关键字的是( )
A.goto B.null C.false D.native
1.在下述字符串中,不属于...Java语言关键字的是 ( C )
A.float B.new C.java D.return
1110-1.下面供选字符序列中,不属于...Java语言关键字的是 ( )
A. throw B. synchronizedC. protect D. try
1010-1.以下是关于Java语言关键字的叙述,其中正确的是( )
A.关键字可以用来描述类的成员类型,但是不能描述普通变量
B.关键字由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成
C.关键字不可以用作变量、方法、类或标号的标识符
和main都是Java语言的关键字
1.5 基本数据类型
0开头表8进制常量,数字只能(0-7)
1.下列字符组合不能作为Java整型常量的是( )
A.078 B.0x3ACB C.5000 D.0x3ABC
1.在Java语言中,用于标记回车符的转义字符是
A.b B./b C.n D./n
1001-12.表达式¨23 & 18’’的值是__________。 2318
1101-1.在Java语言中,int类型数据的长度是( )
A.1个字节 B.2个字节 C.4个字节 D.8个字节
11.在Java语言中,双精度型变量在内存中占____8______个字节。
1101-l4.布尔类型数组元素的默认初值是____false_____。
第2章 运算和语句
选择 填空 简答 程序填空
2 / 59
2.1 数据运算
识记:
领会:
常用运算符的定义、包声明语句(package)和导入语句(import)
条件运算和其他运算
2.Java语言中数值数据的类型能自动转换,按照从左到右的转换次序为 ( B )
A. byte→int→short→long→float→double
B. byte→short→int→long→float→double
C. byte→short→int→float→long→double
D. short→byte→int→long→float→double
1404-2.以下数据类型转换中,必须进行强制类型转换的是
→char B. short→long →double D. byte→int
2.以下程序代码的输出的结果是( )
int x=53; System. out. println(1.0+x/2);
A.27.0 B.27.5 C.1.026 D.1.026.5
1404-12.表达式“45&20”的十进制值是 ______。 4 101100&010100
2.设有定义int i=6;,则执行语句“i+=i-1;’’后,i的值为
A.10 B.11 C.12 D.13
1210-12. 运算符‘‘<”、 “*”和“&&”按优先级从高到低的顺序排列为__* < &&____。
21.请写出表示条件“x=2与y=3有且只有一个成立”的Java表达式”。(x=2)!=(y=3)或(x=2&&y!=3)||(x!=2&&y!=3)
12.构造一个Java表达式:y/x>5,并且x!=0。这个表达式是_________。y/x>5 && x!=0
1101-12.表达式-4>>l的十进制值是______-2___。(解法:-4/(2的一次幂))
21.请写出表示year年是闰年的Java表达式。闰年的条件是:每4年一个闰年,但每100年少一个闰年,每400年又增加一个闰年。(year%4= =0) && (year%4!=0)||(year%400=
=0) 简答
12.用条件运算符构造一个表达式:goal等于10时,表达式的值为“对了!”,否则,表达式的值为“错了!”。这个表达式是_________。
1010-2.执行以下代码,输出结果是( )
int x=5,y=7,u=9,v=6;
n(x>y ? x+2:u>v ? u-3:v+2);
A.8 B.6 C.7
2.以下程序代码的输出结果是( )
int x=73;n(x>>1);
A.36 B.36.5 c. 37 D.true
1110-2.以下程序代码的输出的结果是 ( )
double x = 25.6;
n((int)x << 1);
3 / 59
A. 48 B. 50 C. 51 D. 52
1201-2.表达式“-1>>>1”的十进制值是( )
31A.-2 B.2-1 C.-(231-1) D.232-1
12.在Java语言中,逻辑右移运算符为____>>>______。
2.2 语句
简单应用: 阅读简单程序的功能和输出结果,编写简单的程序
综合应用: Java语言语句的书写形式和语句的语义,算术运算符、自增自减运算符、关系运算符和逻辑运算符
1210-2. 以下关于Java语句的说法正确的是
A. continue语句必须出现在多路按值选择结构或循环结构中
B. return语句可以出现在方法体的外面
C. 编译系统会把单独的分号看成是空语句
D. break语句的作用是提早结束当前轮次循环
1001-21.请写出一段if语句,判断一个整数n是否为偶数。如果是偶数,输出“Yes.”;否则,输出“No.”。
If(n%2==0){n(“Yes”);}else{n(“No”);}
1110-12.在Java语言中, package_____ 语句用于表示出现在该文件中的所有类都属于这个程序包。
1010-21.请使用for循环语句计算S=1+double s=0.0
for (int i=1;s<=10;i++) s+=1.0/I;
1404-21.已知变量n,请写出使用for语句计算S1111的值。
2310111的代码。
23n1101-21.请写一个if语句,判断整数n是否同时满足“被3除余2,被7除余1”的条件,满足时输出“OK”,否则输出“NO”。
1110-21.请使用for循环语句实现计算s11241的值。
202.以下程序代码的输出结果是( )
int x = 10;
while (x > 7)
{ ("*"); x--;}
A.** B.*** C.* D.****
1101-2.在switch语句中,switch后面括号内的表达式的类型不能是( )
..
1010-12.程序包声明的格式是______。
4 / 59
12.import语句的格式是______。12、import包名.类名;
1201-21.请写出以下程序段的执行结果。
int c=0,d,n=3758;
while(n>0){ if((d=n%l0)>c) c=d;n/=10;}
n("结果="+c);
执行结果:结果=8
21.请写出下面程序段的执行结果。
int n=90;
int k=2;
(n+″=〞);
while(k<=n){
if(k==n){n(n); break;}
else if(n%k==0){(k+″*″);n=n/k;)
else k++;
} 90=2*3*3*5
27.方法int maxDigit(int n)的功能是找出十进制整数n各位中最大的一位数字。例如,n=23765,该方法的返回值是7。
static int maxDigit(int n){
int c=0,d;
while(n>0){
参考答案:n%10
d=_______;
if(d>c) c=d;
return c
n/=10;
}
________; }
27.方法int sigmaDigit(int n)的功能是求出十进制整数n的各位数字之和。例如,n=1234,该方法的返回值是10。
static int sigmaDigit( int n )
{ int sum = 0, d;
while( n > 0 ){
d=n% 10;
_________; sum+=d
n/= 10;
}
_________; return sum
1010-27.方法boolean isPrime(int n)的功能是判断正整数n(n>1)是否为质数。
static boolean isPrime(int n) {
int i;
if(n==2)return true;
if(n%2==0)return false;
5 / 59
for(i=3;i*i<=n;i+=2)
if(_________) break;
if(_________) return true;
return false;
}
1101-27.方法int numberOfDigits(int n)的功能是计算十进制正整数n的位数。
int numberOfDigits(int n){
int c=0:
do{ n/=10;_________;
}while(_________);
return c;
}
第3章 面向对象编程基础
选择 填空 简答 分析程序运行结果
识记:类的内存模型,final、abstract、super、this的用法,Applet程序结构和执行过程。
领会:抽象、对象、消息、类、继承、封装、接口、多态等面向对象的基本概念。
简单应用:访问权限的设置,Applet类的init()、strart()、stop()、destroy()、paint()、repaint()等方法。
综合应用:类的声明、成员变量(实例变量、类变量)和方法(实例方法、类方法)、构造方法、方法重载,对象的声明、创建和使用,接口的声明和使用。
3.1 面向对象的基本概念
13.在面向对象语言中,对象之间的交互通过______实现。相互发送消息
1110-13.在Java程序系统中,对象之间的交互通过相互发送 _____消息__ 实现
13.类是对一组相同对象的描述,类概括了同类对象的共有性质:_________。(P40)数据(属性)和方法(函数)
1404-3.以下供选择的概念中,属于面向对象语言重要概念和机制之一的是
A.函数调用 B.模块C.继承 D.结构化
1010-13.当联编推迟至运行时间实现时,该联编过程称为______。动态联编
3.在以下供选择的概念中,不属于面向对象语言概念的是 ( B )
...A.消息 B.模块 C.继承 D.多态性
1101-22.请写出在面向对象系统中,类和对象的关系。
1110-3.在以下供选择的概念中,不属于面向对象语言概念的是 ( )
... A.类 B.函数 C.动态联编 D.抽象
6 / 59
1 3.在Java语言中,通过扩展原有的类,声明新类的机制被称为___继承_____。
3.2 Java的类和对象
22.请写出在类的方法的定义之前,加上修饰字public、private的区别。
Public修饰的方法为公用方法,任何类的方法都可以访问他
Private修饰的方法,本类内部可以访问
语言中,只限子类或者同一包中的类的方法能访问的访问权限是( )
e ted D.<无修饰>
1201-22.什么是方法重载,如何正确区分重载?
方法重载是指在一个类中定义多个有相同名字的方法。区分方法:根据这些方法或参数不同或者按顺序参数的类型不同来区分。
1101-13.在定义成员变量时,用关键字___static______修饰的是类变量。
3.参照以下Java代码,以下四个叙述中最确切的是( )
class A{ int x; static int y;
void fac(String s){Syatem. out. println("字符串:"+s);}
}
A.x、y和s都是成员变量 B.x是实例变量、y是类变量、s是局部变量
C.x和y是实例变量、s是参数 D.x、y和s都是实例变量
语言中,在类定义时用final关键字修饰,是指这个类( )
A.子类必须实现父类未实现的方法 B.没有具体实现代码
C.必须要有实例 D.不能被继承
1210-3. 不能被再继承的类是
..A. final类 B. abstract类 C. public类 D. 用户自定义类
1404-13.如果类A继承和扩展类B,则子类A和超类B之间的关系是 __is a____。
1201-12.如果子类A隐藏了超类B的成员变量x,而类A的某个方法f()要引用类B的x,则引用类B的x的引用代码可以写成 super.x 。
1201-14.设u和v是类A的两个对象,则逻辑表达式“u==v”的意义是 引用相同的对象 。
0901-32.阅读下列程序,请写出该程序的输出结果。
class A {
int x, y;
A(int a, int b) {
x= a; y= b;
}
}
public class sample {
public static void main(String args[]) {
标识:类的内存模型
7 / 59
A pl, p2;
p2 = new A(12, 15);
p1 = p2; p2.x++;
n("p1.x=" + p1 .x);
}
} p1.x=13
3.设类U声明,及对象u和v的定义如下:
class U{
int x, int y;
U(int a, int b){x= a; y = b;}
void copy(U a){ x = a.x; y = a.y;}
}
U u = new U(1, 2), v = new U(2, 3);
在以下供选择的代码中,可能引起系统回收内存的是( )
A.u.x=v.y;u.y=v.x; B.u=v; (v); (u);
理解引用和对象实体很重要
1010-32.阅读下列程序,请写出该程序的输出结果。考点:实例变量和类变量
public class A {
int m = 5; static int n = 3;
public static void main(String[] args) {
A obj 1 = new A(); A obj2 = new A();
objl.m *= 2; objl.n *= 4; obj2.m += 1; obj2.n += 6;
n("obj 1.m='' + obj 1.m);
n("obj 1.n=" + obj 1.n);
n("obj2.m=" + obj2.m);
n("obj2.n=" + obj2.n);
}
}
22.如果类Student是类Person的子类,类Undergraduate是类Student的子类,请指出以下代码行中哪些是不合法的。继承――父子类间的赋值兼容
Person p1=new Student();
Person p2=new Undergraduate();
Student s1=new Person();
Student s2=new Undergraduate();
Undergraduate ug1=new Person();
Undergraduate ug2=new Student();
8 / 59
Object ob=new Student();
参考答案:(P57)Student s1=new Person();
Undergraduate ug1=new Person();
Undergraduate ug2=new Student();
[解析]本题考核知识点是类之间的is-a关系。在两个相关的类之间,可能会有is-a和has-a关系。若类A是继承扩展类B,则子类A和超类B之间是is-a关系,即类A是一个类B。这种情况下,A类对象一定可以是B类类型,因为B类的所有成员A类也有。也就是子类对象可以是超类类型。语句B
b=new A()是正确的,A a=new B()是错误的。
1001-32.阅读下列程序,请写出该程序的输出结果。
class Parent{
private void method1() { n("Parent′s method 1()");}
public void method2() { n("Parent′s method 2()");method1();}
}
class Child extends Parent {
public void method1(){ n("Child′s method 1 ()");}
public static void main(String args[]){ Parent p = new Child();2();}
}
Parent′s method 2()
Parent′s method 1()
此处应注意Parent类的method1()是私有方法,不能被继承,若为public 则是覆盖则结果为
Parent′s method 2()
Child′s method 1 ()
32.阅读下列程序,请写出该程序的输出结果。考点:多重继承子类对象的构造
class Tree {
private String name;public boolean flower;
public int birthYear;
Tree(String n, boolean f, int y){ name = n; flower = f; birthYear = y; }
public void setName(String n){name = n;}
public String getName(){return name; }
public void printTree(String str){
n(str); n("Name:"+name);
n("Birth Year:"+birthYear);
n("Flower:"+flower);
}
}
class PineTree extends Tree {
public boolean coniferous = true;
PineTree(String n, boolean f, int y, boolean c){super(n, f, y);coniferous = c; }
9 / 59
public void printTree(String str){
super, printTree(str);
n("Coniferous:" + coniferous);
}
}
class Test32 {
public static void main(String []args){
Tree fOb = new Tree("May Flower", true, 1980);
PineTree sOb = new PineTree("Pine", false, 2000, true);
ree(" fOb:"); ree("sOb:");
}
fOb:
}
Name:May Flower
Birth Year:1980
Flower:true(2分)
sOb:
Name:Pine
Birth Year:2000
Flower:false
Coniferous:true(2分)
3.以下关于抽象类及抽象方法的说法中,不正确的是
...A.抽象方法只能出现在抽象类中
C.有抽象方法的类一定是抽象类
B.抽象类必须有抽象方法
D.抽象方法没有实现的代码
13.在类声明之前用_________修饰,声明类是不能被再继承的类,即它不能再有子类。
Final
3.Java语言中,在类定义时用final关键字修饰,是指这个类( )
A.不能被继承 B.在子类的方法中不能被调用
C.能被别的程序自由调用 D.不能被子类的方法覆盖
1001-13.如果类A某个成员变量的类型是类B,则类A和类B之间是__________关系。(P57)Has-a
3.3 接口
1001-22.请写出接口定义的一般形式。(P59)
1404-22.请写出接口体中可能包含的内容。
1101-3.以下关于接口的叙述中,正确的是( )
A.所有的接口都是公共接口,可被所有的类和接口使用
B.一个类通过使用关键字interface声明自己使用一个或多个接口
10 / 59
C.接口中所有的变量都默认为public abstract属性
D.接口体中不提供方法的实现
1201-13.接口有与类相似的基本形式,它有常量定义和方法定义,但没有 方法的实现代码 。
3.4 基本类
3.5 Java小应用程序基础
标识:小应用程序与Applet类的关系, 小应用程序结构和执行过程
简单应用: Applet类的init()、strart()、stop()、destroy()、paint()、repaint()等方法。
11.一个小应用程序必须定义成一个_________。Applet(JApplet)类的子类
1010-22.请写出Applet类中init()方法的功能 创建所需要的对象,设置初始状态,装载图像,设计对数等
22.为了系统安全,对JavaApplet小应用程序有什么限制?
30.某小应用程序实现幻灯片放映。小应用程序的init()方法将幻灯片读入数组中存储和注册鼠标监视器。程序运行时,单击鼠标,就顺序变换放映幻灯片的序号。这里给出的是其中的paint()方法和mousePressed()方法。
final int number=30;//假定幻灯片有30张
int count=0;
paint()方法需要Graphics类型参数,当单Image[]pic=new Image[number];
击鼠标时,要在paint()方法中再次显示图public void paint(______gc){
片,可以调用repaint()方法,使程序先清if((pic[count])!=null)
age(pic[count],10,10,pic[count].getWidth(this),
除paint()运行的结果,再运行paint();也pic[count].getHeight(this),this);
可以调用update()方法,该方法会使系统}
自动调用repaint()方法。
public void mousePressed(MouseEvent e){
count=(count+1)% number;//循环逐张显示
__________;
}
32.阅读下列程序,请写出该程序的输出结果。
import .*;import .*;
class Point{
int x,y;
Point(int xx,int yy){ x=xx;y=yy;}
Point(Point p){x=p.x;y=p.y; }
void m(int dx,int dy){x+=dx;y+=dy;}
}
class Circle extends Point{
int r;
Circle(Point p, int rr){ super(p); r=rr; }
float c(){ return 3.14f*2.0f*r; }
float a(){ return 3.14f*r*r;}
}
public class sample extends Applet{
Circle yuan; Point d;
public void init() {d=new Point(2,5);yuan=new Circle(d,10);}
参考答案:yuan Circle 62.8(2分)
yuan Area 314.0(2分)
11 / 59
public void paint(Graphics g){
ring("yuan Circle"+(int)(yuan.c()*100.0)/100.0,5,20);
ring("yuan Area"+(int)(yuan.a()*100.0)/100.0,5,40);
}
}
第4章 数组和字符串
简单应用:非平衡的多维数组的创建,StringTokenizer类的用法,字符串与字节数组之间的转换,对象的字符串表示
综合应用:一维数组、二维数组、字符串的声明和创建,字符串的常用处理方法,字符串与基本数据类型之间的转换
4.1 数组
1210-14. 数组名如同对象名一样,是一种__________。
23.请写出声明int类型的二维数组intArr的三种形式。
Int intArr[][] Int [][]intArr Int []intArr []
1110-14.数组每个元素按存储顺序对应一个下标,下标从 ___0____ 开始顺序编号
4.在下述Java语言语句中,错误的创建数组的方法是 ( D )
..A.int intArray [ ]; intArray=new int[5];
B.int intArray [ ]=new int[5];
C.int [ ] intArray ={1,2,3,4,5};
D.int intArray [5]={1,2,3,4.5};
1404-4.以下Java程序代码中,能正确创建数组的是
myArray[]; myArray[]=new int[5];
B.int myArray[]=new my(5);
[]myArray={1,2,3,4,5};
D.int myArray[5]={1,2,3,4,5};
1201-23.请写出定义一个包含2个子数组的二维整型数组对象aArr的代码,其中第一个子数组有5个元素,第二个子数组有3个元素。
int aArr[][]=new int[2][];
aArr[0]=new int[5];
aArr[1]=new int[3];
14.设有数组a和b的定义如下:
int[]a={1,2,3};int[]b={4,5,6}
……
执行以下代码“a=b;”,除了完成赋值操作之外,引起系统额外要做的工作是_________。(P45)回收内存(引用类型)
0901-33.阅读下列程序,请写出调用pascal(4)的输出结果。
static void pascal(int n) {
12 / 59
int pas[];
pas = new int[n];
pas[0] = 1;
n(pas[0]);
for (int i = 2; i <= n; i++) {
/* 由存储在pas中的原来内容生成新内容*/
pas[i - l] =1;
for (int j = i- 2;j > 0; j--)
pas[j] = pas[j] + pas[j - 1 ];
for (int j = 0; j < i; j++)
(pas[j] +" ");
n();
}
}
0910- 33.阅读下列程序,请写出该程序的输出结果。引用参数传递
class Test33 {
static void s (int b[ ], int k) {
int i, j, t;
for(i = 1;i< k; i++) {
for(t = b[i], j = i-1; j >= 0 && t < b[j]; j--)
b[j+l] = b[j];
b[j+ 1 ] = t;
}
}
public static void main(String []args){
int i, a[] = {6, 12, 7, 11, 5 };
s(a, 5);
for(i = 0;i< ; i++) (a[i]+" ");
System. out. Println();
}
} 5 6 7 11 12
1010-33.阅读下列程序,请写出该程序的输出结果。
class Test33 {
static int merger(int [] a, int []b, int []c){
int i = 0, j = 0, k = 0;
13 / 59
1
1 1
1 2 1
1 3 3 1
while(i < && j < ) {
if(a[i] < b[j])c[k++] = a[i++]; else c[k++] = b[j++];
}
while(i < ) c[k++] = a[i++];
while(j < ) c[k++] = b[j++];
return k;
}
public static void main(String[] args) {
int a[] = {3, 6, 9}; int b[] = { 1, 2, 5};
int []c = new int[100]; int p = merger(a, b, c);
for(int k = 0; k < p; k++)
(c[k]+ (k < p-1 ? " ":"n"));
}
}
0910-27.方法int sigmaEvenNum(int[]a)的功能是求已知数组中偶数的个数。
static int sigmaEvenNum(int []a){
int s =0;
for ( int i=0;______;i++ ) {
if(______) s++;
}
return s;
}
1001-27.方法void moveOddForword(int a[ ])的功能是将数组中的所有奇数移到所有偶数之前。
void moveOddForword(int a[]){
for(int i=0, odd=0;___ i< _____;i++)
if(___a[i]%2= =0_____){
int t=a[i];a[i]=a[odd];a[odd]=t;odd++;
}
}
1010-4.设有数组定义int[][] x={{1,2},{3,4,5},{6},{}};,则的值为( )
A.3 B.4 C.6 D.7
1 2 3 5 6 9
0901-37.编写数组复制方法。该方法从已知平衡的两维数组的左下角复制出一个非平衡 14 / 59
的三角二维数组。设复制数组方法的模型为:
public static double[][] leftDownConer(double[][]anArray)
public static double[][] leftDownConer(double[][]anArray){
}
}
return temp;
}else{
}
temp=new double[l2][];
for(int i=0;i } return temp; temp[i]=new double[i+1]; for(int j=0;j temp[i][j]=anArray[l1-l2+i][j]; int l1= ; int l2=anArray[0].length; double temp[][]; if(l1<=l2){ temp=new double[l1][]; for(int i=0;i temp[i]=new double[i+1]; for(int j=0;j temp[i][j]=anArray[i][j]; 0910-37.编写方法int searchMaxNumIndex(int[]a),寻找已知数组中最大数的下标并返回。 int searchMaxNumIndex(int[]a){ int i,maxIndex;(1分) for(i=maxIndex=0;i<;i++){(2分) if(a[i]>a[maxIndex])(1分) maxIndex=i;(1分) } return maxIndex;(1分) } 37.编写一个方法halfArray(),要求该方法有一个元素类型为int的数组参数,方法返回一个新数组,新数组的长度与参数数组的长度相同,而新数组元素的值是参数数组各元素的一半。(6分) 1:参考答案: [解析]本题考核知识点是面向对象程序设float [] halfArray(int [] a){(1分) 计中的方法设计。 编写方法,需要确定方 float [] b=new int[];(2分) 法名,已给出halfArray;再确定参数个数及 for(int k=0;k<;k++){(2分) 类型,要求是一个int型数组参数即 b[k]=float(a[k]/2.0); halfArray(int []);再就是确定方法返回值类型,要求返回一个新数组,新数组元素类 15 型要确定下来,根据题意,新数组元素是参/ 59 数数组相应元素的一半,这一半应该可能是小数,所以方法头应该为 } return b;(1分) } 4.2 字符串 1001-14.Java语言提供了两个用于处理字符串的类,它们是__________。StringStringBuffer 14.设有两个字符串对象str1和str2,则表达式“strl==str2”的意义是判别字符串strl和str2______。是否引用同一个对象 1404-14.Java语言提供的用于处理不可改变的字符串类是 ______。String 4.设有以下代码: String s l="123"; String s2="123"; String s3=new String("123"); 则表达式s1==s2和s1==s3的值分别是( ) ,true ,false ,false ,true 14.已知字节数组b,取由b[i]开始至b[j](其中j≥i≥0)结束的字节字符构造一个字符串s,其语句为:String s=new String(__b,I,j ________);。 14.设有字符串定义: String s="ABCDABCD"; 则表达式f("B")的值是_________。 1 1101-4.以下代码段的输出结果是( ) String s="JavaWorld"; (f("a",4)); A.-1 B.O C.1 D.4 1210-4. 已知String s="ABCDEFGHIJABC",以下说法错误的是 ..A. f("C")等于2 C. f("A",7)等于10 4.执行下列程序语句后,b的值是 String a=〃Hello〃; String b=ing(1,3); A.el B.He C.ell D.Hel 1110-4.在Java语言中,能够实现字符串连接的方法是 ( ) A. String substring(int startpoint) B. String concat(String s) B. f("EFG",2)等于4 D. f("D",4)等于3 C. String replace(char old,char new) D. String trim() 1201-4.表达式 "java程序设计".1ength() 的值是( ) A. 0 B.12 C. 8 D.13 16 / 59 1201-15.要获得对象的字符串表示,调用的方法是 String toString() 。 1010-37.请编写方法int countNum(String str),该方法的功能是统计已知字符串str中数字的个数。例如,countNum("A42B83C2D")的返回值是5。 33.阅读下列程序,请写出该程序的功能。 import java. util.*; public class Class1{ 参考答案:程序获得当前日期,将日期public static void main(Srting args[]){ 的字符串表示输出;(2分)截取日期字Date date1=new Date(); 符串中从第11位开始到字母‘C’之前System. out. println (datel); String t=ng(); 的部分字符串,并输出。(2分) int endPos=f(`C'); t=ing(11,endPos); System. out println(t); } } 4.以下是关于字符串运算的代码,执行该代码段的输出结果是( ) String s=″″,sl,s2; sl=ing(2);s2=ing(2,5);n(s1+s2); A.0122345 B.234567892345 C.012234 D.23456789234 Tokenizer类用来把字符串分解为标记。 4.需要分析字符串,并将字符串分解成可被独立使用的单词,可使用java. util包中的类是 ( ) A.String B.StringBuffer C.StringTokenizer D.stringTokenizer 1001-33.阅读下列程序,请写出该程序的功能。 import .*;import .*; public class Test33{ public static void main(String args[]){ String str=(String)JOptionPane.showInputDialog(null,″请输入信息″, ″输入对话框″,JOptionPane.PLAIN_MESSAGE,null,null,null); StringTokenizer pas=new StringTokenizer(str, ″,″); int n=okens(); 17 / 59 n(″输入的信息有单词:″+n+″个,全部单词如下:″); while(pas.hasMoreTokens()){ String s=ken(); n(s); } } ) 答: 在输入对话框中输入文字,并以多好作为分割符输出单词个数,及各个单词 1010-14.使用默认字节字符对应表,将字符串转化为字节数组的方法是______。getBytes() 1001-37.请编写方法void strReverse(String str),该方法的功能是输出一个新字符串,新字符串字符排列顺序与原字符串str的字符排列顺序相反。例如,strReverse(″ABCD″) 所输出的结果是″DCBA″。请使用字符串与字节数组的相互转换方法进行设计。 答:public static void strReverse(String str){ byte[] s=es(); String t=""; for(int i=-1;i>=0;i--){ t+=(char)s[i]; } n(t); } 第五章 图形界面设计(一) 创建框架窗口的方法,设计标签、按钮和按钮事件的处理方法 面板,布局设计,文本框和文本区数据输入和输出的方法 5.1 图形界面设计基础 领会:AWT和Swing的基础知识,组件和容器,事件驱动的概念 5.能够直接添加组件的Swing容器是 A.JFrame B.JDialog C.JWindow D JPanel 1404-5.某Java程序的类A要利用Swing创建框架窗口,则A需要继承的类是 A.JWindow B.JFrame g D.JApplet 5.以下关于AWT与Swing之间关系的叙述,正确的是( ) 是AWT的提高和扩展 18 / 59 B.在写GUI程序时,AWT和Swing不能同时使用 和Swing在不同的平台上都有相同的表示 中的类是从Swing继承的 15.一个基于Swing的应用程序可能在任何平台上都会有相同的______。外观与风格 1010-5.在以下Swing的类中,属于容器的是( ) t n rea 1101-5.以下不属于...AWT库中定义的类是( ) cs 1101-23.请写出JFrame、Frame以及Window这三个类的继承关系(按照从父类到子类顺序排列)。Window>frame>jframe 1110-5.在以下供选择的容器类中,属于顶层容器的是 ( ) A.JDialog C.JScrollPane ar 1210-5. 以下Swing提供的GUI组件类和容器类中,不属于顶层容器的是 ...A. JFrame B. JApplet C. JDialog D. JMenu 2 框架窗口 综合应用:声明JFrame的子类和创建JFrame窗口 5.要为程序的子窗口设定一个由字符串s指定的名字,可以采用的代码是( ) A.JFrame(s) B.window(s) C.new JFrame(s) D.super(s) 5.在Swing中,它的子类能用来创建框架窗口的类是 ( B ) A.JWindow B.JFrame C.JDialog D.JApplet 1110-15.用Swing编写GUI程序时,通常用 __Jframe__ 类派生的子类创建窗口对象。 24.请写出在JFrame框架窗口对象中添加组件的步骤。 5.3 标签、按钮和按钮事件 简单应用: 声明和创建按钮标签 综合应用: 声明和创建按钮和按钮事件的处理 1210-15. 为了让监视器与事件对象关联起来,需要对事件对象做__监视器注册____,告诉系统事件对象的监视器。 1404-23.请写出对事件对象作监视器注册的作用。 1110-22.请写出Java语言中编写事件处理程序的两种方案。 19 / 59 1110-23.请写出代码段,用来创建一个标签对象lbl,显示文字为“Java”,背景色设为绿色。 15.在实现接口ActionListener的方法actionPerformed()中,常用的有两个获得事件源的方法,它们是getActionCommand()和_________。getSource() 1404-15.要使得已注册的按钮对象暂时不响应事件,需使用的方法是______。setEnabled() 1001-15.某程序用代码“JTextField text=new JTextField();”创建了一个文本框,并对这个文本框注册了监视器,则在监视器处理方法actionPerformed(ActionEvent e)中,判定是在这个文本框上发生事件的条件表达式是__________。rce()==text 1001-23.请写出Java语言编写事件处理程序的两种主要方案。(P87) 28.某程序的界面包含一个文本区text1、一个文本框text2和一个按钮button。实现在文本区中输入整数序列后,点击按钮,程序响应按钮事件,累计文本区输入的整数序列,并将总和输出在文本框中。这里给出的是其中相应按钮事件的方法。 public void actionPerformed(ActionEvent e){ int sum; if(rce()==button){ String s=text1.________;//获取text1中的信息 StringTokenizer fenxi=new StringTokenizer(s,",,,n"); int n=okens(); double a[]=new double[n]; for(int i=0;i<n;i++){ 参考答案: String temp=ken(); getText() a[i]=f(temp).doubleValue(); } sum+=a[i]或sum=sum+a[i] sum=0; for(int i=0;i<n;i++){ __________; } t(""+sum);//刷新显示。} 0910-28.某小应用程序窗口包含有文本区dispArea,以及一个带文字“追加”的按钮。当点击这个按钮时,程序弹出一个输入信息的对话框,并将对话框中输入的内容追加到文本区中。以下是其中相应“追加”按钮事件的方法。 public void actionPerformed(ActionEvent e){ if(e.______.equals("追加")){ String result=(String)putDialog(null,"请输入信息", "输入对话框",_MESSAGE, null, null,null); dispArea.______(result + " "); } getActionCommand() } append 1010-28.某小应用程序窗口中有一个文本框,一个8行10列的文本区以及一个按钮,点击这个按钮时,在文本框中输入的内容会追加到文本区中。 import .*; import .*; import java,.*; public class TextAPP extends Applet implements ActionListener { JTextField input; JTextArea display; JButton append; 20 / 59 public void init() { input = new JTextField(10); display = new ; append = new JButton("追加"); add(input); add(display); add(append); tFocus(); eWrap(true); ionListener(this); } public void actionPerformed(ActionEvent e),{ display. (t() +" "); } } 5.4 面板 综合应用:声明JPanel类的子类,创建JPanel对象 简单应用:声明JScrollPane类的子类,创建JScrollPane对象 1010-15.在Swing中,带有滚动条的面板的类名是______。JScrollPane 1101-15.在Swing中,面板有两种,一种是JPanel,另一种是__JScrollPane____。 5.5 布局设计 综合应用:FlowLayout,BorderLayout,Cardlayout,GridLayout布局设计策略设计界面 识记:null布局与setBounds方法 1201-24.请写出创建一个JPanel对象p,并为对象p设定GridLayout布局的代码。 JPanel p=new JPanel(); out(new GridLayout()); 15.将容器区域分成东、南、西、北、中五个区域的布局类是_ BorderLayout _____。 5.以下是关于FlowLayout布局组件排列顺序的叙述,正确的是( ) A.从上到下排列 B.从左到右排列 C.从下到上排列 D.从右到左排列 1201-5.以下关于BorderLayout布局的叙述中,不正确的是( ) ...A.把容器内的空间划分成5个区域 C.是框架窗口的默认布局 B.加入组件应该指明要放入的区域 D.一个位置可直接放多个组件 34.阅读下列程序,请用示意图画出程序运行时呈现的界面。 import .*; import *; 21 / 59 import .*; class MyPanel extends JPanel { JButton button; JLabel label; MyPanel(String s1, String s2) { out(new GridLayout(2, 2)); button = new JButton(s1); label = new JLabel(s2, ); add(button); add(label); add(new JLabel()); } } public class Class1 { public static void main(String args[]) { JFrame mw = new JFrame("一个示意窗口"); e(400, 250); Container con = tentPane(); out(new BorderLayout()); MyPanel panel1, panel2; panel1 = new MyPanel("按钮1" ,"标签1"); panel2 = new MyPanel("按钮2", "标签2"); JButton button = new JButton("开始按钮"); (panel1, "North");(panel2, "South"); (button, "Center"); ible(true); } } 1001-34.阅读下列程序,请用示意图画出程序运行时呈现的界面。 import .*;import .*;import .*; class MyPanel extends JPanel{ JTextField textl,text2; MyPanel(String sl,String s2) { 22 / 59 textl=new JTextFieId(s1); text2=new JTextField(s2); add(text 1); add(text2); } } class MySubPanel extends MyPanel { JTextField text; MySubPanel(String sl,String s2,String s3) { super(s1,s2);text = new JTextField(s3);add(text); } } public class Test34 { public static void main(String args[]) { JFrame mw=new JFrame(″一个示意窗口″); e(350,150); Container con = tentPane(); out(new BorderLayout()); MyPanel pl=new MyPanel(″文本框l″,″文本框2″); MySubPanel p2=new MySubPanel(″文本框3″,″文本框4″,″文本框5″); JTextArea text=new JTextArea(″这里是一个文本区″); (pl,″North″); (p2,″South″); (text,″Center″);mw.setVisible(true); } } 6 文本框和文本区 综合应用:声明和创建文本框,处理文本框事件和在文本框中输入输出数据 声明和创建文本区域,将文本区域放置于滚动面板,在文本框中输入输出数据 23.请写出程序处理文本框输入结束事件(回车)添加监视器的方法,以及监视器类必须实现的接口方法。 参考答案:(P102)为对象添加监视器的方法是addActionListener;类必须实现的方法是 23 / 59 public void actionPerformed(ActionEvent e)。 34.阅读下列程序,请写出该程序的功能。 import .*;import .*;import .*; public class Classl extends Applet implements ActionListener{ JTextField text1,text2; public void init(){ text1=new JTextField(10); text2=new JTextField(10); setSize(200,100); add(text1); add(text2); ionListener(this); } public void actionPerformed(Action Event e){ long n; if(rce()==text1){ 在第一个文本框输入数据,输入结束n=ong(t()); (回车)后,(2分)在第二个文本框输出该t(f(n*n)); 整数的平方。(2分) } } } 1010-34.阅读下列程序,请写出该程序的功能。 import .*; import .*; import .*; import .*; public class Classl extends Applet implements ActionListener{ JTextField Text I =new JTextField(5); JTextField Text2=new JTextField(5); JTextField Text3=new JTextField(5); JLabel Label 1 =new JLabel("Please input three numbers:"); JLabel Label2=new JLabel(" "); JButton but=new JButton("Start!"); public void init() { setLayout(new GridLayout(6,1)); add (Label 1); add (Textl); add (Text2); add (Text3); add (but); add (Label2); t(new Font ("Courier", 1, 20)); ionListener(this); } public void actionPerformed(ActionEvent e) { int a,b,c; a=nt(Text t()); b=nt(t()); c=nt(t()); if (a + b < c || b + c < a || c + a < b) { 24 / 59 Label2 .setForeground (Color. red ); t(new Font ("Courier ", 1, 24)); t("No."); } else { eground(); t(new Font ("Courier ", 2, 24)); t(" Yes."); } } } 38.一个Java小应用程序,界面有三个文本框和两个按钮,前两个文本框用于输入整数,第三个文本框用于输出结果。两个按钮分别表示加和减运算。当前两个文本框输入整数后,点击相应按钮,程序就将计算结果输出在第三个文本框中。以下是程序的大部分,其中监视按钮事件的方法未给出,试编写处理按钮事件的方法。 注:这里是给定部分的程序,你要编写的是actionPerformed(ActionEvent e)方法。 import .*;import .*; import .*; import .*; class Panel1 extends JPanel{ JTextField text1, text2, text3;JButton addButton,subButton; Panel1(){ text1=new JTextField(10);text2=new JTextField(10); text3=new JTextField(10);setLayout(new GridLayout(5,1)); addButton=new JButton("加");subButton=new JButton("减"); add(text1); add(text2); add(text3); add(addButton); add(subButton); } } public class Classl extends Applet implements ActionListener{ Pane1 panel;//持有需访问对象的引用 public void init(){ setSize(100,200); panel=new Panel1();add(panel); (ton).addActionListener(this); (ton). addActionListener(this); } public void actionPerformed(ActionEvent e){//这里是你要编写的代码 2:参考答案:long n1,n2;(1分) if(rce()=(ton)){(3分) n1=ong(t()); n2=ong(t()); t(f(n1+n2)); } else if(rce()=(ton)){(2分) n1=ong(t()); 25 / 59 n2=ong(t()); t(f(n1-n2)); } 注:将1写成text1,2写成text2整体扣1分。 [解析]本题考核知识点是图形界面设计、JPanel、JTextField、JButton及其事件的处理。 在方法体中的代码类似于34小题。容器的嵌套不要忽略了。 0901-38.设计实现以下形式布局的Java小应用程序。 注1:其中空白格是文本框,用于输入对应的内容。 注2:这里给出的是程序的一部分,你要编写的是方法MyWindow(String s)。 import .*; import .*; import .*; class MyWindow extends JFrame{ JTextField textl,text2,text3,text4; public MyWindow(String s){//这个方法是你要编写的 super(s); Container con=getContentPane(); out(new GridLayout(2,4)); JLabel label1=new JLabel("学 号"); JLabel label2=new JLabel("姓 名"); JLabel label3=new JLabel("考试成绩"); JLabel label4=new JLabel("平时成绩"); text1=new JTextField(); text2=new JTextField(); text3=new JTextField(); text4=new JTextField(); (label1); (text1); (label2); (text2); (label3); (text3); (label4); (text4); ible(true); } } 26 / 59 public class Class1 extends Applet{ MyWindow myWindow; public void init(){ myWindow=new MyWindow("一个小应用程序"); } } 38.以下程序的界面有一个按钮button、一个文本区textA和一个文本框textF。程序运行时,在文本区中输入数字序列,单击按钮,则在文本框中显示数字序列的和。以下是要求你编写的actionPerformed(ActionEvent e)方法的部分代码。 提示:本题来源于例5.9,但考试内容主要小涉及4.2字符串 public void actionPerformed(ActionEvent e) { if (rce() == button) { String s = t(); double sum =0; StringTokenizer fenxi = new StringTokenizer(s, " ,n"); //请在以下位置编写代码 int n=okens();(1分) int i=0;(1分) while(eTokens()){(1分) String s1=ken();(1分) sum=sum+f(s1).doubleValue();(1分) } t(""+sum);(1分) 1010-38.一个小应用程序,界面如下图所示,其功能为实现摄氏温度和华氏温度的相互转换。以下是程序的大部分,请编写其中的监视器方法。 注:华氏温度(F)=摄氏温度(C)×9/5+32 import .*; import .*; import .*; public class test38 extends Applet implements ActionListener { JTextField textl, text2; JButton c2f, f2c; public void init() { text l = new JTextField(5); text2 = new JTextField(5); c2f=new JButton("摄氏转换为华氏"); f2c=new JButton("华氏转换为摄氏"); add(text 1);add(text2); add(c2f);add(f2c); tFocus(); ionListener(this);ionListener((this); 27 / 59 } public void actionPerformed(ActionEvent e) { //请在以下位置编 28 / 59 写代码 } } 第六章 图形界面设计(二) 6.1 选择框和单选按钮 综合应用:声明和创建选择框、单选按钮,选择框和单选按钮分组,处理选择项目事件 16.使用单选按钮的方法是将一些单选按钮用_________对象分组,使同一组内的单选按钮只允许一个被选中。 ButtonGroup 29.这是一个处理选择项目事件的子窗口类。窗口中有2个选择框,当选中某个选择框时,文本框将显示选择框对应的信息。 class MyWindow extends JFrame implements ItemListener { JTextField text; JCheckBox boxl, box2; MyWindow(String s) { _________; super(s) Container con = tentPane(); ation(100, 100); e(400, 200); text = new JTextField(10); box1 = new JCheckBox("A计算机", false); box2 = new JCheckBox("B计算机", false); out(new GridLayout(3, 2)); ( new JLabel("计算机产品介绍", )); add(new JLabel("计算机2选1", )); (box1); (box2); (text); box1 .addItemListener(this); mListener(this); ible(true); (); } public void itemStateChanged( _________e){ ItemEvent 29 / 59 if(mSelectable() == box1) { text. setText("A公司生产"); } else if(mSelectable() == box2) { text. setText("B公司生产"); } } } 29.以下程序段是选择项目事件处理程序的样例,一个由3个单选按钮组成的选择组被定义为一个面板子类Panel,当某个按钮被选中时,按钮监视程序在类MyWindow的一个文本框中输出某个按钮被选中的字样。以下是类Panel的定义。 class Panel extends JPanel implements { static JRadioButton box[]; ButtonGroup g; Panel(String radioNameList[]) { box=new JRadioButton[]; setLayout(new GridLayout(1, )); g=new ButtonGroup(); for(int i=0;i<; i++){ box[i] = new JRadioButton(______,false); (box[i]);add(box[i]);box[i].addItemListener(this); } radioNameList[i] } isSelected() public void itemStateChanged(ItemEvent e){ for(int i = 0; i < ; i++){ if(box[i]._______) { t(box[i].getLabel()+"被选中!"); } } } } 1010-29.某小应用程序有一个由3个单选按钮组成的颜色选择组,当选中某种颜色时,窗口的背景颜色将作相应的变化。这里给出的是窗口子类My Window的定义的框架以及其构造函数的定义。 class MyWindow extends JFrame implements { … MyWindow(String s) { super(s); Container con = tentPane(); ItemListener 30 / 59 out(new GridLayout(3,2)); ation(100, 100); e(400, 400); panel 1 = new Panel l (); label l = new JLabel("改变前景颜色",); (label 1 ); con. ;//add(panel1) panel 1 .box 1 .addltemListener(this); panel 1 .box mListener(this); panel 1 .box mListener(this); this. setVisible (true); (); } … } 6.2 列表和组合框 简单应用:声明和创建列表、组合框 1210-16. 列表在界面中表现为列表框,是___JList___类或它的子类的对象。 1010-16.组合框(JComboBox)是______的组合。文本框和列表 1101-6.鼠标单击列表中某个选项事件的相关接口是( ) tionListener lectionListener Listener ionListener 1110-24.请写出JComboBox对象上可能发生的两种事件类型的名字。 6.3 菜单 综合应用:设置菜单和菜单项、处理菜单和菜单项事件 6.以下关于菜单的叙述中,正确的是( ) A.菜单分三级定义,最高一级的是菜单条,菜单条中放菜单,菜单中放菜单项 B.菜单分三级定义,最高一级的是菜单,菜单中放菜单条,菜单条中放菜单项 C.菜单分两级定义,最高一级的是菜单,菜单中放菜单项 D.菜单分两级定义,最高一级的是菜单条,菜单条中放菜单项 29.以下是生成菜单项对象,以及菜单项选择事件处理方法的部分代码。要求当菜单项singingItem被选中时,在文本框text中输出“唱歌菜单项被选中!”的字样。 …… singingItem=new________("唱歌");//生成菜单项对象 …… public void actionPerformed(ActionEvent e){ if(rce()==singingItem) t(e.________()+ "菜单项被选中!"); } 生成菜单条是用类JMenuBar的构造方法JMenuBar(),把菜单条放入JFrame窗口中用setJMenuBar()方法;生成菜单用类JMenu的构造方法 JMenu()或JMenu(String s);生成菜单项用类JMenuItem的构造方法 JMenuItem()或JMenuItem(String s)。在菜单事件中获得事件源的方法是getSource(),获得事件源文字信息的方法是getActionCommand()。 31 / 59 1001-29.以下是子窗口中设置一个菜单条类的定义。类的构造方法根据指定的窗口名称和菜单表设置菜单条,菜单和菜单项,当选中某个菜单项时,在文本框中显示相应菜单项被选中的信息。 class MenuWindow extends JFrame implements ActionListener { public static JTextField text; public MenuWindow(String s,String menuList[][]) { setTitle(s); Container con=tentPane(); out(new BorderLayout()); ation(100,100); e(300,100); JMenuBar menubar=new JMenuBar(); for(int i=0; i<;i++) { JMenu menu=new JMenu(menuList[i][0]); for(int j=1;j JMenultem anltem=new JMenultem(menuList[i][j]); anltem.setActionCommand(menuList[i][j]); anltem.___ ActionListener(this)_____;(anltem); } menubar.__ add(menu)________; } text=new JTextField();setJMenuBar(menubar); (text,BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e){ text.setText(e.getActionCommand()+″菜单项被选中! ″); } } public class Test29 extends Applet { MenuWindow window; String menuList[][]={{″体育″,″跑步″,″打蓝球″,″打乒乓″}, {″娱乐″,″唱歌″,″跳舞″}}; public void init() { window=new MenuWindow(″体育娱乐之窗″,menuList); 32 / 59 ible(true); } } 35.阅读下列程序,请回答以下问题: (1)该程序的菜单条中共有几个菜单项? (2)单击哪个菜单项,可以打开一个对话框? (3)该对话框是强制型还是非强制型? (4)该对话框中显示的是什么内容? Import .*;import .*; import .*; import .*; class MyDialog extends JDialog { MyDialog(JFrame F, String s) { super(F, s, false); Date date = new Date(); String t = ng(); JLabel text = new JLabel(t); add(text); setSize(200,100); setVisible(true); } } public class MenuDemo extends JFrame implements ActionListener { JMenuBar menubar; JMenu action; JMenuItem show, set, quit; public MenuDemo() { menubar = new JMenuBar(); setJMenuBar(menubar); action = new JMenu(''操作''); (action); show= new JMenuItem(''显示''), (show); set = new JMenuItem("设置"); (set); arator(); quit = new JMenuItem("退出"); (quit); ionListener(this); ionListener(this); ionListener(this); setSize(300,300); setVisible(true); } public void actionPerformed(ActionEvent e) { if(rce() == show) {MyDialog diag = new MyDialog(this, "信息");} else if(rce()== set) { le("菜单演示");} else if(rce() == quit){ (0); } } public static void main(String[] args) {new MenuDemo();} } (1)3个菜单项(1分) (2)“显示”菜单项(1分) (3)非强制型对话框(1分) (4)显示当前事件(1分) 33 / 59 6.4 对话框 简单应用:声明和创建对话框 1010-24.在Swing中,对话框有几种?并请写出它们的主要区别。P121 1101-16.对话框的默认布局是____BorderLayOut_____。 1110-16.强制型对话框强制对话过程 ____不能中断___ ,直至对话过程结束,才让程序响应对话框以外的事件。 1210-6. 以下不是..JDialog类构造方法的是 A. JDialog( ) C. JDialog(JFrame f, String s) B. JDialog(boolean b) D. JDialog(JFrame f, String s, boolean b) 16.在构造非强制对话框时,所使用的构造方法是JDialog(f,s, ___false__),其中f为对话框所依赖的窗口,s为对话框的标题。 1001-38.请设计实现如下用于输入学号和姓名的对话框界面,其中空白格是文本框,用于输入相应的内容。 这里给出的是程序的一部分,你要编写的是类InputNoNameDialog的构造方法InputNoNameDialog(JFrame f,String s,JTextField t)。其中参数f是对话框的依赖窗口,s是对话框标题,t是依赖窗口中显示对话框输入内容的文本框。 以下是类InputNoNameDialog的程序框架。 class InputNoNameDialog extends JDialog implements ActionListener{ JLabel title;JTextField textl,text2,mainText;JButton done; InputNoNameDialog(JFrame f ,String s,JTextField t) { super(f,s,true); mainText = t;Container con = getContentPane(); title=new JLabel(s); textl=new JTextField(10); text2=new JTextField(10); out(new GridLayout(3,2)); e(200,100); setModal(false); //请在以下位置续写其余代码 答: done=new JButton("确定"); ionListener(this); (title);(done); (new JLabel("学号"));(textl); (new JLabel("姓名"));(text2); 34 / 59 setVisible(true); } public void actionPerformed(ActionEvent e) { //输入结束按确定按钮后,将对话框中输入的学号和姓名在它依赖窗口的文本框中显示。 t(″学号:″+t()+″ 姓名:″+t()); setVisible(false);dispose(); } } 6.5 滚动条 简单应用:声明和创建滚动条 1404-1 6.一个水平滚动条对象的初始值是1 50,滑块的宽是8个像素,表示的范围是[0,300]。 创建这样的滚动条对象时,提供的最后2个参数依次是______。0,300 35.阅读以下程序,请写出该程序的功能。 import .*; import .*;import .*; class MyScrollBar extends JscrollBar{ public MyScrollBar(int init, int len, int low, int high){ super(JScrollBar. HORIZONTAL, init,len,low,high); } } class MyWindow extends JFrame implements AdjustmentListener{ private JTextField text; MyWindow(String s){ 滑动滚动条的滑块,super(s); 在文本框显示块位MyScrollBar myBar=new MyScrollBar(10,10,0,255); Container con=this. getContentPane(); 置对应的数值 con. setLayout(new GridLayout(2,1)); this. setSize(200,100); this. setLocation(100,100); ustmentListener(this); text=new JTextField("",20); con. add(text);(myBar); ible(true); } public void adjustmentValueChanged(AdjustmentEvent e){ MyScrollBar myBar=(MyScrollBar)ustable(); t(""+ue()); } } public class Class1{ public static void main(String[]args){ MyWindow myWindow=new MyWindow("text5_4"); } } 1010-35.阅读下列程序,请写出该程序的功能。 import .*; import .*; import .*; 35 / 59 class MyScrollBar extends JScrollBar { public MyScrollBar(int init, int len, int low, int high){ super(NTAL, init, len, low, high); } public Dimension getPreferredSize(){ return new Dimension(125, 20); } } class MyWindow extends JFrame implements AdjustmentListener{ private JTextField text; MyWindow(String s){ super(s); MyScrollBar tempBar = new MyScrollBar(l0, 10, 0, 255); Container con = tentPane(); out(new GridLayout(2,1)); e(250, 100); ation(100, 100); djustmentListener(this); text= new JTextField("移动滚动条的滑块",20); (text); (tempBar); ible(true); (); } public void adjustmentValueChanged(AdjustmentEvent e){ MyScrollBar myBar=(MyScrO11Bar)ustable(); t("选择的值是:"+ue()); } } public class Test35 { public static void main(String[] args) { new MyWindow("滚动条示意程序"); } } 1001-16.一个水平滚动条对象的初始值是50,滑块的宽是10个像素,表示的范围是[0,250]。 创建这样的滚动条对象时,提供的5个参数依次是__________。(P125)NTAL,50,10,0,250 23.请写出将文本区text放置于滚动面板jsp,并将滚动面板jsp添加到JFrame窗口myFrame的Java语句。 36 / 59 TextArea text=new TextArea(); JScrollPane jsp=new JScrollPane(text); tentPane().add(jsp); 6.6 鼠标事件 识记:鼠标事件类型、处理接口、处理方法 1404-6.MouseMotionListener接口能处理的鼠标事件是 A.按下鼠标键 B.鼠标点击C.鼠标进入 D.鼠标移动 6.用于判定鼠标右键操作的常量是 A.BUTTON1_MASKB.BUTTON2_MASKC.BUTTON3_MASK D.BUTTON4_MASK 1201-16.注册鼠标点击事件监视器的方法是 addMouseListener(监视器) 。 语言为处理鼠标事件提供两个接口:_________接口和MouseMotionListener接口。 MouseListener 6.MouseListener接口不能处理的鼠标事件是 ( D ) ..A.按下鼠标左键 C.鼠标进入 B.点击鼠标右键 D.鼠标移动 1010-6.在以下供选择的方法中,属于接口MouseMotionListener的方法是( ) eleased() xited() ntered() oved() 1110-6.在以下选项中,属于MouseListener接口的方法是 ( ) A.mouseDoubleClicked(MouseEvent) C.mouseMoved(MouseEvent) ragged(MouseEvent) ressed(MouseEvent) 28.以下小应用程序能响应鼠标按动的事件,当鼠标在正文区的某个位置被点击时,就在该位置显示一个记号“×”,程序限制最多保留最新20个位置。 import .*; import .*; import .*; import .*; class MyPanel extends JPanel { public void print(Graphics g, int x, int y)( or(); ne(x-5, y-5, x+5, y+5); 37 / 59 ne(x+5, y-5, x-5, y+5); } } class MyWindow extends JFrame implements MouseListener{ final int MaxMarks = 20; int currentMarks = 0, markCount = 0; Point marks[] = new Point[MaxMarks]; MyPanel panel; MyWindow(){ ation(100, 100); e(300, 300); Container con = tentPane(); panel = new MyPanel(); (panel); _________(this); addMouseListener ible(true); } public void paint(Graphics g){ int i; ect(0,0, th(), ght()); for(i =0;i < markCount; i++) { _________(g, marks[i].x, marks[i].y); panel .print //注意上下文 } } public void mousePressed(MouseEvent e){ } public void mouseReleased(MouseEvent e){ } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void mouseClicked(MouseEvent e){ marks[currentMarks] = new Point((), ()); if(markCount < MaxMarks)markCount++; 38 / 59 currentMarks = (currentMarks+ 1)%MaxMarks; repaint(); } } public class Class1 extends Applet { public void init(){ MyWindow myWndow = new MyWindow(); } } 1001-28.以下程序创建了一个窗口,然后在窗口内显示″Hello,World! ″。 import .*; import java.awt*; public class HelloWorld { public static void main(String[ ]ares) { TextFrame frame=new TextFrame(); aultCloseOperation(_ON_CLOSE); frame. ____ setVisable(true)____; } } class TextFrame extends JFrame { public TextFrame() { . setTitle(″HelloWorld″); setSize(WIDTH,HEIGHT); TextPanel panel=new TextPanel(); Container contentPane=getContentPane(); contentPane.add(panel); } public static final int WIDTH=300; public static final int HEIGHT= 200; } class TextPanel extends JPanel { public void paintComponent(Graphics g) { super. ___ paintComponent(g)_____; ring(″Hello,World! ″,x,y); 39 / 59 } public int x=100; public int y=100; } 6.7 键盘事件 简单应用:键盘事件处理方法 1001-35.阅读下列程序,请写出该程序的功能。 import .*:import .*;import .* public class Class 1 extends Applet implements KeyListener{ JButton button=new JButton(″开始″); JTextArea text=new JTextArea(5,20); public void init() { Listener(this); add(button);add(text); } public void keyPressed(KeyEvent e){ int t=Code(); if(t>=_A&& t<=_Z) { (″ ″+(char)t); } } public void keyTyped(KeyEvent e){} public void keyReleased(KeyEvent e){} } 答:程序功能:从键盘输入字符如果是大写字母A-Z,则显示在文本区中 16.处理键盘事件的Java程序,要实现的接口是______。KeyListener 40 / 59 第七章 图形,图像与多媒体 7.1 绘图基础 识记:Graphics类的基本功能,坐标系统 领会:利用Graphics2D类设置绘图状态属性 简单应用:着色和设置字体 7.一般的绘图程序要定义一个JPanel子类。在JPanel子类中还要重定义一个方法,在这个方法中调用绘图方法,绘制各种图形。要重定义的方法是( ) () omponent() t() () 语言规定,程序绘图区域的坐标原点位于整个区域的( ) A.左上角B.右上角C.左下角 D.右下角 1001-17.要在JComponent 子类的组件中绘图,应重写__________方法。paintComponet() 1404-17.某应用程序定义的类C17是JPanel的子类,在类C17的对象中需要绘图,则在类 C17中应重写的方法是 ______。paintComponet() 1010-17.在某个组件中绘图,一般应该为这个组件所属的子类重写______方法。paint() 7.以下所述内容全部是字型要素的是( ) A.字体、字形和大小 B.字体、风格和字号 C.字形、风格和字号 D.字形、颜色和字号 7.以下不属于文字字型要素的是 ( A ) ...A.颜色 B.字体C.风格 D.字号 1404-7.以下术语中,属于文字字型风格属性的是 A.颜色 B.宋体C.斜体 D.字号 17.在Java语言中,用类Font对象设置字型。如果要设置的字型是:细明体、正常风格(),12磅字号,构造这样要求的Font对象fnA的代码是_________。Font fnA=new Font(“细明体”,.12) 17.某个绘图方法设置成“异或模式”绘图,并用黄色作为异或模式设定的绘图颜色。如果当时背景色为红色,并用红色绘制线段,则线段的实际颜色是_________。(P140)黄色 1101-17. Java语言的绘图模式有两种,它们是正常模式和_________ 7.设置异或绘图模式的方法是 A.setXORMode() B.setPaintMode() C.XORMode() D.PaintMode() 7.2 绘图 简单应用:利用Graphics2D类对象绘制几何图形、绘制二次、三次曲线 41 / 59 综合应用:显示文字,绘制基本几何图形 24.请写出一条语句,能够绘制一条从点(20,30)开始,长为100像素的水平线段。设调用的对象是类型为Graphics的g。 (P140)ne(20,30,120,30);或ne(120,30,20,30); 25.请写出使用Graphics2D类声明并创建一个左上角为(20,30)、边长为50的正方形对象square的语句。 1404-24.已知Graphics对象g,获得Graphics2D对象g2d,然后,用圆角长方形类创建对象 circle,该对象的左上角坐标是(30,40),半径是50。请写出实现以上要求的Java代 码。 100-24.设已经有Graphics2D对象g2d, 请用Java语句绘制一个矩形rect,其左上角坐标是(20,30),宽是120,高是30。 Rectangle2D rect=new (20,30,120,30) (rect); 1201-7.设已经有Graphics2D对象g2d,RoundRectangle2D对象rRect,绘制对象rRect的代码是( ) (rRect) undRect(rRect) () undRect() 1201-17.在异或模式下绘图时,实际绘制的颜色是由当前正要绘制的颜色、原先绘制的颜色,以及 异或模式设定的颜色 作特定的运算确定的。 24.要用Graphics2D类的方法画一个图形,首先要把参数对象g强制转换成Graphics2D对象;然后,用图形类提供的静态方法Double()创建一个图形对象;最后,以图形对象为参数调用Graphics2D对象的draw()方法绘制这个图形。请写出用这样的方法绘制一条线段的程序段,线段的两个端点分别是(10.0,10.0)和(30.0,30.0)。 Graphics2D g2d=( Graphics2D) g; Line2D line=new (10,20,30,40); (line) 7.设已经有Graphics2D对象g2d,Rectangle2D对象r,绘制对象r的代码是( ) A.(r)B.ct(r)C.() D.ct() 1110-7.设已经有Graphics2D对象g2d,Line2D对象line,绘制对象line的代码是( ) A.g2d.draw(1ine) B.g2d.drawLine(1ine) C.1ine.draw()D.1ine.drawLine() 1110-17.在Graphics类中,用于在指定的位置显示字符串的方法是 _____darwString()__ 。 7.3 图像处理基础 42 / 59 简单应用:显示图像和图像缓冲 1210-17. Java语言的图像处理功能被封装在___ Image _______类中。 30.这是一个播放幻灯片的小应用程序中的paint()方法。设幻灯片已由小应用程序的init()方法装入内存,并存放于myImage数组中,幻灯片的张数放于变量num中,paint()方法要播放的幻灯片号是int currentImage = 0; final int num = 30; Image [ ] myImage = new _________ [num]; Image …… public void paint(Graphics g) { if ((mylmage[currentImage]) != null) g. _________ (myImage[currentImage], 10, 10, drawImage myImage [currentImage].getWidth(this), myImage [currentImage].getHeight(this), this); } 1001-30.以下是一个用鼠标自由作画的小应用程序。最简单的方法是根据鼠标所在位置画点,跟随鼠标的移动,不断画圆点,就能实现用鼠标作画。 import java.awt.*; import java..*; public class Test30 extends java.applet.Applet implements MouseMotionListener { Color color;int lineSize=2: int x=-1,y=-l; public void init(){ setLocation(30,20); setSize(300,300); setBackground();addMouseMotionListener(this); } public void paint(Graphics g){ if(x!=-1&&y!=-1) { or(color);al(x,y,1ineSize,lineSize); } } public void mouseMoved(MouseEvent e){} public void mouseDragged(MouseEvent e){ 43 / 59 x=();y=e.getY();___ repaint()______; } public void ______ update()__ (Graphics g){ paint(g);} ; } 1010-30.某小应用程序的界面有两个按钮,点击“画圆”按钮,程序在窗口画一个圆,点击“画矩形”按钮,程序在窗口画一个矩形。 import .*; import .*; import .*;import .*; public class Classl extends Applet implements ActionListener { boolean c = false; int r = 50,a = 50, b = 50; JButton bl, b2; public void init(){ setSize(200, 200); setBackground(); b1 = new JButton("画 圆"); b2 = new JButton("画矩形"); ionListener(this); ionListener(this); add(b1); add(b2); setVisible(true); } public void (Graphics g){ ect(70, 100, 130, 200); or(Color. red); if(c) undRect(70, 100, r, r, r, r); else ct(70, 100, a, b); } public void update(Graphics g){ paint(g); } public void actionPerformed(ActionEvent e){ if(rce()==b1) { c = true; } else if(rce()==b2){ c = false; } ; } } 34.阅读下列程序,请写出该程序的功能。 import .*; import .*; import .*; import .*; public class Test34 extends Applet implements ActionListener { JTextField text;int r; JPanel panel; public void paint(Graphics g){ 44 / 59 Graphics gc = phics(); ect(0,0, th(), ght()); or(); al(10, 10, r, r); } public void init() { text = new JTextField(10); panel = new JPanel(); setSize(200, 100); setLayout(new GridLayout(2,1)); add(text); add(panel); ionListener(this); } 以文本框输入的public void actionPerformed(ActionEvent e) { 数字为半径,(1if (rce() == text) { 分)以(10,10)r = nt(t()); 为左上角,(1分)repaint(); 填充一个红色(1} 分)的圆。(1分) } } 1001-36.阅读下列程序,请写出该程序的功能。 import .*; import .*; public class Test36 extends implements Runnable{ Thread myThread = null; double seta=0.0; public void start() { setSize(500,400); if(myThread=null){ myThread=new Thread(this); ();} } public void run() { while(myThread!=null) { try {(40); } catch(InterruptedException e){} seta+=3.0; if(seta>=360)seta=0; repaint(); } } public void paint(Graphics g) { final double pi=3.14159; final double r = 100.0; int x0=250+(int)(r*(3.1415926/180.0*seta)); int y0=200+(int)(r*(3.1415926/180.0*seta)); or(); al(x0,y0,10,10); } 45 / 59 } 答:红色、顺时针画圆 7.4 多媒体基础 简单应用:播放幻灯片、动画、音乐的方法 1010-7.小程序要播放音频文件,可使用类( ) lip Clip 17.在Java语言中,要播放音频文件可以使用__________类。 1101-24.请写出lip控制声音播放的三个方法。 Loop();stop();play() 第八章 多线程 8.1 线程的基本概念 识记:线程与进程的区别,线程的各种状态、优先级,线程间的互斥与同步 1210-8. 阻塞状态的线程在消除引起阻塞的原因后,会转入 A. 死亡状态 B. 开始状态C. 就绪状态 D. 运行状态 18.线程从阻塞状态恢复到就绪状态,有三种途径:自动恢复、用resume()方法恢复和用_________方法恢复。notify()或notifyAll() 18.当线程调用resume()方法后,就进入__________状态。 1201-18.多线程程序设计中,让执行临界段程序时等待的线程结束等待,通常使用的方法有resume()、notify()或者 notifyAll() 。 1001-18.当线程使用完临界段后,为了使等待的线程恢复工作,需要调用的方法是__________。Notify() 1110-18.在Java中,线程的调度策略采用___抢占式____,优先级高的线程比优先级低的优先执行。 8.在以下四个供选的整数中,能作为线程最高优先级的整数是 ( C ) A.0 B.1 C.10 D.11 1404-8.以下能作为表示线程优先级的数值,并且级别最低的是 A.0 B.1 C.1 5 D.1 6 1010-8.以下是关于线程的叙述,正确的是( ) A.多线程的使用可以提高设备的平行工作能力,但是使系统管理变得复杂 46 / 59 B.同一个进程下的线程都有自己的状态、专用数据段和独立的内存资源 C.线程是能独立运行的程序 D.进程的执行效率比线程的执行效率高 1101-8.以下关于线程互斥和同步的叙述中,正确的是( ) A.多线程互斥使用各自资源的程序段,在操作系统中称为临界段 B.临界段的作用是使某线程能够使用其它线程的资源 C.可以使用notify()方法通知等待线程结束等待 D.线程的互斥和同步可以很好地解决死锁问题 1101-18.当线程处于新建状态后,调用了start()方法,该线程就处于___就绪__状态。 1110-8.设Thread对象thd的优先级为7,thd又创建了另一个Thread对象chd,如果未对chd 的优先级进行修改,则chd的优先级为 ( ) A.1 B. 5 C.7 D. 10 8.2 Thread类和Runnable接口 综合应用:用Thread子类实现多线程,用Runnable接口实现多线程 8.用Thread子类实现多线程的步骤顺序是( ) A.声明Thread类的子类,创建Thread子类的实例,让线程调用start()方法 B.声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例 C.创建Thread子类的实例,让线程调用start()方法 D.声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例,让线程调用start()方法 18.程序员用Java语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线程的_________方法;二是建立线程实例。run() 8.用Runnable接口实现多线程的主要工作是( ) A.声明实现Runnable接口的类,在类内实现run()方法,让线程调用start()方法。 B.声明实现Runnable接口的类,在类内实现run()方法,在类内声明线程对象,在init()方法中创建新线程,启动新线程。 C.声明实现Runnable接口的类,在类内实现run()方法,在类内声明线程对象,在Init()方法或start()方法中创建新线程,在start()方法中启动新线程。 D.声明实现Runnable接口的类,在类内实现run()方法,在init()方法中创建新线程,在start()方法中启动新线程。 8.在以下供选择的方法中,能让线程从阻塞状态恢复到就绪状态的方法是( ) A.start() B.init() C.resume() D.run() 1010-25.请写出用Runnable接口实现多线程的主要工作。 1110-25.请写出线程从阻塞状态恢复到就绪状态的三种途径。 47 / 59 8.3 线程互斥和同步 识记: 线程间的互斥与同步 简单应用: 线程互斥和同步的实现方法 1010-18.多线程互斥使用______的程序段,在操作系统中称为临界段。共享资源 8.用来定义临界段,能对共享对象的操作上锁的关键字是 A.static B.share C.serialize D.synchronized 1201-8.以下关于线程互斥和同步的叙述中,正确的是( ) A.临界段是线程互斥使用资源的程序段 B.临界段能使线程使用其它线程的资源 C.互斥和同步能很好地解决死锁问题 D.可用notify()方法让等待线程结束等待 1210-18. 线程之间的相互等待被称为线程的____同步______。 1404-18.当线程进入临界段后,发现需要与别的线程进行同步,则要调用的方法 是 ______。 Wait() 31.以下定义的类shareDataManager用于管理多个线程共享数据data。一些线程要减少data,另一些线程要增加data。由于data不可以是负值,修改data的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法modiData()供修改data的线程调用,该方法在data修改结束后,应通知其它等待进入这个方法的线程。 class ShareDataManager{ int data=0; ________void modiData(int delta){ 在Java语言中,使用关键字synchronized定义临if(delta>=0){ 界段,能对共享对象的操作上锁,使得某一时刻data+=delta; 只允许一个线程使用这个共享对象。但是为了同}else { while(data <delta){ 步,可在临界段中使用wait()、notify()和try{n("发生等待!"); notifyAll()方法。wait()让线程一直等待,notify()wait(); 方法通知第一个处于等待的线程结束等待。}catch(InterruptedException e){ } notifyAll()方法使所有处于等待的线程都结束等} data-=delta; 待,重新竞争CPU。 } _________; } ShareDataManager(int ititData){data=initData;} } 36.小应用程序创建一个线程。例子使用容器类方法getGraphics()获得Graphics对象,给线程作为画笔使用。请写出该程序中这个线程的工作内容。 import .*;import .*; public class Class1 extends implements Runnable{ Thread redBall;Graphics redPen; int rx=0,ry=0; public void init(){ setSize(250,200); redBall =new Thread(this); redPen=getGraphics(); redPen. setColor(); setBackground(); } public void start(){ (); } public void run(){ while(true){ 48 / 59 if(tThread()==redBall){ rx=(int)(80*()); ry=(int)(80*()); red or(); red al(100+rx,100+ry,10,10); try{(500);} catch(InterruptedException e){} or(); al(100+rx,100+ry,10,10); } } } } 参考答案:随机位置显示一个小圆,程序采用背景色重画的办法,清除前一次显示的小圆。 本题考核知识点是图形绘制和线程31.以下定义的类ShareData用于管理多个线程共享数据val。为了保证对共享数据val修改的完整性,线程对val的操作需要互斥,类ShareData中定义的方法modiData()就是供共享val的线程修改val的方法。程序共有20个线程共享val,有些减少val,有些增加val。 public class Class1 { public static void main(String args[]){ ShareData mrc = new ShareData(50); Thread[] aThreadArray = new Thread[20]; n("t刚开始的值是:"+()); n("t多个线程正在工作,请稍等!"); for(int i = 0; i < 20; i++) { int d = i % 2 == 0 ? 50 : -30; aThreadArray[i] = new Thread(new MyMultiThreadClass(mrc, d)); aThreadArray[i].start(); } WhileLoop ://等待所有线程结束 while(true){ for(int i = 0; i < 20; i++) if(aThreadArray[i]. isAlive() ___)continue WhileLoop; break; } n("t最后的结果是: "+()); } 49 / 59
本文发布于:2024-01-28 11:46:07,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064135677188.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |