资源描述
计算机等级考试二级java模拟题1
1. float型float f=3.4是否正确?
答:不正确,应为float f=3.4f
2. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
答:是引用传递。
3. 在java中一个类被声明为final类型,表示了什么意思?
答:表示该类不能被继承,意味着它不能再派生出新的子类,不能作为父类被继承,是顶级类。
4. Error与Exception有什么区别?
答:Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。
Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。
5. 谈谈final, finally的区别。
答:final是修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract,又被声明为final。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
Finally是在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话),只要有finally语句块,无论程序如何运行,它都必然被执行到。
6. String s = new String("xyz");创建了几个String Object?
答:创建了两个,一个字符对象,一个引用对象
7. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:两个错误都是一样的,后者只是加法的写法不一样,两个错误都是因为s1是short型而1是整型相加后数据类型就变为整型了,与s1定义为short型有矛盾,必须进行强制类型转换才正确。
8. 数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有,String有。
9. Overload和Override的区别
答:方法的覆盖(Overriding)和重载(Overloading)是Java多态性的不同表现。覆盖(Overriding)是父类与子类之间多态性的一种表现,重载(Overloading)是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被覆盖 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法可以改变返回值的类型。
10. abstract class和interface有什么区别?
答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口
11. 构造器Constructor是否可被override?
答:可以。
12. 是否可以继承String类?
答:String类是final类所以不可以继承。
13. 题目如下:
父类:
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
子类:
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
请问输出结果为:
FatherClass Create+
FatherClass Create
ChildClass Create
14. public class OuterClass {
private double d1 = 1.0;
//insert code here ~~ line 3
}
从下列选项中选择两个正确的答案放在 line 3 中(C E)
A. class InnerOne{
public static double methoda() {return d1;}
}
B. public class InnerOne{
static double methoda() {return d1;}
}
C. private class InnerOne{
double methoda() {return d1;}
}
D. static class InnerOne{
protected double methoda() {return d1;}
}
E. abstract class InnerOne{
public abstract double methoda();
}
15. STRING与STRINGBUFFER的区别
答:STRING的长度是不可变的,一旦一个String对象被创建,包含在这个实例中的内容(“字符串”)不可以被更改,直至这个对象被销毁,因此,指向一个 String对象的变量实质上是一个常量,String对象也被称为常量对象;STRINGBUFFER的长度是可变的,可以通过StringBuffer的append()、insert()、reverse()、setCharAt()、setLength()等方法,可以对这个字符串中的内容修改。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
16. JAVA类实现序例化的方法是?
答:JAVA类要实现序列化,对应的类必须先实现Serializable和Externalizable这两种接口,然后就可以调用ObjectOutputStream的witeObject()方法来保存对象以及通过ObjeatInputStream的readObjeact()方法来读取保存的对象。
17. Collection框架中实现比较要实现什么接口?
答:要实现Comparable接口,并实现这个接口的唯一方法cpmparaTo(),接受一个Object对象,在这个方法中可以定义对象的排序规则。
18. 介绍JAVA中的Collection 框架结构 , 并画出来
<>Collection
<>Set
<>List
HashSet
Tree set
ArrayList
Vector
19. 编程题:列出某文件夹下的所有文件 (文件夹从命令行输入)
解:import java.io.*;
public class listFile
{
public static void main (String[] args)
{
String s="";
InputStreamReader ir=new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(ir);
try {
s = in.readLine();
File f=new File(s);
File[] files=f.listFiles();
for(int i=0;i
{
if(files[i].isFile())
{
System.out.println("文件:"+files[i]);
}
else
{
System.out.println("目录:"+files[i]);
}
}
in.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
20. 编程题::写一个满足Singleton模式的类出来
public class SingletonTest
{
private static SingletonTest sp;
private SingletonTest() {}
public static SingletonTest getInstance()
{
if (sp==null)
{ sp=new SingletonTest(); }
return sp;
}
21. 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”
解:import java.io.*;
class interceptString
{
String interceptStr;
int interceptByte;
public interceptString(String str,int bytes)
{
interceptStr=str;
interceptByte=bytes;
System.out.println("字符串为:'"+interceptStr+"';字节数为:"+interceptByte);
}
public void interceptIt()
{
int interceptCount; interceptCount=(interceptStr.length()%interceptByte==0)?(interceptStr.length()/interceptByte):(interceptStr.length()/interceptByte+1);
System.out.println("截取后断数为:"+interceptCount);
for (int i=1;i<=interceptCount ;i++ )
{ if (i==interceptCount)
{
System.out.println(interceptStr.substring((i-1)*interceptByte,interceptStr.length()));
} else
{
System.out.println(interceptStr.substring((i-1)*interceptByte,(i*interceptByte)));
}
}
}
public static void main(String[] args)
{
String s="";
InputStreamReader ir=new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(ir);
try {
s = in.readLine();
interceptString ss = new interceptString(s,4);
ss.interceptIt();
in.close();
} catch (IOException e)
{ e.printStackTrace();}
}
}
22. 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答:多线程有三种实现方法,分别为:
① 实现Runnable接口,覆盖Run()方法。
② 继承Thread,覆盖Run()方法。
③ 继承TimerTask,覆盖Run()方法。
同步的实现是在方法前加synchronized,在调用wait()和notify()。
23. 请说出你所知道的线程同步的方法
答:1. synchronized 方法:通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。
2. synchronized 块:通过 synchronized关键字来声明synchronized 块。
24. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
答:不可以。synchronized 方法都必须获得调用该方法的类实例的锁方能执行,否则所属线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线程才能获得该锁,重新进入可执行状态。
25. 用JAVA SOCKET编程,实现简单的Echo功能
如: 客户端从键盘输入 hi (当用户输出exit 退出程序),服务端响应为 hi(服务器要求为多线程)
解:服务器程序:
import java.io.*;
import .*;
public class MyServer extends Thread{
private Socket cq ;
public MyServer(Socket cq)
{
this.cq = cq;
}
public void run()
{
try
{
BufferedReader in=new BufferedReader(new InputStreamReader(cq.getInputStream()));
PrintWriter out=new PrintWriter(cq.getOutputStream());
while(true)
{
String str=in.readLine();
System.out.println(str);
out.println("message: "+str);
out.flush();
if(str.equals("exit"))
break;
}
}
catch(IOException e)
{
System.out.println(e.message());
}
}
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(8009);
while(true)
{
Socket s=server.accept();
new MyServer(s).start();
}
}
}
客户端程序:
import .*;
import java.io.*;
public class MyClient{
public static void main(String[] args)throws Exception
{
Socket server=new Socket("localhost",8009);
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
while(true)
{
String str=br.readLine();
out.println(str);
out.flush();
if(str.equals("exit")){
break;
}
System.out.println(in.readLine());
}
server.close();
}
}
计算机等级考试二级java模拟题2
1.程序是应用程序执行的蓝本。进程是程序的一次动态的执行过程。进程由(操作系统)管理。进程由(进程)控制。
2.JAVA中的线程模型由(CPU)(代码)和(数据)几部分组成。
3.JAVA线程的线程体由(run())方法提供。线程在创建后,通过(start())方法将线程启动。
4.新建的线程缺省具有父线程的优先级。主线程一般具有(普通)优先级。设置线程优先级的方法是(setPriority())。
5.线程在生命周期中要经历五种状态,分别是(新建)状态、(可运行)状态、(运行)状态、(阻塞)状态、(死亡)状态。
6.JAVA中一个类只有实现了(serializable)接口,它的对象才是可串行化的。
7.当实现Runnable 接口时,要实现的方法是( D )。
A. start() B.resume() C init() D run()
8.阅读下列程序:
Class ThreadTest extends Thread{
Public static void main(String args[]){
Thread t=new Thread(this);
t.start();
}
Public void run(){
System.out.print(“A thread test. ”);
}
}
对该程序而言,正确结论是(C )
A. 该程序能够通过编译并打印输出“A thread test.”
B. 该程序能够通过编译,但运行时将不调用ThreadTest类中的run()方法,因此不产生任何输出
C. 该程序存在编译错误,因为在main()方法中不能使用this指针
D. 上诉选项都不正确
9.下列方法可以通过Thread类就可以调用,而不需要通过Thread类的实例进行调用的是A
A.sleep() B.start() C.setPriority() D.suspend()
10.Thread类提供表示线程优先级的静态常量,代表普通优先级的静态常量是(C)
A. MAX_PRIORITY B.MIN_PRIORITY C.NORMAL_PRIORITY
D.NORM_PRIORITY
11.下列线程交互的方法中,不提倡使用的方法是(D)
A.stop() B.suspend()和resume() C.wait()和notify() D.A和B
12.JAVA线程在创建后调用start()方法,将使线程进入(B)。
A.运行状态 B.可运行状态 C。等待阻塞状态 D.A和B
13.利用继承Thread 类的方法创建两个线程,这两个线程执行的操作相同,都是以随机的时间间隔打印5个自己的名称。两个线程的名称分别为“First”和“Second”.运行结果如图:
0 First
0 Second
1 Second
2 Second
3 Second
1 First
4 Second
DONE! Second
2 First
3 First
4 First
DONE! First
14.编写Applet,利用实现Runnable接口的方法创建一个显示当前时间的线程,如图:
Applet
10:40:32
13.编程提示:
创建一个Thread类的子类。在该类的run()方法中利用一个循环打印自己的名称。每打印一个名称调用sleep()方法随机休眠一段时间。获取线程的名称,使用Thread类的getName()方法,声明并定义一个包含main()方法的类,在main()方法中使用Thread类的如下构造方法:
Thread(String name);//参数name是线程的名称/
创建两个名称分别为“First”和“Second”线程并启动。
程序代码:
Public class ThreadTest
{
public static void main(String args[])
{
new SimpleThread(“First”).start();
new SimpleThread(“Second”).start();
}
Class SimpleThread extends Thread
{
Public SimpleThread(String str)
{
Super(str);
}
Public void run()
{
For(int i=0;i<5;i++)
{
System.out.println(i+” “+getName());
Try{
Sleep((int)(Math.random()*1000));
} Catch (InterruptedException e){}
}
System.out.println(“DONE!”+getName());
}
}
14答案
Import java.awt.*
Import java.util.Date;
Import java.applet.Applet;
Public class Test extends Applet implements Runnable
{
Thread clockthread;
Public void start
{
If (clockThread==null)
{
clockThread=new Thread(this);
clockThread.start();
}
}
Public void run()
{
While(clockThread!=null)
{
repaint();
Try
{
clockThread.sleep(1000);
}
catch(InterruptedException e)
{}
}
}
Public void paint (Graphics g)
{
Date time=new Date();
String str=time.getHours()+”:”+time.getMinute()+”:”+time.getSecond();
g.drawString(str,5,10);
}
Public void stop()
{
clockThread=null;
}
}
计算机等级考试二级java模拟题3
1.ObjectInputStream 的父类是 。
A.)InputStream
B)OutputStream
C)Reader
D)Writer
2.在java中,用来处理字符的基本存储单位的 。
A)单字节
B)双字节
C)3字节
D)4字节
3.ZipInputStream所在的包是 .
A).java.io
B)java.util
C)java.io.zip
D)java.util.zip
4.readFloat()所在类是 。
A) DataInput
B)InputStreamReader
C)DataInputStream
D)BufferedInputStream
5.同时支持readInt()和write()方法的类是______________.
A)RandomAccessFile
B)File
C)Read
D)Write
6.读一个压缩文件,该压缩文件对象参数的类是____________.
A)File
B)FileInputStream
C)ZipInputStream
D)BufferedReader
7.JarInputStream所属流是_________________.
A)FileInputStream
B)BufferedInputStream
C)ZipInputStream
D)DataInputStream
8.如果想保留对象数据,首先需要打开的对象是____________.
A)ObjectOutputStream B)FileOutputStream C)BufferedOutputStream D)ZipOutputStream
9.下列File类操作中错误的是___________.
A)文件的建立 B)文件的删除 C)文件的读写 D)文件的属性
10.在计算CRC校验和的程序中使用java.nio的新特性后,速度提高约23倍,所用技术是_______________.
A) 校验和 B)文件琐 C)字符编码解码 D)内存映射
11.BufferedReader阅读文本行的方法是______________.
12.以下是一个对数据文件进行缓冲输入操作的句子,在语句的下划线处,请填上适当的内容:
DataInlputStream din= new DataInputStream(new _____(new FileInputStream(“employee.dat”)));
13.正如Java的流类中也有不属于java.io包的,比如:“摘要”输入流类DigestInputStream属于java.security包,同样,ZipInputStream属于_______接口。
14.代表一个随机访问文件的类是______类。
15.如果对象需要进行输入,着该对象必须实现________接口。
16.阅读一个网页中的html文件,寻找和相匹配的字符串。这就要将java.io.InputStreamReader和java.util.regex包的_____________类和Matcher类相结合。
17.请编写一个完整的java程序,将一个文件(例如empllyee.dat)的属性置为只读模式。
18.请编写一个完整的java程序,向一个文件(例如empllyee.dat)写入10个字符串。
19.请编写一个完整的java程序,将source.txt中的“这是在源文件中的数据”读出来显示在屏幕上,并且写入到destination.txt文件中。
20.请试在以下程序的“…”处填上适当的语句。(选作)有时可将一个对象写在ByteArrayOutputStream流中,再从该流中读入同样一个对象到ByteArrayOutputStream中,这样也可以深层次克隆一个对象。
Import java.io.*;
Public class SerialCloneTest1
{
Public static void main(String args[])
{
Student harry=new Student(“Harry Hacker”,”Computer”);
Student harry2=(Student)harry.clone();
System.out.println(harry);
System.out.println(harry2)
}
}
Class SerialCloneable implements Cloneable,Serializable
{
Public Object clone()
{
Try{
…//请填上适当的语句,完成Student对象harry的克隆。
}
Catch(Exception e)
{
Return null;
}
}
}
Class Student extends SerialCloneable
{
Public Student(String n,String m)
{
Name=n;
Major=m;
}
Public String toString()
{
Return getClass().getName()+”[name=”+name+”,major=”+major+”]
}
Private String name;
Private String major;
}
答案
1.A 2B 3D 4C 5A 6B 7C 8A 9C 10D
11.readerLine() 12.BufferedInputStream() 13.java.util.zip 14.RandomAccessFile 15.Serializable 16.Pattern
17.代码如下:
Import java.io.*;
Class SetReadOnlyText
{
Public static void main(String [] args)
{
If(args.length !=1)
{
System.err.println(“usage:java Main”);
System.exit(-1);
}
If((new File(args[0])).setReadOnly())
{
System.out.println(“set File to ReadONly mode”);
}
Else
{
System.out.println(“Cannot set to read-only mode”);
}
}
}
18.代码如下:
Import java.io.*;
Public class WriteChar
{
Public static void main(String args[])
{
Int I;
Byte[] b=new byte[10];
Try
{
DataOutputStream out=new DataOutputString(new FileOutputStream(“employee.dat”));
For(i=0;i<10;i++)
{
B[i]=(byte)(48+i);
}
Out.write(b);
Out.close();
}
Catch(Exception e)
{
}
}
}
19.代码如下:
Import java.io.*;
Public class ReadWriteChar
{
Public static void main(String args[])
{
String s=new String();
Try
{
BufferedReader in =new BufferedReader(new FileReader(“source.txt”));
PrintWriter out=new Print Writer(new FileWriter(“destination.txt”));
Out.println(“The following is from source”);
While((s=in.readLine())!=null)
{
System.out.println(s);
Out.println(s)
}
In.close();
Out.close();
}
Catch(Exception e)
{}
}
}
20.代码如下:
Import java.io.*;
Public class S
展开阅读全文