第Ⅰ部分 选择题 一、单项选择题 (在每小题列出的四个备选项中只有一个是符合题目要求的。) 第Ⅱ部分 非选择题 二、填空题 1. 用JDK编译Java源程序,使用的命令是______,编译源文件得到字节码文件。
javac
[考点] Java编译源程序 [解析] javac是编译器,用来编译源程序;Java是解释器,用来执行Java类文件。
2. 对于long型变量,内存分配______个字节。
8
[考点] 数据类型 [解析] 对于long类型,内存分配8个字节。
3. Java中有两种类型的控制语句,即if和______。
switch
[考点] 控制语句 [解析] Java有两种控制语句:if和switch。
4. ______是指,一个类中可以有多个方法具有相同的名字和类型,但这些方法的参数必须不同。
方法重载
[考点] 重载 [解析] 重载是指同一个类中的方法名相同,但是参数不同。
5. Java中声明数组包括数组的名字、数组包含的元素的______。
数据类型
[考点] 数组声明 [解析] Java中声明数组包括数组的名字、数组包含的元素的数据类型。
6. 在Java Applet程序中,当浏览器结束浏览时,执行______方法,结束applet的生命。
destroy( )
[考点] Java Applet声明周期 [解析] 当关闭浏览器时,系统调用destroy( )方法,结束小应用程序的生命,关闭线程,释放对象资源。
7. 设定文本框对象text不可编辑,对应的代码是______。
text.setEditable(false)
[考点] 文本框 [解析] 通过setEditable(false)方法可将文本框设置为不可编辑状态。
8. Java中事件源发生事件时,______就自动调用执行被类实现的某个接口方法。
监视器
[考点] 监视器 [解析] Java中事件源发生事件时,监视器就自动调用执行被类实现的某个接口方法。
9. 处于新建状态的线程被启动后,将进入线程队列排队等待CPU服务,此时它已经具备了运行条件,一旦轮到享用CPU资源时,就可以脱离创建它的主线程,独立开始自己的生命周期。上述线程是处于______状态。
就绪
[考点] 线程状态 [解析] 就绪是指已经具备了运行条件,等待享用CPU资源。
10. Java的网络API所提供的基本网络类,它们都包含在______包中。
Java.net
[考点] 网络编程 [解析] 支持网络通信的类都在Java.net中。
三、简答题 (每小题3分,共18分) 1. Java中常用的运算符按功能分类有哪些?
Java运算符按功能分为6种,具体如下:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符。
2. 简述如何会发生成员变量的隐藏和方法重写。
当子类中定义的成员变量和父类中的成员变量同名时,则父类中的成员变量不能被继承,此时称子类的成员变量隐藏了父类的成员变量。 当子类中定义了一个方法,并且这个方法的名字、返回类型及参数个数和类型跟父类的某个方法完全相同时,父类方法被隐藏,即重写了父类的方法。
3. 请写出一条Java语句,要求建立一个文件对象file,其对应的磁盘文件是“d:abc.txt”。
File file=new File("d:\abc.txt");
4. 在Graphics类中,Java提供了哪几种文字输出方法?
(1)字符串输出方法:drawString(String string,int x,int y)。 (2)字符输出方法:drawChars(char chars[ ],int offset,int number,int x,int y)。 (3)字节输出方法:drawBytes(byte bytes[ ],int offset,int number,int x,int y)。
5. Java中的线程和多线程指的是什么?
(1)称程序中单个序列化的流控制为线程。 (2)多线程指的是在一个程序中可定义多个线程并同时运行它们,每个线程可以执行不同的任务。
6. 编写访问数据库的Java程序需要几个重要的类和接口?请任意写出其中的3个。
(1)DriverManager类; (2)Connection类; (3)Statement类。
四、程序填空题 1. 求出所有满足下列条件的两位数,然后交换此两位数的个位数字和十位数字,可得到一个新的数,要求新数与原数之和小于100。
int i,j,m,n,
for(i=10;i<100;i++)
{
m=i% 10;
n=i/10;
j=______;
if(______)
System.out.print(i+"");}
10*m+n i+j<100
[考点] 循环和运算符 [解析] 程序首先通过%取余获得个位数,然后通过/取商获得十位数,重新组合成一个两位数,最后判断这两个两位数的和是否小于100。
2. 以下程序产生一个依赖窗口myWin,标题为“心灵之窗”,布局管理器为Flowlayout的强制型对话框。
import java.awt.*;
import javax.swing.*;
public class Class28
{
public static void main(String[ ] args)
{
JFrame myWin=new JFrame( );
______
______
JButton button=new JButton("按钮");
myDialog. add(button);
myDialog.setBounds(300,300,200,200);
myDialog.setVisible(true);
}
}
JDialog myDialog=new JDialog(myWin,"心灵之窗",true) myDialog.setLayout(new FlowLayout( ))
[考点] 对话框 [解析] 根据题目要求,就是要创建一个对话框,采用的布局为FlowLayout( )。所以第一空就是调用对话框的构造方法new JDialog(JFram f,String s,boolean b),构造一个标题为s,初始不可见的对话框。参数f设置对话框所依赖的窗口,参数b决定对话框是强制型或非强制型。布局的设置采用setLayout( )方法设定。
3. 以下是生成单选按钮对象以及单选按钮选择事件处理方法的代码。要求当选中"sport"单选按钮时,在标签label中显示“你喜欢的运动介绍:”的字样。
...
sports=new ______("运动");//生成单选按钮对象
sports.addItemListener(this);
...
public void ______(ItemEvent e)
{
if(e.getItemSelectable( )==sports)
{
label.setText("你喜欢的:"+sports.getLabel( )+"介绍:");
}
}
new JRadioButton itemStateChanged
[考点] 单选按钮和事件 [解析] 操作单选按钮首先需要声明一个按钮对象new JRadioButton,然后编写处理选择项目事件的接口方法itemStateChanged(ItemEvent e)。
4. 以下程序产生一个确认对话框。
import javax.swing.*;
public class Class30
{
public static void main(String[ ] args)
{
JFrame win=new JFrame( );
win.setBounds(100,100,200,300);
win.setVisible(true);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
int resule=______.______(win,"真的要退出吗?","是否退出",0);
System.out.println(resule);
}
}
IOptionPane showConfirmDialog
[考点] JOptionPane类 [解析] JOptionPane类提供了一组静态方法,让用户选择用哪种类型的对话框,主要有四种对话框:确认框、输入框、信息框和选项框。本题考查的是确认框,用到的静态方法是showConfirmDialog( )。
5. 下面程序产生一个窗口,2秒后自动关闭。
public class Class31 implements Runnable
{
______
{
try
{
Thread.sleep(2000);
}
catch(InterruptedException e){}
System.exit(0);
}
public Class31( )
{
JFrame my=new JFrame( );
my.setBouds(200,200,600,300);
my.setVisible(true);
}
public static void main(String[ ] afgs)
{
Class31 t=new Class31( );
Thread tt=______;
tt. start( );
}
}
public void run( ) new Thread(t)
[考点] 线程 [解析] 题目采用实验Runnahle接口的方式创建多线程,这需要实现类覆盖Runnable接口中的public void run( )方法。创建线程的时候需要把Runnable实现类对象作为参数进行创建线程。
五、程序分析题 (每小题4分,共20分) 1. 下面两个程序是否有错?如果有错,试标出错误位置并指出是何种错误。
程序1:
class ArraySum{
int a[3]={2,4,8};
int sum( ){
int s=0;
for (int i=0;i<3;i++)
s=s+a[i];
return s;
}
}
程序2:
class c{
static int x=20;
int y=30;
static int plus( ){
return x+y;
}
public static void main(String [ ] args) {
int result=plus( );
System.out.println("result="+result);
}
}
程序1:int[3]={2,4,8};因为数组在声明的时候不能指定大小,所以改成int[ ] a={2,4,8}。 程序2:int y=30;因为后面的plus( )方法是静态的,其中有对y的调用,所以y必须是静态的,所以这里改为static int y=30。
[考点] 数组以及静态方法 [解析] 数组声明的时候不能指定其大小。静态方法只能引用静态成员变量。
2. 下面程序的输出结果是:______。
class Art {
Art( ){
System.out.println("Art constructor");
}
}
class Drawing extends Art{
Drawing( ) {
super( );
System.out.println("Drawing constructor");
}
}
public class Cartoon extends Drawing {
Cartoon( ){
super( );
System.out.println("Cartoon constructor");
}
public static void main(String[ ] args) {
Cartoon x=new Cartoon( );
}
}
Art constructor Drawing constructor Cartoon constructor
[考点] 类的继承 [解析] 程序定义了三个类,Cartoon继承于Drawing,Drawing又继承于Art。创建子类的时候在子类的构造方法中都会先通过super( )调用父类的构造方法,所以程序输出如上结果。
3. 阅读下列程序,写出程序的功能。
public class C34 extends Applet
{
static JFrame myWin;
static SetBG setbg=new SetBG( );
static JButton button;
public void init( )
{
myWin=new JFrame("C34");
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myWin.setBounds(200,300,300,400);
myWin.setLayout(new FlowLayout( ));
Container con=myWin.getContentPane( );
con.setBackground(Color.blue);
button=new JButton("OK");
button.addActionListener(setbg);
myWin.add (button);
myWin.setVisible(true);
}
}
class SetBG implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Container con=C34.myWin.getContentPane( );
if(con.getBackground( )==Color.blue)
con.setBackground (Color.green);
else
con.setBackgroud (Color.blue);
}
}
程序的功能:小应用程序启动后,在窗口中有一个按钮,反复点击按钮,可使窗口背景颜色蓝绿交替变化。
[考点] 窗口 [解析] 程序创建一个窗口对象,设置布局为FlowLayout和背景颜色为蓝色。之后添加按钮,给按钮添加了监听事件,在事件处理方法中,判断背景颜色是否是蓝色,是蓝色的话将其设为绿色,不是的话设为蓝色。
4. 阅读下列程序,写出程序功能。
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Class35 extends Applet implements MouseListener
{
int r=-10, mouseFlag=0;
static String mouseState[ ]={"111", "222","333","444"};
public void print(int x,int y)
{
Graphics g=getGraphics( );
r+=10;
g.drawString(mouseState[mouseFlag]+",x="+x+",y="+y+"\n",10,r);
}
public void mousePressed(MouseEvent e)
{ mouseFlag=0;print(e.getX( ),e.getY( )); }
public void mouseReleased(MouseEvent e)
{mouseFlag=1; print(e.getX( ),e.getY( ));}
public void mouseEntered(MouseEvent e)
{mouseFlag=2; print(e.getX( ),e.getY( ));}
public void mouseExited(MouseEvent e)
{mouseFlag =3;print(e.getX( ),e.getY( ));}
public void mouseClicked(MouseEvent e){ }
public void init( )
{
setBackground (Color.Green);
addMouseListener (this);
}
}
程序功能:小应用程序背景为绿色,用于记录鼠标事件及鼠标当前坐标。当鼠标进入小应用程序窗口时,在指定的位置输出“333”及鼠标当前坐标;当鼠标离开小应用程序窗口时,在指定的位置输出“444”;当鼠标在小应用程序窗口中按下时,在指定的位置输出“111”及鼠标当前坐标;当鼠标在小应用程序窗口按下后松开时,在指定的位置输出“222”及鼠标当前坐标。
[考点] 鼠标事件 [解析] MouseListener接口能处理五类鼠标事件: mousePressed,负责处理鼠标按下事件; mouseReleased,负责处理鼠标释放事件; mouseEntered,负责处理鼠标进入容器事件; mouseClicked,负责处理鼠标离开容器事件。 程序在这几个事件中分别设置mouseFlag的值并获取鼠标的位置来显示定义的数组值。
5. 阅读下列程序,写出程序功能。
import java.io.*;
public class Example9_4{
public static void main(String arg[ ]){
RandomAccessFile inOut=null;
int data[ ]={151,22,13,206,-12,32,43,21,83,47};
try {
inOut=new RandomAccessFile("intData.dat","rw");
for(int i=0;i<data.length;i++){
inOut.writeInt(data[i]);
}
for(int i=data.length-1;i>=0;i--){
inOut.seek(i*4);//int型数据占4个字节,第i个整数自i*4字节开始
System.out.print(""+inOut.readlnt( )+((i==0)?" JAVA语言程序设计文前n":","));
}
inOut.close( );
}
catch(FileNotFoundException e1){
System.out.println("文件找不到!"+e1);
}
catch(IOException e2){System.out.println("文件读写错误!"+e2);}
}
}
程序把若干整型整数写到一个名字为intData.dat的文件中,然后按相反顺序读出这些写入的整数。
[考点] 随机读写 [解析] RandomAccessFile类创建的流既可以随机输出,也可以随机输入。writeInt(data[i])是将数组中的每个整数写入到文件中,inOut.readInt( )用于从文件中读出每个整数,直到读完第一个结束。
六、程序设计题 (每小题6分,共12分) 1. 编写一个方法funt( ),要求该方法有一个元素类型为整型的数组参数,方法的功能是把参数数组中元素值相同的元素删成只剩一个,经过删除后会得到一个新数组,方法返回这个新数组。
public int[ ] funt(int[ ]a){ int[ ]b=new int[a.length]; int i,j,k=0; b[k]=a[0]; for(i=1;i<a.length;i++){ for(j=0;j<=k;j++){ if(a[i]==b[j])break; } if(j>k){ k++; b[k]=a[i]; } } int[ ]c=new int[k+1]; for(i=0;i<=k;i++){ c[i]=b[i]; } return c; }
[考点] 循环和数组 [解析] 数组a是待检查的原数组,数组b中用来存放新数组的临时结果,数组e是最终的新数组。程序首先默认a中的第一个数是没有重复的,把它放入b中,然后从a中第2个数开始,依次判断有没有和数组b相等的,有相等的则说明重复了;继续判断a中的下一个数,没有和b中相等的,则说明是一个新出现的数,可以放入b中。整个循环结束之后,就把所有结果都放入b中,最后把b赋给目标结果c,将c返回,程序结束。
2. 创建一个有文本框和三个按钮的程序。当按下某个按钮时,使不同的文字("Java","编程","一切皆有可能")显示在文本框中。已经给出部分代码,请完成事件处理部分。
import javax.swing.*;
import java.awt.event.*;
class MiYa1 extends JPanel
{
JButton button[ ]=new JButton[3];
JTextField text;
MiYa1( )
{
for(int i=0;i<3;i++)
{
button[i]=new JButton("button0"+(i+1));
add(button[i]);
}
text=new JTextField(10);
text.setHorizontalAlignment(JTextField.CENTER);
add(text);
}
}
public class C38 implements ActionListener
{
JFrame myWin;
MiYa1 panel;
C38( )
{
panel=new MiYa1( );
myWin=new JFrame("C38");
myWin.add(panel);
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for(inti=0;i<3;i++)
panel.button[i].addActionListener(this);
myWin.pack( );
myWin.setVisible(true);
}
public static void main(String[ ] args)
{
new C38( );
}
public void actionPerformed(ActionEvent e)
{
//这里是你要编写的代码
}
}
if(e.getActionCommand( ).equals("button01")) panel.text.setText("Java"); else if(e.getActionCommand( ).equals("button02")) panel.text.setText("编程"); else if(e.getActionCommand( ).equals("button03")) panel.text.setText("一切皆有可能");
[考点] 文本框与按钮 [解析] e.getActionCommand( )能够获取action事件参数e的命令字符串。据此,方法actionPerfonned( )就能知道是哪一个按钮激发的事件,然后给文本框设置相应的值。