选择填空题目笔计
protected和default区别在于能否被不同包内的子类继承
被final修饰的类是最终类,不能有子类
abstract和final不能同时使用
volatile 叫易失变量,在运行过程中可能存在其他未知的程序操作来影响和改变该变量的值
native 的方法都没有方法体,而是使用";"代替
synchronized用于多线程的协调和同步
Java的语言属于解释型语言
使用___ BorderLayout ___布局管理器是,当Frame的大小被改变时Frame中的按钮的位置可能会改变
JButton可以实现一个按钮
基本数据类型的表示范围
类型 存储 表示范围 默认值
byte 1字节 -128127(-2^72^7-1) (byte)0
short 2字节 -215~215-1 (short)-1
int 4字节 -231~231-1 0
long 8字节 -263~263-1 0L
float 4字节
double 8字节
char 2字节
关键字___ synchronized___可以对对象加互斥锁
print方法使用的关键字是Graphics
JPanel组件的默认布局管理器是__ FlowLayout____。
下面注释方法___/**…*/___能够支持javadoc命令。
在Java中,要处理Button类对象的事件,以下各项中,___ ActionListener___是可以处理这个事件的接口。
四、计算题 (题数:2,共 3 )
1
通过自己定义一个“点”(Point)类用来表示三维空间中的点(有三个坐标)。完成下面的设计要求:(10分)
(1)可以生成具有特定坐标的点对象。
(2)提供可以设置三个坐标值的方法。
(3)在这个类中提供可以计算该“点”原点距离平方和的方法。
(4)在这个类中提供可以计算该“点”距空间任意一点距离平方和的方法。
(10.0分)
正确答案
class Point{
double x,y,z;
Point(double _x,double _y,double _z){//构造方法(2分)
x=_x; y=_y; z=_z;
}
void setX(double _x){//设置方法(2分)
x=_x;
}
double getDistance(Point p){//计算方法(2分)
return (x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z);
}
}
public class TestPoint{//测试方法(2分)
public static void main(String[] args) {
Point p=new Point(1.0,2.0,3.0);//对象说明(2分)
Point p1=new Point(0.0,0.0,0.0);
System.out.println(p.getDistance(p1));
p.setX(5.0);
System.out.println(p.getDistance(new Point(1.0,1.0,1.0)));
}
}
2
在一个窗体对象(Frame)(800600)中添加一个Panel对象(400300)。使用线程控制其从上到下以动画方式进入窗体中。
提示:重点考虑程序的结构控制,对于其中的代码尽可能实现。(20分)
(1)考虑线程的使用;
(2)考虑控制结构的正确使用;
(3)考虑包的引入方式;
(4)考虑异常处理方式;
(20.0分)
正确答案
import java.awt.*;//引入包(2分)
import java.awt.event.*;
public class Test {
static int px,py;
public static void main(String args[]) {
MyFrame fr=new MyFrame(100,100,600,600,Color.green);
MyPanel p=new MyPanel();
p.setBounds(100,50,400,400);
p.setBackground(Color.red);
fr.setBackground(new Color(255,255,255));
fr.addWindowListener( new WindowAdapter(){//事件处理(4分[匿名类])
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
fr.add(p);//添加对象(2分)
fr.setVisible(true);//对象可见(2分)
for(py=0;py<400;py+=20){< p="""""""">
p.setBounds(100,py,400,400);
p.run();//方法调用,
}
}
}
class MyFrame extends Frame{
static int id=0;
MyFrame(int x,int y,int w,int h,Color color){
super("MyFrame");
setBackground(color);
setLayout(null);
setBounds(x,y,w,h);
}
}
class MyPanel extends Panel implements Runnable{
public void run(){
try{
Thread.sleep(100);
}catch(InterruptedException e){
return;
}
}
}
1
import javax.awt.*;
mport javax.awt.event.*;
public class Test{
public static void main(String[]args){
new MyFrame();
}
}
class MyFrame extends JFrame{
JButton b= new JButton("Click me!");
public MyFrame(){
setLayout(new FlowLayout());
add(b);
b.addActionListener(new MyMonitor()) ;
setBounds(200,300,200,300);
setVisible(true);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
class MyMonitor implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (b.getText().equals("Click me!") )
b.setText("Click me again!");
else
b.setText(" Click me!");
}
}
}
(2.0分)
(1) [简答题] (2分)
指出程序中的错误(不需要修改)
正确答案:
导入包错误,应当使用javax.swing或修改为Frame。
2
import java.io.*;
public class Test{
public static void main(String[]args){
int i=0;
String Str[]={"1","2","3"};
while(i<=3){
System.out.println(Str[i]);
i++;
}
}
}
(2.0分)
(1) [简答题] (2分)
指出程序中的错误(不需要修改)
正确答案:
数组越界
3
public class Test{
public static void main(String[]args){
int j=3;
while(j==3){
System.out.println("j is"+j);
}
}
}
(2.0分)
(1) [简答题] (2分)
指出程序中的错误(不需要修改)
正确答案:
死循环
4
public class Test{
public static void main(String[]args){
Dog d=new Dog();
System.out.println(d.name);
}
}
class Dog{
private int name;
Dog(){
name="Tom";
}
}
(2.0分)
(1) [简答题] (2分)
指出程序中错误(不需要修改)
正确答案:
不能访问private数据
5
import java.awt.*;
import java.awt.event.*;
public class Test{
public static void main(string[]args){
Frame f=new Frame("Test");
Button b=new Button("Press Me!");
Monitor bh=new Monitor();
b.addActionListener(bh);
f.add(b,BorderLayout.CENTER);
f.setVisible(true);
}
}
class Monitor implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("a button has been pressed");
}
}
(2.0分)
(1) [简答题] (2分)
指出程序中的错误
正确答案:
缺少pack()方法,对象均看不到