象类是否可实现(implements)接口 抽象类是否可继承实体类(concrete class) (4分)
接口可以继承接口,抽象类可以实现接口,也可以继承实体类
12、指出模态对话框和非模态对话框的区别,并构造一个模态对话框的实例(不需要在对话框中加载控件,假设父窗口为mainFrame)(5分)
非模态对话框关闭时调用dispose()方法,它将释放所有与对话框相关的系统资源, 模态对话框不是用构造器Dialog(Frame parentWindow, String title,Boolean mode)Dialog(parentWindow,” 模态对话框”,true)
13、指出abstract class和interface有什么区别 (6分)
声明方法的存在而不去实现它的类被叫做抽象类(abstract class)。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类必须实现父类中的所有的抽象方法,否则子类也必须是抽象类。
在接口中,所有方法都是抽象的。接口中的所有方法都是抽象的。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
14、下面两条语句有何区别,采用哪中更好?(5分)
Boolean flag = new Boolean(false);
Boolean flag = Boolean.FALSE;
答:第一句是通过创建一个新的Boolean 类型的实例并初始化值为false并赋给flag。
第二句则是通过类名直接访问已定义好的静态的Boolean 类型的常量FALSE并赋给flag。
采用第二句比较好,因为可以节约内存资源,提高效率。
15、构造器Constructor是否可被override 是否可被Overload Overload和Override的区别 (5分)
构造器Constructor是不可被override
区别:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被”屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
16、Vector和ArrayList的区别?(4分)
ArrayList 和Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
17、简述StringTokenizer的功能(3分)
string tokenizer 类允许应用程序将字符串分解为标记。tokenization 方法比 StreamTokenizer 类所使用的方法更简单。StringTokenizer 方法不区分标识符、数和带引号的字符串,它们也不识别并跳过注释. StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用 String 的 split 方法
18、线程操作中sleep() 和 wait() 有什么区别 (6分)
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)”醒来”的线程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
19、根据如下的界面编写相应实现代码(中间区域为文本输入区,底部为按钮) (8分)
Public class JCheckbocDemo{
Public static void main(String agrs[]){
Container con = new JFrame(“一个例子”);
Panel panel1= new Panel();
Panel panel2= new Panel();
TextArea text= new TextArea();
Button bt1 = new Button(“我的按钮”);
panel1.add(text);
panel2.add(bt1);
myframe.setSize(400,300);
con.setLayout(new BoxLlayout(con,BoxLayout.Y_AXIS)); //设置窗体布局
myframe.show();
}
}
20、谈谈对内存泄露的认识(5分)
答:内存泄漏是指在对内存的读写的过程中,读入内存的数据超出内存的容量,造成数据丢失的问题,JAVA的垃圾回收机制避免了一部分内存泄漏的出现,但是并不能完全的避免,如果有一个程序占用了很大的内存,并且一直再使用,垃圾回收器就无法将他回收回来,这个时候,还有一个程序不断地在占用内存,最后的结果就是导致内存的泄漏,这个必须在编程的时候尽量的避免。
< 0n< Hu =EN-US style=’mso-bidi-font-family: 宋体;color:blue;mso-font-kerning:0pt’>public static void main(String args[]){
Point Point1 = new Point(3,4);
System.out.println(“Point1:”+”(“+Point1.x+”,”+Point1.y+”)”);
Point Point2 = Point1.getPoint();
System.out.println(“Point2:”+”(“+Point2.x+”,”+Point2.y+”)”);
Point Point3 = new Point(5,6);
Point1.setPoint(Point3);
System.out.println(“Point1:”+”(“+Point1.x+”,”+Point1.y+”)”);
}
}