一、单项选择题
1. 在下列的字符串中,不能作为java整数常量的是:B
A. 052 B. 0x3BEH C. 6389 D. 0x3fedL
2. 在以下关键字中,能用于定义常值变量的是:final
3. 下列java语句中,不正确的是:A
A. float e=0.0d; B. char c,d=’a’; C. int $ e,a,b=10; D. double e=0.0f;
4. 以下代码的输出结果是
System.out.println(1+2+”aa”+3);
3aa3
5. 在Swing中,与JComponent类有直接父子关系的是:JLabel
6. 在以下选项中,可得到菜单项名称的方法是:getLabel()
7. 某程序定义了一个JPanel子类,并要让该子类实现多线程,在子类对象创建时启动线程,则在以下叙述中最完整正确的是:
声明实现Runnable接口,在类内实现run()方法,声明和创建线程对象,并让该对象调用start()方法。
8. 以下关于线程死循环的叙述中,正确的是:
线程的死锁是一种逻辑运行错误,编译器无法检测。
9. 用类JFielChooser对象可打开和保存文件对话框,程序能从该对话框获得:文件对象
10. 网络应用有多种模式,其中WWW采用的模式是:客户机/服务器模式
二、填空题
11. java编译程序对Test11.java源程序编译,如果没有发生错误,一定会产生一个文件,该文件的名字是 Test11.class
12. 表达式”-1>>2”的值是 -1 。(负数用补码表示)
13. 为了声明类只是一种模板,类中定义的某些方法没有具体实现代码,只有它的子类才可能是有实际意义的类。定义这样的类的修饰符是 abstract 。
14. 设有字符串定义:String s=”12341234”; 则表达式s.indexOf(“2”)的值是 1 。
15. 在实现接口ActionListener的方法actionPerformed()中,为识别事件对象,调用方法getActionCommand(),该方法返回 获得事件源按钮 的文字信息。
16. 程序将若干单选按钮对象加入到一个ButtonGroup对象中,其目的是 构成单选按钮组 。
17. AWT的Font对象的作用是 用类Font对象设置字型 。
18. 处于运行状态的线程执行stop()方法,该线程将进入的状态是 死亡状态 。
19. FileWriter类的作用是为 字符流文件写操作 提供支持。
20. 在访问数据库的程序中,建立了Statement对象后,利用该对象可以执行数据库更新,实现SQL数据库更新的方法是 executeUpdate() 。
三、简答题
21. 请写出表达式实现以下功能:变量y的值为5与变量z的值为3,在且只有一个成立。
y==5!=z==3
22. 请写出通过继承,子类可以获得的好处。
子类可以拥有父类的所有属性和方法,也可以扩展原有代码,生产新的类。原有代码可以不必重写。
23. 请写出将按钮对象b和文本区对象text放置于面板对象tp,并将tp放置于滚动面板。最后将滚动面板添加到JFrame字窗口对象frame的java语句。
tp.add(b); tp.add(text);
frame.getContentPane().add(new JScrollPane(tp));
24. 请写出Graphics2D类中stroke、paint两种属性的作用。
stroke属性控制线条的宽度、笔形样式、线段连接方式或短划线图案。
paint属性控制填充效果。
25. 请写出java系统提供的支持文件随机访问的类和该类提供的读取一个字符的方法。
RandomAccessFile
char readChar()
26. 请写出URLConnection类实现网络访问的基本过程。
先要建立一个URL对象,然后利用URL对象的openConnection()方法,从系统获得一个URLConnection对象。程序有了URLConnection对象后,就可以使用URLConnection类提供的方法获得流对象和实现网络连接。
四、程序填空题
27. 方法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;i++)
if(j%i==0) break;
if(i>j/2){
count++; System.out.println(j);
}
}
return count;
}
28. 以下某应用程序定义两个方法。方法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].addItemListener(this)
panel.add(box[i]);
}
}
public void itemStateChanged(ItemEvent e){
text.setText(null);
for(int i=0;i<box.length;i++){
text.append(boxName[i]+(box[i].isSelected() ?
“被选中” : “没有被选中”)+”\n”)
}
}
}
29. 以下是一个放幻灯片的应用程序,程序的界面中含一个面板子类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){
repaint();
curImage=(curImage+1)%num;
try{mythread.sleep(200);
}catch(InteruptedException e){}
}
}
public void paintComponent(Graphics g){
if(myImage[curImage])!=null
g.drawImage(myImage[curImage],10,10,
myImage[curImage].getWidth(),
myImage[curImage].getHeight(), this);
}
30. 以下应用程序的界面中有一个用于输入文件名的文本框对象fileName。一个用于输入匹配字符串的文本框对象p。和一个用于输出的文本区对象text。程序运行时,用户输入匹配字符串和文件名,程序逐行读入文件的内容,检出哪些以匹配字符串开头的行并显示在文本区中。
public void actionPerformed(ActionEvent e){
String s;
if(e.getSource()==fileName){
try{ in=new BufferedReader(new FileReader(filename.getText()));
}catch(FileNotFoundException e1){
System.out.print(“File Not fount!\n”);
}
text.setText(null);
try{
while((s=in.readLine())!=null){
if(s.startsWith(p.getText())) text.append(s+”\n”);
}
}catch(IOException exp){System.out.print(“File read error!\n”);
}
}
}
31. 方法getURLConnection(String s)的功能是已知网络中的资源s,获得一个URLConnection对象并返回。
URLConnection getURLConnection(String s){
URL myURL=null;
try{myURL=new URL(s);
}catch(MalformedURLException e){
System.out.println(“有错的URL:”+s+e);
}
return myURL.openConnection();
}
五、程序分析题
32. 阅读下列程序段,请写出标有注解(1)、(2)和(3)语句的作用。
Iamge img[];
public void int(){
img=new Iamge[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++){} //(3)
i=(i+1)%img.length;
}
}
(1)载入图片序列
(2)显示一张图片
(3)增加图片显示之间的时间间隔。
33. 阅读下列程序,请写出调用fib(10)的输出结果。
public static void fib(int n){
int f1=1, f2=1;
System.out.print(“\t”+f1+”\t”+f2);
for(int i=3;i<=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”);
}
}
1 1 2
3 5 8
13 21 34
34. 阅读下列程序,请回答以下问题:
(1)写出程序运行时界面中有哪些组件,以及他们的位置关系。
应用程序窗口中最上面是一个标题为“按钮1”的按钮,下方是一个5行10列的文本区,最下方是一个标题为“按钮2”的按钮。
(2)按点击按钮1,按钮2,按钮2,按钮1的顺序点击按钮,写出文本区的输出内容。
按钮1被点击!
按钮2被点击!
按钮1被点击!
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();
}
}
35. 阅读下列程序,请写出该程序的输出结果。
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;
}
}
class MyResourceClaee{
synchronized static void outMsg(MyThread th){
System.out.println(th.name+” ”+”启动.”);
for(int i=0;i<2;i++){
System.out.println(th.name+” 第 ”+i+” 次活动.”);
try{
Thread.sleep(th.dt);
}catch(InteruptedException e){}
}
System.out.println(th.name+” ”+”活动完成”);
}
}
开始:
girl 启动.
girl 第 0 次活动.
girl 第 1 次活动.
girl 活动完成.
boy 启动.
boy 第 0 次活动.
boy 第 1 次活动.
boy 活动完成.
结束.
36. 阅读下列程序,请写出该程序的功能。
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;
for(i=0;i<n;i++){
out.write(tokens,nextToken()+”\r\n”);
}
out.flush(); text.setText(null); System.exit(0);
}catch(IOException exp){
text.setText(“文件写出错!\n”);
}
}
}
}
public class Test36{
pulic static void main(String[] args){
new MyFrame();
}
}
从文本框中读取文件名。把文本区中输入的单词写到文件中,文件每一行一个单词。
六、程序设计题
37. 请编写方法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=denominator;
denominator=t;
}
return sum;
}
38. 某应用程序的界面如下图所示,有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.parseInt(t1.getText());
add2=integer.parseInt(t2.getText());
answer=add1+add2;
r.setText(answer);
}
}