第Ⅰ部分 选择题
一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的) 第Ⅱ部分 非选择题
二、填空题1. Java编译程序对Test11.java源程序编译,如果没有发生错误,一定会产生一个文件,该文件的名字是______。
2. 表达式“-1>>2”的值是______。(负数用补码表示)
3. 为了声明类只是一种模板,类中定义的某些方法没有具体实现代码,只有它的子类才可能是有实际意义的类。定义这样的类的修饰符是______。
4. 设有字符串定义:String s="12341234";
则表达式s.indexOf("2")的值是______。
5. 在实现接口ActionListener的方法actionPerformed()中,为识别事件对象,调用方法getActionCommand(),该方法返回______的文字信息。
6. 程序将若干单选按钮对象加入到一个ButtonGroup对象中,其目的是______。
8. 处于运行状态的线程执行stop()方法,该线程将进入的状态是______。
9. FileWriter类的作用是为______提供支持。
10. 在访问数据库的程序中,建立了Statement对象后,利用该对象可以执行数据库更新,实现SQL数据库更新的方法是______。
三、简答题(每小题3分,共18分)1. 请写出表达式实现以下功能:变量y的值为5与变量z的值为3,有且只有一个成立。
y==5!=z==3
或y==5&&z!=3||y!=5&&z==3
2. 请写出通过继承,子类可以获得的好处。
子类可以拥有父类的所有属性和方法,也可以扩展原有代码,生成新的类,原有代码可以不必重写。
3. 请写出将按钮对象b和文本区对象text放置于面板对象tp,并将tp放置于滚动面板,最后将滚动面板添加到JFrame子窗口对象frame的Java语句。
tp.add(b);tp.add(text);frame.getContentPane().add(new JScrollPane(tp));
4. 请写出Graphics2D类中stroke、paint两种属性的作用。
stroke属性控制线条的宽度、笔形样式、线段连接方式或短划线图案。
paint属性控制填充效果。
5. 请写出Java系统提供的支持文件随机访问的类和该类提供的读取一个字符的方法。
RandomAccessFile
char readChar()
6. 请写出URLConnection类实现网络访问的基本过程。
先要创建一个URL对象,然后利用URL对象的openConnection()方法,从系统获得一个URLConnection对象。程序有了URLConnection对象后,就可使用URLConnection类提供的方法获得流对象和实现网络连接。
四、程序填空题(本题共20分)1. 方法countPrimes(int m,int n)统计自m至n范围内质数的个数,并输出这些质数。
public static int countPrimes(int m,int n){
int i,j,count=0;
for(j=m;j<=n;j++){
for(i=2;i<=j/2;1++)
if(______) break;
if(______){
count++; System.out.println(j);
}
}
return count;
}
2. 以下是某应用程序定义的两个方法。方法setCheckBoxs(ItemListener listener)已知监视器,产生一组选择按钮,并给它们注册监视器和将它们加入到面板中;方法使用的全局对象有面板panel,存放按钮名称的数组boxName,选择按钮数组box,文本区text。方法itemStateChanged(ItemEvent e)是选择按钮的事件监视方法,当某个选择按钮的选择状态有改变时,监视方法在文本区中显示各选择按钮的选择状态(被选中或没有被选中)。
JPanel panel=new JPanel();
String boxName[]={"选择按钮A","选择按钮B","选择按钮C"};
JCheckBox[]box=new JCheckBox[boxName.length];
JTextArea text=new JTextArea(4,10);
public void setCheckBoxs(ItemListener listener){
for(int i=0;i<boxName.length;i++){
box[i]=new JCheckBox(boxName[i],false);
box[i].______;
panel.add(box[i]);
}
}
public void itemStateChanged(ItemEvent e){
text.setText(null);
for(int i=0;j<box.length;i++){
text.append(boxName[i]+(______?
"被选中":"没有被选中")+"\n");
}
}
}
addItemListener(this)
box[i].isSelected()
3. 以下是一个放幻灯片的应用程序,程序的界面中含一个面板子类P的对象和一个按钮对象b。设幻灯片已经装入内存,并存放于myImage数组中,幻灯片的张数存于变量num中。程序运行时,用户点击按钮b,按钮的监视方法循环更换幻灯片号curImage,并让系统调用P重定义的paintComponent()方法显示当前幻灯片。
int curImage=0; final int num=30;
Image[]myImage=new Image[num];
//以下是类P内定义的两个方法
public void actionPerformed(ActionEvent e){
if(e.getSource()==b){
______;
curImage=(curImage+1)%num;
try{mythread.sleep(200);
} catch(InterruptedException e){}
}
}
public void paintComponent(Graphics g){
if((myImage[curImage])!=null)
g.______(myImage[curImage],10,10,
myImage[curImage].getWidth(),
myImage[curImage].getHeight(),this);
}
4. 以下应用程序的界面中有一个用于输入文件名的文本框对象fileName、一个用于输入匹配字符串的文本框对象p,和一个用于输出的文本区对象text。程序运行时,用户输入匹配字符串和文件名,程序逐行读入文件的内容,检出那些以匹配字符串开头的行并显示在文本区中。
public void actionPerformed(ActionEvent e){
String s;
if(e.getSource()==fileName){
try{ in=new BufferedReader(new______);
} catch(FileNotFoundException e1){
System.out.print("File Not found!\n");
}
text.setText(null);
try{
while((s=______)!=null){
if(s.startsWith(p.getText())) text.append(s+'\n');
}
}catch(IOException exp){ System.out.print("File read error! \n");
}
}
}
FileReader(fileName.getText())
in.readLine()
5. 方法getURLConnection(String s)的功能是已知网络中的资源s,获得一个URLConnection对象并返回。
URLConnection getURLConnection(String s){
URL myURL=null;
try {myURL=new______;
} catch(MalformedURLException e){
System.out.println("有错的URL:"+s+e);
}
return myURL.______;
}
五、程序分析题(每小题4分,共20分)1. 阅读下列程序段,请写出标有注解(1)、(2)和(3)语句的作用。
Image img[];
public void int(){
img= new Image[15];
for(int i=0;i<15;i++){
img[i]:getImage(getCodeBase(),"img"+i+".jpg"); //(1)
}
}
public void paint(Graphics g){
int i=0,k=0;
while(k<15000){......;//语句略
g.drawImage(img[i],0,0,this); //(2)
k++;
for(int j=0;j<5000000;j++){} //
i=(i+1)% img.length;
}
}
(1)载入图片序列。
(2)显示一张图片。
(3)增加图片显示之间的时间间隔。
2. 阅读下列程序,请写出调用fib(10)的输出结果。
public static void fib(int n){
int f1=1, f2=1;
System.out.print("\t"+f1+"\t"+f2);
for(int i=3;1<=n;i+=2){
f1+=f2;
System.out.print("\t"+f1);
if(i%3==0) System.out.print("\n");
if(i<n){
f2=f1;
System.out.print("\t"+f2);
}
if((i+1)%3==0)System.out.print("\n");
}
}
阅读下列程序,请回答以下问题:
import java.io.*; import java.awt.*;
import java.awt.event.*;import javax.swing.*;
class MyFrame extends JFrame implements ActionListener{
JButton btn1 ,btn2; JTextArea ja;
public MyFrame(){
btn1=new JButton("按钮1"); btn2=new JButton("按钮2");
ja=new JTextArea(5,10);
getContentPane().add(btn1, BorderLayout. NORTH);
getContentPane().add(btn2, BorderLayout. SOUTH);
getContentPane().add(ja, BorderLayout. CENTER);
btn1.addActionListener(this); btn2.addActionListener(this);
setSize(180,200); setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==btn1){
btn1.setEnabled(false);
ja.append("按钮1被点击!\n");
btn2.setEnabled(true);
} else{
btn1.setEnabled(true);
ja.append("按钮2被点击!\n");
btn2.setEnabled(false);
}
}
}
public class Test34{
public static void main(String[]args){
new MyFrame();
}
}3. 写出程序运行时界面中有哪些组件,以及它们的位置关系。
应用程序窗口中最上面是一个标题为“按钮1”的按钮,下方是一个5行10列的文本区,最下方是一个标题为“按钮2”的按钮。
4. 按点击按钮1、按钮2、按钮2、按钮1的顺序点击按钮,写出文本区的输出内容。
5. 阅读下列程序,请写出该程序的输出结果。
public class Test35{
public static void main(String[]args){
System.out.println("开始:");
MyThread x=new MyThread(1000,"girl");
MyThread y=new MyThread(300,"boy");
x.start();y.start();
while(x.isAlive()||y.isAlive());
System.out.println("结束.");
}
}
class MyThread extends Thread{
int dt;
String name;
public MyThread(int c,String n){
dt=c;name=n:
}
public void run(){
MyResourceClass.outMsg(this);
}
}
class MyResourceClass{
synchronized static void outMsg(MyThread th){
System.out.println(th. name+" "+"启动.");
for(int i=0;1<2;1++){
System.out.println(th. name+"第"+i+"次活动.");
try{
Thread.sleep(th.dt);
}catch(InterruptedException e){}
}
System.out.println(th.name+" "+"活动完成,");
}
}
开始:
girl 启动.
girl 第0次活动.
girl 第1次活动.
girl 活动完成.
boy 启动.
boy 第0次活动.
boy 第1次活动.
boy 活动完成,
结束.
6. 阅读下列程序,请写出该程序的功能。
import java.util.*;import java.io.*;
import java.awt.*; import javax.swing.*;import java.awt.event.*;
class MyFrame extends JFrame implements ActionListener{
JTextArea text; JTextField tf; BufferedWriter out;
MyFrame(){
super("一个测试程序");
Container con=getContentPane();
text=new JTextArea(10,20);
text.setBackground (Color.cyan);
tf=new JTextField ();
tf.addActionListener(this);
con.setLayout(new BorderLayout());
con.add (text, "Center"); con.add(tf, "South");
setVisible(true); pack();
{
public void actionPerformed(ActionEvent e) {
if(e.getSource()==tf){
try{
out=new BufferedWriter(new FileWriter(tf. getText()));
StringTokenizer tokens=new StringTokenizer(text.getText());
int n=tokens.countTokens(),i;
out.write(tokens.nextToken ()+"\r\n");
}
out.flush (); text.setText (null); System.exit(0);
}catch(IOException exp) {
text.setText("文件写出错! \n");
}
}
}
}
public class Test36 {
public static void main(String args[ ]){
new MyFrame();
}
}
从文本框中读取文件名,把文本区中输入的单词写到文件中,文件每行一个单词。
六、程序设计题(每小题6分,共12分)1. 请编写方法double sumSequence(int n),该方法的功能是求以下数列前n项的和s并返回:
s=1/2+2/3+3/5+5/8+8/13+……
提示:下一项的分子=上一项的分母,下一项的分母=上一项的分子与分母的和。
double sumSequence(int n){
}
int i;
double sum=0.0,numerator=1.0,denominator=2.0,t;
for(i=0,m=1;i<n;i++){
sum+=numerator/denominator;
t=numerator+denominator;
numerator=denom/nator;
denominator=t;
}
return sum;
2. 某应用程序的界面如下图所示,有3个文本框,第一个文本框对象为t1,第二个文本框对象为t2,第三个文本框对象为r。程序对前两个文本框作事件监视。程序运行时,当前两个文本框有整数输入时,在第三个文本框输出它们的和。要求编写实现上述功能的方法actionPerformed(ActionEvent e)。

public void actionPerformed(ActionEvent e){
//请在以下位置编写代码
}
if(e.getSource()==t1||e.getSource()==t2){
int add1,add2,answer;
add1=Integer.parselnt(t1.getText());
add2=Integer.parselnt(t2.getText());
answer=add1+add2;
r.setText(answer);
}