D FileInputStream
(28)在Java中,能实现多重继承效果的方式是( )。 A 内部类 B 适配器 C 接口 D 同步
(29) char类型的取值范围是( )。 A 2-7~27.1 B 0~216-1 C -215~215—1 D 0~28-1
(30)下列方法中可以用来创建一个新线程的是( )。 A 实现java.lang.Runnable接口并重写start0方法 B 实现java.iang.Runnable接口并重写run0方法 C 实现java.lang.Thread类并重写run0方法 D 实现java.lang.Thread类并重写start0方法
(31)下列关于线程优先级的说法中,正确的是( )。 A.线程的优先级是不能改变的
B.线程的优先级是在创建线程时设置的 C.在创建线程后的任何时候都可以设置 D. B和C
(32)下列代码中,将引起一个编译错误的行是( )。 1) public class Test{ 2) int m, n;
3) public Test(){}
4) public Test(int a){ m=a;)
5) public static void main(String args0){ 6) Test t1, t2; 7) int j, k; 8) j=0; k=0; 9) t1 = new Test(); 10) t2 = new Test(j,k); 11) } 12)} A.第3行 B.第5行 C.第6行 D.第10行
(33)阅读下列代码后 public class Person{ int arr[]=new int[10];
public static void main(String args[ ]){ System.out.println(arr[l]); } )
正确的说法是( )。 A 编译时将产生错误
B 编译时正确,运行时将产生错误 C 输出零 D 输出空
二、多项选择题 下列各题A.、B.、C.、D.四个选项中,有一个或多个选项是正确的, (l)下列说法正确的有( )。
A. 环境变量可在编译source code时指定.
B.在编译程序时,所能指定的环境变盛不包括class path C.javac -次可同时编译数个Java源文件
D. javac.exe能指定编译结果要置于哪个目录(directory)
答案:BCD
(2)不能用来修饰interface的有( )
A. private B.public C.protected D.static
答案:ACD
(3)下列说法错误的有( )
A.在类方法中可用this来调用本类的类方法 B。在类方法中调用本类的类方法时可直接调用 C.在类方法中只能调用本类中的类方法 D.在类方法中绝对不能调用实例方法
答案:ACD
请将正确选项填写在答题纸上
(4)下列说法错误的有( )
A. Java面向对象语言容许单独的过程与函数存在 B. Java面向对象语言容许单独的方法存在 C. Java语亩中的方法属于类中的成员(member) D. Java语言中的方法必定隶属于某?类(对象),调用方法与过程或函数相同
答案:ABC
(5)下列说法错误的有( )。
A.能被java.exe成功运行的java class文件必须有main()方法 B.J2SDK就是Java API
C. Appletviewer.exe可利用jar选项运行Jar文件
D.能被Appletviewer成功运行的java class文件必须有main()方法
答案:BCD
三、判断题
请将每空的正确答案写在答题纸上,答在试卷上不得分。
(1) Java程序中的起始类名称必须与存放该类的文件名相同。(对) (2) Unicode是用16位来表示一个字的。(对) (3) 原生类中的数据类型均可任意转换。(对) 三、填空题
请将每空的正确答案写在答题纸上【l】至【25】序号的横线上,答在试卷上不得分。 (l)某二叉树中度为2的结点有18个,则该二叉树中有【1】 19 个叶子结点。
二叉树的终端结点(叶子结点)数等于双分支结点数加1。
(2)在面向对象方法中,类的实例称为【2】 对象
(3)诊断和改正程序中错误的工作通常称为【3】 Debug
(4)在关系数据库中,把数据表示成二维表,每一个二维表称为【4】 关系
(5)Java 源文件中最多只能有一个【5】 public 类, 其他类的个数不限。
(6)线程在生命周期中要经历5中状态,分别是新建状态、可运行状态、运行状态。【6】 暂停 状态和终止状态。
(7)FileInputStream 是字节流;BufferedWriter是字符流, ObjectOutputStream是 【7】 对象序列化流
(8)当使用Thread t = new Thread(r)创建一个线程时,表达式r instance of Thread 的值为【8】 false 。 r instanceOf Runnable
2.equals()方法和“==”操作符的区别是什么?重写equals()方法的时候,我们还需要重写哪些方法?为什么?
“==”比较的是一个对象在内存中的地址值,栈中的内容是否相同
equals()是针对引用的,比较的是引用类型的内容一样不一样,堆中的内容是否相同
重写equals()方法的时候,需重写hashcode方法,这样比较的时候,比较的是两个对象的hash值,不同对象的hash值不同。
7.写一个函数计算但参数为n(n很大)时的值1-2+3-4+5-6+7??+n。(提示:考虑程序执行效率)
private static void jisuan(int n) { int sum=0; if(n%2==0){ sum=-(n/2);
System.out.println(\+sum); }else{
sum=-(n-1)/2+n;
System.out.println(\+sum); } }
求质数的多种优化方式
答:一般我们求质数时都会去计算小于某一个数N的质数而不会不加限定,现在我们以求小于N的质数来说一说优化方式。在我们求质数的过程中一般会用到两种方法试除法和筛选法两种,现在下来说一下试除法:
①.判断小于N的数X是否是质数,就是从2一直尝试到X-1,这种做法效率最差,并不可取----->②如果X是质数,那么它如果不能被小于X/2的数整除即可,这样算法效率提高一些---->③除了2以外,所有的质数都只能是奇数,所以我们可以将数X先试除2,然后尝试从3一直到X/2的所有奇数----->④其实判断一个数是否是质数,只需判断一个数能不能被除了1之外小于x的数整除即可,----->⑤最后,我们可以利用前面求出来的质数来判断,我们只需判断X能不能
被小于x的质数整除即可,这样效率是不是更高。
再说筛选法:对于使用筛选法的优化主要是从空间上考虑
①定义一个容器,将数据放入容器中,然后遍历其中的数据,将是合数的数据删除,最后剩余的就是质数了------>②我们可以定义一个布尔类型的数组容器,将其中的值都赋值为true,在筛选的过程中将不是质数的数作为数组的下标将对应元素的值改为false,最后取出值为true的元素的下标即可----->③构造定长的byte数组,数组的每个byte存储8个布尔值,这样性能是不是又有了提高呢。
(14) 简述几种排序方式(至少四种,可以从以下各个方面来比较这几种算法,例如从时间复杂度和空间复杂度)
排序法 最差时间分析 冒泡排序 快速排序 选择排序 二叉树排序 插入排序 堆排序 希尔排序 O(n2) O(n) O(n2) O(n2) O(n2) O(n*log2n) 2平均时间复杂度 O(n2) O(n*log2n) O(n2) O(n*log2n) O(n2) O(n*log2n) O(n1.25) 稳定度 空间复杂度 稳定 不稳定 稳定 不一定 稳定 不稳定 不稳定 O(1) O(log2n)~O(n) O(1) O(n) O(1) O(1) O(1) 冒泡排序:(Bubble Sort)冒泡排序方法是最简单的排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置