一、选择题
1、访问修饰符作用范围从大到小是()
A. private-default-protected-public
B.public-default-protected-private
C,private-protected-default-public
D,public-protected-default-private
2、以下()不是Object类的方法?
A.clone() B.finalize() C.toString() D.hasNext()
3、在Java中,以下()接口以键-值的方式对存储对象?
A. java.util.Collection
B.java.util.Map
C.java.util.List
D.java.util.Set
4、指出下列程序运行的结果是()
public class Example {
String str = new String("good");
char[] ch = {'a','b','c'};
public static void main(String[] args) {
Example ex = new Example();
ex.change(ex.str, ex.ch);
System.out.print(ex.str + " and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
str = "test ok";
ch[0] = 'g';
}
}
A. good and abc
B. good and gbc
C. test ok and abc
D. test ok and gbc
二、填空题
5、Java基本数据类型包括____________________。
解答:byte、short、int、long、char、boolean、float、double
6、Math.round(11.5)等于______;Math.round(-11.5)等于_______。
解答:采用四舍五入计算,11.5的四舍五入为12,-11.5的四舍五入为-11
7、程序String str1 = "hello"; String str2 = "he"+new String("llo");System.out.println(str1==str2)的结果是______。
解答:false
8、字符串分为两大类,一类是字符串常量,使用______类的对象表示;另一类是字符串变量,使用_______类的对象表示。
解答:常量用String,变量用StringBuffer(线程安全)或StringBuiler(非线程安全)
三、问答题
9、接口与抽象类的区别是什么?
解答:1、接口的所有方法都是抽象的,抽象类可以包含具体方法
2、接口的所有方法和属性都是public,抽象类允许私有
3、接口的实现中必须实现所有方法,而抽象类的继承者中,可以实现,也可以不实现
4、实现多个接口类似于实现多重继承,但是抽象类只能实现单继承
10、利用递归方法求5!
解答:
public class Test{
public static void main(String[] args){
System.out.println(JC(5));
}
public static int JC(int n){
if( n== 0 || n== 1)
return 1;
if( n > 1)
return n*JC(n-1);
return 0;
}
}
11、编写多线程代码有几种实现方法?请用代码分别举例说明。
解答:两种:继承Thread类和实现Runnable接口。
class MyThread1 extends Thread{
public void run(){
//do Stuff
}
}
class MyThread2 implements Runnable{
public void run(){
//do Stuff
}
}
12、编程题:写一个观察者模式(先画类图,再用代码实现)。
解答:(下图及代码均来源于网络,使用请注明出处)观察者模式的类图:
代码实现:
//抽象主题
public interface Subject
{
public void attach(Observer observer);
public void detach(Observer observer);
void notifyObservers();
}
//具体主题
public class ConcreteSubject implements Subject
{
public void attach(Observer observer)
{
observers.add(observer);
}
public void detach(Observer observer)
{
observers.remove(observer);
}
public void notifyObservers()
{
for(Observer observer:observers){
}
}
private List<Observer> observers = new ArrayList<Observer>();
}
//抽象观察者
public interface Observer
{
void update();
}
//具体观察者
public class ConcreteObserver implements Observer
{
public void update()
{
// doUpdate
}
}
四、选作题
一个由10亿条记录的文本文件中,已按照关键字排序存储,设计算法,客户以快速的从文件中查找指定关键字的记录。