达内java核心api下Word格式.docx
《达内java核心api下Word格式.docx》由会员分享,可在线阅读,更多相关《达内java核心api下Word格式.docx(18页珍藏版)》请在冰点文库上搜索。
D.程序可以通过编译,运行后company.txt文件末尾增加了字符串“tarena”
正确答案:
D
问题解析:
本题考查使用FileOutputStream实现追加写。
FileOutputStream类的构造方法FileOutputStream(File,
boolean)的第二构造参数设置为true表示向文件末尾追加写数据,否则为覆盖写。
2.
关于java.io.Serializable接口说法正确的是:
A.java.io.Serializable中有一个serialID属性,但是没有方法
B.类通过实现java.io.Serializable
接口以启用其对象的序列化功能
C.java.io.Serializable中有一个run方法,但是没属性
D.java.io.Serializable接口没有方法或属性,仅用于标识可序列化的语义。
BD
本题考查序列化的应用。
Java提供了对象序列化和反序列化的算法。
Serializable接口中没有任何方法或属性,类实现该接口,则该类的对象可以被序列化。
3.请看下列代码:
main(String[]
args)
Exception{
fos
FileOutputStream("
record.dat"
BufferedOutputStream
bos
BufferedOutputStream(fos);
bos.write('
a'
关于上述代码编译运行的结果的是:
B.实现向文件record.dat追加写入字符a
C.实现向文件record.dat覆盖写入字符a
D.文件record.dat无任何内容
本题考查缓冲流的用法,BufferedOutputStream缓冲输出流内部也维护着一个缓冲区,每当我们向该流写数据时,都会先将数据存入缓冲区,当缓冲区已满时,缓冲流会将数据一次性全部写出。
使用缓冲输出流可以提高写出效率,例如本题中,就没有将缓冲区中的字符a写出去。
这是因为在缓冲区中的数据保存直到缓冲区满后才写出,BufferedOutputStream默认的缓冲区为8k,显然缓冲区没有满。
当然,也可以使用fluash方法将缓冲区中的数据强制写出或使用close方法关闭流,关闭流之前,缓冲输出流会将缓冲区数据一次性写出。
4.假设random.dat文件为utf-8编码,其内容为“International”,请看下列代码的输出结果是:
RandomAccessFile
raf
RandomAccessFile("
random.dat"
r"
raf.skipBytes(5);
buf
byte[8];
raf.read(buf);
System.out.println(new
String(buf));
raf.close();
A.International
B.national
C.rnational
D.ational
B
本题考查RandomAccessFile类的skipBytes方法,该方法可以跳过输入的
n
个字节以丢弃跳过的字节。
本题中,在上述代码中,使用
RandomAccessFile类的skipBytes方法跳过了输入文件内容的开始的5个字节。
跳过了5个字节后,再读取random.dat文件剩余的内容,该内容为national。
5.在Java中,要创建一个InputStreamReader类的对象,下列选项正确的是:
A.new
InputStreamReader(new
FileInputStream("
1.dat"
))
B.new
FileReader("
C.new
BufferedReader("
D.new
InputStreamReader("
)
A
本题考查如何构建InputStreamReader对象。
InputStreamReader为
字符输入流。
使用该流可以设置字符集,并按照指定的字符集从流中按照该编码将字节数据转换为字符并读取。
需要使用字节输入流作为参数构造InputStreamReader对象。
6.下列代码中,能实现按行读取文件的数据的流是:
A.InputStreamReader
B.BufferedReader
C.FileInputStream
D.InputStream
本题考查BufferedReader的用法。
BufferedReader的readLine()
方法
读取一个文本行,该方法返回包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回
null
。
7.下列代码编译和运行的结果是:
{
String[]
s=null;
s[0]
test"
System.out.println(s[0]);
(Exception
ex)
System.out.println("
Exception"
(NullPointerException
npe)
NullPointerException"
}
A.输出:
test
B.输出:
Exception
C.编译失败
D.输出:
NullPointerException
C
本题考查异常处理中多catch块的情况。
catch代码块是异常处理代码。
可以写多个catch处理一系列异常,但是要注意:
异常的大小关系,大类型的放到后面处理。
例如本题中,应把捕获异常的顺序改成如下代码:
(
NullPointerException
8.下列代码编译和运行的结果是:
A
process()
System.out.print("
A,"
B().process();
B
extends
IOException
super.process();
B,"
throw
IOException();
A.输出Exception
B.输出A,B,Exception
D.在运行时抛出NullPointerException异常
本题考查重写方法时的异常处理。
如果使用继承时,在父类别的某个方法上声明了throws某些异常,而在子类别中覆盖该方法时,可以有如下操作:
1).不处理异常(覆盖时不设定throws)
2).可throws父类方法中声明的部分异常
3).可throws父类方法中抛出异常的子类异常
但是不可以做如下操作:
1).throws出额外的异常
2).throws父类方法中抛出异常的父类异常。
本题中父类A的process没有抛出异常,在子类B的process方法抛出了额外的异常IOException,会导致编译失败。
9.请看下列代码:
1.
//
some
code
here
3.
4.
(SomeException
se)
5.
6.
finally
7.
8.
下面哪三种情况能使第7行的代码执行:
A.第3行抛出异常
B.第1行抛出异常
C.第5行抛出异常
D.第3行代码成功执行
ACD
本题考查异常处理中finally块的用法。
finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序其它部分以前,能够对程序的状态作统一管理,无论try所指定的程序块中是否抛出例外,finally所指定的代码都要被执行,通常在finally语句中可以进行资源的消除工作,如关闭打开的文件、删除临时文件等。
除了下列情况,总将执行finally做为结束:
Jvm过早终止;
在finally块中抛出一个未处理的异常;
计算机断电、失火、或遭遇病毒攻击。
本题中,如果第1行抛出异常,整个程序会因抛出异常而终止。
属于我们上述所说了JVM过早终止,finally块不会被执行。
10.下列代码运行的结果是:
Boxer
Integer
i;
int
x;
Boxer(int
y)
x
i
+
y;
System.out.println(x);
Boxer(new
Integer(4));
4
B.在运行时抛出NullPointerException异常
C.在运行时抛出NumberFormatException异常
D.在运行时抛出IllegalStateException异常
本题考查NullPointerException异常。
当应用程序试图在需要对象的地方使用
时,抛出该异常。
本题中,在编译代码“
”时,要对i进行自动拆箱,即相当于代码“
i.intValue()
但执行时属性i的值为null,因此抛出空指针异常。
11.下面能使线程处于阻塞状态(Block)的是:
A.sleep方法
B.IO等待
C.yield方法
D.wait方法
ABD
本题考查线程的状态。
可以使线程进入阻塞状态的方式有:
1).sleep方法
2).wait方法
3).IO等待
4).同步代码块,synchronized(Object
obj){}
12.
下列属于线程安全的类的是:
A.StringBuffer
B.Vector
C.HashMap
D.ArrayList
AB
本题考查Java中实现了线程体同步的API,其中,
1).StringBuffer
是同步的
StringBuilder
不是同步的
2).Vector
和
Hashtable
ArrayList
HashMap
13.下列代码说法正确的是:
DaemonThread
Thread{
DaemonThread(String
name){
super(name);
run()
while
(true)
Daemon
thread
running..."
dt
DaemonThread("
dtThread"
dt.setDaemon(true);
dt.start();
A.名为dtThread的线程为守护线程
B.运行上述代码,main
线程一退出,则虚拟机退出
C.运行上述代码,程序会一直跑下去,因为main线程结束了,但dt线程是一个无限循环,还没有结束,虚拟机不能退出
D.main线程是守护线程
本题考查守护线程。
守护线程也称后台线程、
精灵线程。
使用Thread类的setDaemon方法,可以设置某线程为守护线程。
当前所有前台线程都结束时,
Java进程结束后台线程,
不管是否结束,
都被停掉!
14.在下列选项中,创建和启动线程的方式正确的是:
Thread()
start()
doStuff();
.run();
.start();
Thread(new
Runnable()
).run();
}).start();
本题考查创建线程的方式。
创建线程的方式有两种,一种方式是继承Thread类
其创建过程如下:
1)继承自Thread类,
覆盖run()方法,
提供并发运行的过程。
2)
创建这个类的实例。
3)使用start()
方法启动线程。
另一方式为实现Runnable接口,其创建过程如下:
1).实现Runnable接口,
实现run()方法,
2).
创建这个类的实例,
用这个实例作为Thread构造器参数创建Thread类。
使用start()
15.下列代码编译和运行的结果是:
Threads5
bar"
B.抛出运行时异常
C.输出:
bar
D.代码正常运行,但是无输出
本题考查线程在内部类中的应用。
本题中使用内部类的形式创建线程,该用法是正确的,程序可以正常运行输出字符串“bar”。
16.下列代码编译和运行的结果是:
TestOne
Thread.sleep(3000);
sleep"
sleep
本题考查Thread类的sleep方法。
Thread.sleep(times)
使当前线程从
Running状态
放弃处理器进入Block状态,
休眠times毫秒,
再返回到Runnable状态,
如果被其他线程打断当前线程的休眠阻塞,
就会发生InterruptedException.
本题中线程休眠3秒后,重新回到Runnable状态,然后,被调度执行进入Running状态,输出“sleep”。
17.请看下列代码:
ThreadDemo
implements
Runnable{
age=0;
synchronized
run(){
for(int
i=0;
i<
100;
i++){
age="
+(age++));
下列构造线程对象的方式中,两个线程共用一个age数据的是:
A.ThreadDemo
r1=new
ThreadDemo();
r2=new
B.Thread
t1=new
Thread();
Thread
t2=new
C.ThreadDemo
Thread(r1);
D.ThreadDemo
Thread(r2);
本题考查多线程。
本题中若要两个线程共用一个age数据,也就是两个线程共用一个目标对象,即Runnable的引用。
本题中C选项使用了同一个目标对象r1。
18.下列选项中关于synchronized的使用正确的是:
A.private
Object
o;
B.void
go()
synchronized()
/*
here
*/
C.public
D.private
synchronized(this)
本题考查synchronized的使用
多个线程并发读写同一个临界资源时候会发生线程安全问题,可以使用同步代码块实现同步读写临界资源,
解决并发安全问题.
a.
同步代码块
synchronized(同步监视器){...
同步监视器
是一个任意对象实例,是一个多个线程之间的互斥的锁机制,
多个线程要使用同一个"
监视器"
实现同步互斥.常见写法为
synchronized(this){
...
b.如果方法的全部过程需要同步,
可以简单使用synchronized
修饰方法,
例如选项C的用法。
19.
下列属于传输层协议的是:
A.TCP
B.UDP
C.HTTP
D.SMTP
本题考查通信协议,其中,TCP
协议和UDP协议属于传输层协议;
HTTP协议和SMTP属于应用层协议。
20.下面关于ServerSocket描述正确的是:
A.ServerSocket类实现了服务器端的套接字
B.ServerSocket类的accept()方法侦听并接收到客户端套接字
C.一个服务器端只能有一个客户端进行连接
D.一个服务器端可以有多个客户端进行连接
本题考查Socket编程。
C选项说法错误,一个服务器端可以有多个客户端进行连接。
21.在实体引用中表示“>
”的是:
A.&
lt;
B.&
gt;
C.#qut;
D.#at;
本题考查XML中的实体引用。
XML实体引用介绍如下:
实体引用
字符
说明
&
<
小于
>
大于
amp;
与符号
apos;
‘
单引号
quot;
“
双引号
nbsp;
空格
22.某新闻网站新闻量较大,并且新闻需要被即时发布。
该网站可以通过各种浏览器和手持设备访问。
网站后台是一个基于xml的应用系统,该系统把数据库中数据读取到xml文档中,并使用DOM进行解析。
下列建议中,可以提高后台应用系统的性能,从而提高该网站的性能的是:
A.把xml文档转化成html网页
B.使用SAX解析xml文档
C.不经解析,把xml文档直接发送给浏览器
D.将XML文档转成图片进行发送
本题考查XML解析。
XML解析的方式有DOM解析和SAX解析,其中,DOM(Document
Model
文档对象