2-1
在使用 interface声明一个接口时,只可以使用( )修饰符修饰该接口。
private
protected
private protected
public
2-2
Java的字符类型采用的是Unicode编码方案,每个Unicode码占用( )个比特位。
8
16
32
64
2-3
关于构造函数的描述错误的是:
构造函数返回的类型只能是void类型
构造函数是类的一种特殊函数,它的方法名必须与类名相同
构造函数的主要作用是完成对类的对象的初始化工作
一般在创建新对象时,系统会自动调用构造函数
2-4
有语句String s=”hello world”; ,以下操作哪个是不合法的?
int i=s.length()
s>>>=3
String ts=s.trim()
String t=s+”!”
2-5
下列哪些语句关于Java内存回收的说明是正确的?
程序员必须创建一个线程来释放内存
内存回收程序负责释放无用内存
内存回收程序允许程序员直接释放内存
内存回收程序可以在指定的时间释放内存对象
2-6
以下哪个不是Java的关键字?
TRUE
const
super
void
2-7
Java语言的类间的继承关系是。
多重的
单重的
线程的
不能继承
2-8
下列选项中,用于在定义子类时声明父类名的关键字是。
interface
package
extends
class
2-9
在java中,( )对象可以使用键/值的形式保存数据.
ArrayList
HashSet
HashMap
LinkedList
2-10
给定如下的java代码,编译时会在( )出现错误。 class Parent{ }
class Child extends Parent{
public static void main(String args[]){
Parent p1=new Parent();//第一行
Parent p2=new Child();//第二行
Child c1=new Child();//第三行
Child c2=new Parent();//第四行
} }
第一行
第二行
第三行
第四行
2-11
( )类应该是你在java里创建的任何异常类的超类。
Exception类
Throwable类
Error类
RuntimeException类
2-12
( )合法构造并初始化了数组。
int array[]={1,2,3};
int array[][]={1,2,3,4};
int []array=(1,2,3);
int []array=[1,2,3];
2-13
下列InputStream类中哪个方法用于关闭流?
skip()
close()
reset()
mark()
2-14
在类的定义中可以有两个同名函数,这种现象称为函数的( )。
封装
覆盖
继承
重载
2-15
在下面关键字中,哪一个不是用于异常处理语句( )。
try
catch
break
finally
4-1
abstract
方法是一种仅有方法的定义,没有具体方法体和操作实现的方法;
final
方法是不能被当前类的子类重新定义的方法。
4-2
创建一个名为YourPackage的包的语句是
package YourPackage;
该语句应放在程序位置的
第一行
4-3
在java程序中,通过类的定义只能实现
类
重继承,通过
接口
的定义可以实现多重继承。
4-4
子类必须通过
extends
关键字调用父类有参数的构造函数
4-5
在java语言中,所有的类都是
Object
的子类
4-6
一个类如果实现一个接口,那么它就需要实现接口中定义的全部
方法
,否则该类就必须定义成
抽象类
。
//这是对堆栈进行操作的泛型类。有入栈push和出栈pop两个方法,请完成填空。
public class Stack<T> {
private class Node<T>{
public T Item;
public Node<T> next;
public Node(T item,Node<T> nt) {
Item = item;
next = nt;
}
public boolean end() {
return Item==null && next==null;
}
}
private Node top;//
public Stack() {
top=new Node<T>(null,null);
}
public void push(T item) {
top = new Node<T>(item,top);
}
public T pop() {//
if(top.end())
return null;
T item=top.Item;
top = top.next;
return item;//
}
}
public class First {
public static void main(String[] args) {
Stack<T> s=new Stack<T>();//
int i;
for(i=0;i<10;i++) {
s.push(i);
}
for(i=0;i<10;i++) {
System.out.println(s.pop());
}
}
}
8-1 多线程同步编程 (20分)
有A,B两个线程,A线程产生小于20的随机数,B线程计算随机数的平方值。要求A,B线程必须同步(即A线程产生一个数之后,B线程计算该数的平方值;如果A线程还没产生,B线程只能等待,如果B线程还没取值,A线程只能等待)。
/**
*
*/
/**
* @author SiriusZHT 2018110262
*
*/
package test1;
import java.util.Random;
public class ThreadTurn {
Object o = new Object();
Boolean f = true ; // True 时线程1执行
int max=20;
int min=0;
int s=0;
int doubles=0;
class Thread1 extends Thread{
public void run() {
synchronized (o) {
for (int i = 0; i < 100; i++) {
Random random = new Random();
s = random.nextInt(max)%(max-min+1) + min;
System.out.println("A" + i + ":" + s);
o.notify();
if(f){
f = false;
try{
o.wait();
}catch(Exception e){
System.out.print(e);
}
}
}
}
}
}
class Thread2 extends Thread{
public void run(){
synchronized (o){
for(int i=0;i<100;i++){
doubles = s*s;
System.out.println("B" + i + ":" + doubles);
o.notify();
if(!f){
f = true;
try {
o.wait();
}catch(Exception e){
System.out.print(e);
}
}
}
}
}
}
public void start(){
new Thread1().start();
new Thread2().start();
}
public static void main(String args[]){
ThreadTurn t = new ThreadTurn();
t.start();
}
}
8-2 请按要求完成程序 (20分)
计算机的文件假如分为文本文件、图像文件、压缩文件三种类型,编写一个程序模拟打开这三种类型的文件(在打开Open()方法中只显示打开某种类型的文件即可)。要求使用接口或抽象类, 接口或抽象类的名称为FileOpen, 文本文件类名为TextFile, 图像文件类名为ImageFile, 压缩文件类名为ZipFile。主程序代码如下,请完成其他类的编程。
/**
*
*/
/**
* @author SiriusZHT 2018110262
*
*/
package test2;
abstract class FileOpen {
public String filename;
public void Open() {
}
}
class TextFile extends FileOpen{
public TextFile(String name) {
// TODO Auto-generated constructor stub
this.filename = name;
}
public void Open() {
System.out.println(this.filename);
}
}
class ImageFile extends FileOpen{
public ImageFile(String name) {
// TODO Auto-generated constructor stub
this.filename = name;
}
public void Open() {
System.out.println(this.filename);
}
}
class ZipFile extends FileOpen{
public ZipFile(String name) {
// TODO Auto-generated constructor stub
this.filename = name;
}
public void Open() {
System.out.println(this.filename);
}
}
public class File{
public static void main(String[] args) {
FileOpen []fp=new FileOpen[10];
int n;
for(int i=0;i< fp.length;i++){
n=(int)(Math.random()*3);
switch(n){
case 0:
fp[i]=new TextFile ("文本文件.txt");
break;
case 1:
fp[i]=new ImageFile ("图像文件.jpg");
break;
case 2:
fp[i]=new ZipFile ("压缩文件.Zip");
break;
}
}
for(FileOpen ones:fp)
ones.Open();
}
}