一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的。) 二、填空题1. Java源程序命名受严格的限制,Java源文件的扩展名必须是______。
2. 在switch语句中,通过______语句退出switch语句,使程序从整个switch语句后面的第一条语句处开始执行。
3. 如果成员变量x在方法内被隐藏,又要在方法中引用这个成员变量,必须使用______形式。
4. 在Java语言中,需要定义含有两个子数组的二维整型数组x,第一个子数组元素为7,8,第二个子数组元素为l,2,3,4,5,采用直接赋值创建此二维数组的语句为______。
int[][]x={{7,8},{1,2,3,4,5}};
5. ______布局使容器的多个组件拥有同一个显示空间,某一时刻只能显示一个组件。
6. 要使Java程序退出Java运行环境,可以执行的代码是______。
7. 某Java程序要使用文件输入输出流,则该程序所需要的import语句是______。
8. 启动线程,让线程从新建状态到就绪状态的方法是______。
9. 采用缓冲式输入时,可以对BufferedReader对象使用______方法按行读取文件中的内容。
三、简答题1. 设有整型变量x和y的值分别为5和110。请指出执行了下面循环语句后,变量x和y的值分别是多少?
do{x=y/x;y=y-x;} while(y>=1);
2. 用关键字final修饰的类、方法和变量各有什么特点?
在类声明之前用final修饰,声明类是final类,final类是不能被再继承的类,即它不能再有子类。
(2)用final修饰方法,声明该方法不能被子类的方法覆盖。或是为了给方法“上锁”,防止任何子类改变它的本来含义,或是为了提高执行效率,编译器可以将这个方法的所有调用都能用“嵌入代码”实现,即用方法体代码的副本来替换方法调用。
(3)用final修饰变量,声明该变量的值不能被改变。不能被改变的变量相当于一个常量。final变量主要用于以下两个方面:或是一个编译期的常数,它永远不会改变,或在初始化后,不希望它现改变。final局部变量在定义时可以暂不设定初值,但是了经初始化,以后就不能再改变。
(4)常用final声明常量,常量名习惯全部用大写字母命名。
3. 在GUI中有哪三种窗口?它们有什么特点?
(1)Applet窗口,Applet类管理这个窗口,当小应用程序启动时,由系统创建和处理。
(2)框架窗口(JFrame).这是通常意义上的窗口,它支持窗口,它支持窗口周边的框架、标题栏,以及最小化、最大化和关闭按钮。用Swing中的JFrame类或它的子类创建的对象就是JFrame窗口。
(3)-种无边框窗口(JWindow),没有标题栏,没有框架,只是一个空的矩形。
4. JCheckBox类的常用方法有isSelected()、itemStateChanged(ItemEvent e)、getItemSelectable()、addItemListener(ItemListener l),简述它们的功能。
isSelected(),获取选择框是否被选中的状态。
(2)itemStateChanged(ItemEvent e),处理选择框事件的接口方法。
(3)getItemSelectable(),获取事件源。
(4)addItemListener(ItemListemer l),为选择框设定监视器。
5. 简述Java程序实现多线程应用的途径?
一是继承Thread类声明Thread子类,用Thread子类创建线程对象。二是在类中实现Runnable接口,在类中提供Runnable接口的run()方法。无论用哪种方法,都需要Java基础类库中的Thread类及其方法的支持。
6. 当Client程序和Server程序需要通信时,可以用Socket类建立套接字连接,请写出双方实现通信的两种方式。
四、程序填空题1. 求出所有满足下列条件的两位数:将此两位数的个位数字与十位数字进行交换,可得到一个新的数,要求新数与原数之和小于100。
int i,j,x,y;
for(i=10;i<100;i++)
{
x=i%10;
y=i/10;
J=______;
if(______)
System. out. print(i+" ");
}
2. 程序的功能是在第一个文本框中输入整数,输入结束回车后,在第二个文本框中输出该整数和平方。
import java. applet.*;
import javax. swing.*;
import java. awt. event.*;
public class Class04 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);
text1. ______;
}
public void actionPerformed(Action Evnet e)
{
long n;
if(e. get Source()==text1)
{
n=Long. parseLong(text1. getText());
text2.______(String. valueOf(n*n));
}
}
}
addActionListener(this)
setText
3. 设计一个面板,该面板中有四个运动项目选择框和一个文本区。当某个选择项目被选中时,在文本区中显示该选择项目。
import java. applet.*;
import java. awt.*;
irnport javax. swing.*;
import java. awt. event.*;
public class C0601 extends Applet implements______
{
JPanel pan=new JPand();
String s[]={"足球","排球","篮球","乒乓球"};
JCheckBox box[]=new JCeckBox[4];
JTextArea text=new JTextArea(6,20);
public void init()
{
setSize(400,150);
for(int i=0;i<4;i++)
{
box[i]=new JCheckBox(s[i]);
pan. add(box[i]);
box[i].addItemListener(this);
}
add(pan);
add(text);text. setBackground(Color. cyan);
}
public void itemStateChanged(ItemEvent e)
{
text. setText("你选择了:");
for(int i=0;i<4;i++)
if(box[i].______)
text. setText(text. getText()+"\n"+ box[i]. getText());
}
}
ItemListener
isSelected()
4. 小应用程序运行后在窗口中显示一幅图片。
import java. applet.*;
import java. awt.*;
public class Class3005 extends Applet
{
Image myImg;
public void start()
{
myImg=______(getCodeBase(),"myImg. jpg");
}
public void paint(Graphics g)
{
g.______(myImg,0,0,this);
}
}
5. 某界面有一个文本区和一个按钮。点击按钮后,将文件中的内容输入,显示在文本区。此按钮的监视器方法如下(文件通过对话框指定)。
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==butt)
{
String s=null;
try
{
if((new FileDialog()).file!=null)
{
String filename=FileDialog. file. getName();
RandomAccessFile in=new______(filename,"r");
while ((s=in. readLine())!=null)
textA. append(s+"\n");
______;
}
}
catch(FileNotFoundException e1){}
catch(IOException e2){}
}
}
Random AccessFile
in.close()
五、程序分析题1. 阅读下列程序,请写出该程序的输出结果。
public class C
{
int x=10;
static int y=20;
public static void main(String[] args)
{
C obj1=new C();
C obj2=new C();
obj1.x*=2;
obj1.y*=3;
obj2.x+=4;
obj2.y+=5;
System. out. println(obj1.x);
System. out. println(obj1.y);
System. out. println(obj2.x);
System. out. println(obj2.y);
}
}
2. 阅读下列程序,请写出程序的运行结果。
public class C
{
public static void main(String[] args)
{
String text="public static void main(String[] args)";
int theCount=0;
int index=-1;
String theStr="i";
index=text. indexOf(theStr);
while(index>=0)
{
++theCount;
index+=theStr. length();
index=text. indexOf(theStr,index);
}
System. out. println("The Text contains"+theCount+"i");
}
}
3. 已知某程序的界面包含一个文本区text1、一个文本框text2和一个按钮button。下面是该程序的相关方法。阅读下面方法,写出该方法功能。
public void actionPerformed(ActionEvent e)
{
int sum;
if(e. getSource()==button)
{
String s=text1. getText();
StringTokenizer fenxi=new StringTokenizer(s,",\t\n");
int n=fenxi. countTokens();
double a[]=new double[n];
for(int i=0;i<n;i++)
{
String temp=fenxi. nextToken();
a[i]=Double. valueof(temp). doubleValue();
}
sum=0;
for(int i=0;i<n;i++)
sum+=[i];
text2. setText(" "+sum);
}
}
该方法功能是:在文本区text1中输入整数序列后,点击按钮后,程序响应按钮事件,累计文本区输入的整数序列,并将总和输出在文本框text2中。
4. 阅读下列程序,请写出程序的运行结果。
import java. applet.*;
import javax. swing.*;
import java. awt. event.*;
public class C extends Applet implements ActionListener
{
int n=0;
JButton button;
public void init()
{
setSize(400,100);
button=new JButton(" ");
add(button);
button. addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
n++;
button. setText(n+" ");
}
}
该程序的功能是:小应用程序窗口中有一个按钮,点击这个按钮时,点击按钮的次数会显示在按钮上。
5. 阅读下列程序,请写出程序的运行结果。
import java. applet.*;
import java.awt.*;
public class C extends Applet implements Runnable
{
Thread redBall,blueBall;
Graphics redPen,bluePen;
int blueSeta=0,redSeta=0;
public void init()
{
setSize(250,200);
redBall=new Thread(this);
blueBall=new Thread(this);
redPen=getGraphics();
bluePen=getGraphics();
redPen.setColor(Color. red);
bluePen.setColor(Color. blue);
setBackground(Color. gray);
}
public void start()
{
redBall.start();
blueBall.start();
}
public void run()
{
int x,y;
while(true)
{
if(Thread.currentThread()==redBall)
{//以下代码为顺时针画圆
x=(int)(80.0*Math.cos(3.1415926/180.0*redSeta));
y=(int)(80.0*Math.sin(3.1415926/180.0*redSeta));
redPen.setColor(Color.gray);
redPen.fillOval(100+x,100+y,10,10);
redSeta+=3;
if(redSeta>=360)redSeta=0;
x=(int)(80.0*Math.cos(3.1415926/180.0*redSeta));
y=(int)(80.0*Math.sin(3.1415926/180.0*redSeta));
redPen.setColor(Color.red);
redPen.fillOval(100+x,100+y,10,10);
try {redBall.sleep(20);}
catch(InterruptedException e){}
}
else if(Thread.currentThread()==blueBall)
{//以下代码为顺时针画圆
x=(int)(80.0*Math.cos(3.1415926/180.0*blueSeta));
y=(int)(80.0*Math.sin(3.1415926/180.0*blueSeta));
bluePen.setColor(Color.gray);
bluePen.fillOval(150+x,100+y,10,10);
blueSeta-=3;
if(blueSeta<=-360) blueSeta=0;
x=(int)(80.0*Math.cos(3.1415926/180.0*blueSeta));
y=(int)(80.0*Math.sin(3.1415926/180.0*blueSeta));
bluePen.setColor(Color.blue);
bluePen.fillOval(150+x,100+y,10;10);
try {blueBall.sleepp(40);}
catch(InterruptedException e){}
}
}
}
}
该程序的功能是:小应程序创建两个线程,在不同位置以不同速度一个顺时针画圆,一个逆时针画圆。
六、程序设计题1. 请编写方法int countChar(String s),该方法的功能是统计已知字符串s中字母的个数。例如:countChar("A1Bd56D")的返回值为4。
int countChar(String s)
{
byte b[]=s.getBytes();
int n=0;
for(int i=0;i<b.length;i++)
if(b[i]>='a'&&b[i]<='z'||b[i]>='A'&&b[i]<='Z')
n++;
return n;
}
2. 一个小应用程序,界面如图所示,有一个标签、一个文本框、一个文本区和两个按钮。当在一个文本区输入若干数后,点击求和按钮,在文本框显示输入数的和,标签显示“输入数的和”;点击求平均值按钮,在文本框显示输入数的平均值,标签显示“输入数的平均值”。以下是程序的大部分,请编写其中的监视器方法。

import java. awt.*;
import java. awt. event.*;
import javax. swing. *;
import java. applet. *;
import java. util.*;
public class Ex0509 extends Applent implements Actionlistener
JTextArea textA=new JTextArea(5,25 );
JButton button1=new JButton("求和" );
JButton button2=new JButton("求平均值");
JLabel label=new JLabel("结果:",JLahel. RIGHT);
JTextField text=new JTextField(15);
public void init()
{
setSize(400,200);
setBackground(Color. blue);
JPanel panButt=new JPanel(new GridLayout(1,2));
panButt. add(button1);
panButt. add(button2);
button1. addActionListener(this);
button2. addActionListener(this);
JPanel panResult=new JPanel(new GridLayout(1,2));
panResult. add(label);
panResult. add(text);
add(textA);
add(panButt);
add(panResult);
}
public void actionPerformed (ActionEvent e)
{
//这里是你编写的代码
}
}
try
{
String s=textA. getText();
StringTokenizer tokens=new StringTokenizer
(s);
int n=tokens. countTokens();
int sum=0;
for(int i=0;i<n;i++)
{
String str=Lokens. nextToken();
sum+=Integer. parseInt(str);
}
if(e. getSource()==button1)
{
label. setText("输入数的和");
text. setText(" "+sum);
}
else if(e.getSource()==button2)
{
label. setTexr("输入数的平均值");
text. setText(" "+(double)sum/n);
}
}
catch(NumberFormatException e2)
{
text. setText("请输入数字!");
}