注释
1. (单选题)下面是文档注释的是
A./** */
B.//
C./* */
D.// */
[正确答案] A
[答案解析]此题目考查的是注释的了解A选项是文档注释BC是普通的注释D选项格式错误,因此A是正确的选项。
2. (多选题)下列文档注释规范说明正确的是
A. @author Lee Boynton代表作者
B. @version 1.2.1代表版本号
C @see importjava. uilray:代表参见
D. @since JDK1.8代表JDK版本
[正确答案] A.B.C.D
[答案解析]此题目考查的是文档注释的规范以上选项均正确。因此ABCD是正确的选项。
3. (多选题)有关javaloc命令生成文档叙述正确的是
A如果是一个包命令 为javadoc -d docDir nameOfPackage
B如果是一个包命令为javadoc -d docDir nameOfPackages
C.如果文件在默认包中命令为javadoc -d docDir *java
D.如果文件在默认包中命令为javadoc -d docDir *javac
[正确答案] A.C
[答案解析]此题目考查的是javadoc命令生成文档的了解,BD语法错误AC均正确。因此AC是正确的选项。
字符串操作
1、(单选题)Java语言中,String类的charAt0方法返回的类型是
A.int
B.char
C.double
D.float
【正确答案】B
【答案解析】此题目考查的是String类的charAt()方法返回的类型,返回值类型是char类型,此B是正确的选项。
2、(单选陋)关于java.lang.String类,以下描述正确的一项是
A.String类是final类故不可以继承
B.String类是 final类故可以继承
C.String类不是 final 类故不可以继承
D.String类不是final类故可以继承
[正确答案】A
【答案解析】String类是final的,在java中final修饰的类不能被继承。
3、(单选题)已知如下代码:
String s ="Example";
下列选项中可以编译通过的是
A.s>>>=3;
B.s[3]=“X";
C.int i = s.length;
D.s = s +10;
【正确答案】D
【答案解析】选项A中移位运算需要整数类型才可以;选项B 中s不是数组,数组才有length属性,字符串只有length()方法;选项C中 String类有length()方法而不是属性;选项D中属于字符串拼接操作。
4、(单选题)以下代码的执行结果是
public class Base{
private void test{
System.out.println(6+ 6+ "(Result)"");
}
static public void main(String[] a) {
new Base().test();
}
}
A.66(Result)
B.12(Result)
C.运行时出错。不能将一个int转成一个String。
D.Compilation Error.Incompatible type for +.Can't add a string to an int.运行时出错。不能将一个String与一个int相加。
【正确答案】B
【答案解析】字符串与基本数据类型连接的问题如果第一个是字符串那么后续就都按字符串处理,比如上边例子要是System.out.println(Result)"+6+6;那么结果就是(Result)66,如果第一个和第二个....第n个都是基本数据第n+1是字符串类型,那么前n个都按加法计算出结果在与字符串连接。
5、 (单选题)以下代码编译运行的结果是()。
public class Base{
private void test() {
String aStr= "? One? ";
String bStr = aStr;
aStr.toUpperCase();
aStr.trim();
System.out.println("[" + aStr+ "," + bStr+ "]");
static public void main(String[] a) {
new Base().test();
}
}
A.[ONE,?One?]
B.[? One? ,One]
C.[ONE,ONE]
D.[?One?,?One?]
【正确答案】D
【答案解析】通过String bStr = aStr;这句代码使bStr和aStr指向同一个地址空间,所以最后aStr和bStr的结果应该是一样,String 类是定长字符串,调用一个字符串的方法以后会形成一个新的字符串。在调用toUpperCase0和trim0方法时都会返回新的字符串对象,而题目中在调用完这两个方法后并没有使用变量接收方法所返回的新字符串对象,而aStr和bStr所引用的仍然是原来的字符串对象。
所以选项D正确。
6、(单选题)正则表达式""\d+\.?id{1,2]"在匹配下列字符串时结果失败的是〔
A."12.5"
B."1.025"
C."0125"
D."125.00
【正确答案】D
【笞案解析】\d+表示可以出现1次或是n次数字,\.?表示"."可以出现1次,也可以不出现,\d{1.2}表示最少出现1次最多出现次数字。
7、(单选题)指出下列程运行的结果()
public class Example{
String str=new String(" good");
char[]ch={'a','b','c'};
public static void main(String args[]){
Example ex=new Example0;
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
[正确答案] B
[答案解析]引用类型变量保存的是对象的地址,一个对象可以同时被多个变量所引用,并且操作,一个变量只能引用一个对象,对一个对象进行操作。
8、(单选题)下面代码的运行结果为: ()
public class foo{
static String s;
public static void main (String[] args){
System.out.printIn("s="+ s);
}
}
A.输出结果为"s="
B.输出结果为"s=null"
C.编译错误,因为s没有初始化
D.编译错误,因为s没有被定义
[正确答案] B
[答案解析]String为引用数据类型,引用类型数据成员的默认值为null。
9、(单选题)下面代码的运行结果为:
public class foo{
public static void main (String[ args){
String s;
System.out.printIn("s="+ s);
}
}
A.代码得到编译,并输出"s="
B.代码得到编译,并输出"s=null"
C.由于String s没有初始化,代码不能编译通过
D.代码得到编译,但捕获到NullPointException异常
[正确答案] C
[答案解析] Java中所有定义的基本类型或对象都必须初始化才能输出值。
10、(单选题)System.out.println("5" + 2);的输出结果应该是() 。
A.52
B.7
C.2
D.5
[正确答案] A
[答案解析]因为5是字符串类型的不会和2进行+运算,会进行拼接。
11、(单选题)以下代码的输出结果是()
public class Test {
public static void main(String[] args) {
String str = NULL;
System.out.println(str);
}
A.NULL
B.代码不能通过编译
C.没有输出结果
D.运行时出错
[正确答案] B
[答案解析] String类型变量取值应为小写null或其他用双引号""括起来的内容。
12、(单选题)下面代码的打印结果是
Strings1=" abc";
String s2="abc";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
A.true,true
B.true,false
C.false, false .
D.false,ture
[正确答案] A
[答案解析]
此题目考查的是对于java常量池的理解,java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时, 就可以从池中取个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,常量池存在于方法区中。根据代码顺序,先在常量池中创建”abc”,并指向s1,而后在创建s2时,由于常量池中已经存在”abc”,只需指向s2就可以,而不需要再创建。
”==” 在这里比较的是对象引用,故结果为”true" ,String 中的equals方法经过重写后操作为“比较此字符串与指定的对象。当且仅当该参数不为null,并且是表示与此对象相同的字符序列的String对象时,结果才为true”。很明显,s1和s2的字符序列相同,故而结果为true。因此A是正确的选项。
Object类
1. (单选题判断两个字符串的内容是否相同,下面哪个选项正确()
A.==
B.=
C.equals ()
D.以上的都不对
[正确答案] C
[答案解析] equals ()方法用来判断字符串的内容是否相同==用来比较字符串对象的地址是否相同=用来赋值。
2、(多选题)以下关于hashCode说法正确的是 ()
A.两个对象如果hashCode值不同,则两个对象可能相同。
B.两个对象如果hashCode值相同,则两个对象必定相同。
C.两个对象如果hashCode值相同,则两个对象可能相同。
D.两个对象如果hashCode值不同,则两个对象必定不同。
[正确答案] C,D
[答案解析]先通过hashcode来判断某个对象是否存放某个桶里,但这个桶里可能有很多对象,那么我们就需要再通过equals来在这个桶里找到我们要的对象。
File
1、(单选题)在Java中,"目录"被看作是
A.文件
B.流
C.数据
D.接口
【正确答案】A
【答案解析】目录在java中作为一种特殊文件,即文件名的列表,通过类File所提供的方法,可得到文件或目录的描述信息(包括名字、路径、长度、可读可写等),也可以生成新文件、目录、修改文件和目录,查询文件属性,重命名文件或者删除文件。
IO
1、(单选题)计算机中的流是0
A.流动的字节
B.流动的对象
C.流动的文件
D.流动的数据缓冲区
【正确答案】D
【答案解析】流,最早从C语言中引入的。其可以看成是一个流动的数据缓冲区。数据从数据源方向经过缓冲区流向数据的目的地。在传送的过程中,其传送方式是串行的。在java中的java.io包中定义了Java中常见流的接口与类。其中包括两个最基本的流的抽象类,它们分别是OutputStream与InputStream。其余的流都分别从这两个基本类中继承而来。
2、(单选题)Java l/O程序设计中,下列描述正确的是( )
A.OutputStream用于写操作
B.lnputStream用于写操作
C.I/O库不支持对文件可读可写API
D.InputStream是一个接口
【正确答案】A
【答案解析】B选项中lnputStream用于读操作; C选项中I/O支持对文件的读写;D选项中InputStream是一个抽象类。
3、(单选题)下面哪个流类属于面向字符的输入流()
A.ByteArraylnputStream
B.FilelnputStream
C.objectInputStream
D.InputStreamReader
[正确答案】D
【答案解析】A、B、C 3个都是字节流
4、(单选题)FilterOutputStream是BufferedOutputStream、DataOutputStream及PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数类型()
A.OutputStream
B.File
C.lnputStream
D.BufferedOutputStream
[正确答案】A
异常处理
1、(单选题)下列不是异常体系中Exception类包括的异常类的有( )
A.Error
B.NullPointerException
C.SQLException
D.InputMismathException
【正确答案】A
【答案解析】一个程序在编译和运行时出现的错误我们统一称之为异常;一个合理的应用程序不能截获的严重的问题属于错误。
2、(单选题)下面关于java.lang.Exception类的说法正确的是О
A.继承自Throwable
B.继承自Serialable
C.继承自Error
D.以上说法均不正确
【正确答案】A
【答案解析】Java异常的基类为java.lang.Throwable, java.lang,.Error和java.lang.Exception继承Throwable, RuntimeException和其它的Exception等继承Exception。
3、(单选题)下列哪种异常是检查型异常,需要在编写程序时声明()
A.NullPointerException
B.ClassCastException
C.FileNotFoundException
D.lndexOutOfBoundsException
【正确答案】C
【答案解析】A、B、D3个异常都属于运行时异常。
4、(单选题)下列选项中可以填写在'Point X'"处的是
public class ExceptionTest {
class TestException extends Exception {}
public void runTest 0 throws TestException {}
public void test () /* Point X*/{
runTest ();
}
}
A.throws TestException
B.catch (Exception e)
C.throws RuntimeException.
D.catch (TestException e)
【正确答案】A
【答案解析】方法上应使用throws.抛出异常,test()方法中执行调用了runTest()方法,而runTest()方法抛出的是TestException异常,所以A符合要求。
5、(单选题)getCustomerlnfo(方法如下,try中可以捕获三种类型的异常,如果在该方法运行中产生了一个lOException,将会输出什么结果()
public void getCustomerlnfo() {
try {
//do something that may cause an Exception
} catch (java.io.FileNotFounclException ex) {
System.out.print("FileNotFoundException!");
} catch (java.io.lOException ex){
System.out.print("IOException!");
} catch (java.lang.Exception ex){
System.out.print("Exception!");
}
}
A.IOException!
B.IOException!Exception!
C.FileNotFoundException!IOException!
D.FileNotFoundException!IOException!Exception!
【正确答案】A
【答案解析】
考察多个catch语句块的执行顺序。当用多个catch语句时,catch语句块在次序上有先后之分。从最前面的catch语句块依次先后进行异常类型匹配,这样如果父异常在子异常类之前,那么首先匹配的将是父异常类,子异常类将不会获得匹配的机会,也即子异常类型所在的catch语句块将是不可到达的语句。所以,一般将父类异常类即Exception老大放在catch语句块的最后一个。
6、(多选题)final、finally. finalize三个关键字的区别是( )
A.final是修饰符(关键字)可以修饰类、方法、变量
B.finally在异常处理的时候使用,提供finally块来执行任何清除操作
C.finalize是方法名,在垃圾收入集器将对象从内存中清除出去之前做必要的清理工作
D.finally和finalize—样都是用异常处理的方法
【正确答案】A,B,C
【答案解析】对于选项D,finally是关键字不是方法。
7、(多选题)关于异常(Exception),下列描述正确的是( )
A.异常的基类为Exception,所有异常都必须直接或者间接继承它
B.异常可以用try{. . .}catch(Exception e){.. .}来捕获并进行处理
C.如果某异常继承 RuntimeException,则该异常可以不被声明
D.异常可以随便处理,而不是抛给外层的程序进行处理
【正确答案】A,B,C
【答案解析】对于选项D,异常可以在自己方法内部处理,当自己无法解决时,需要抛出给调用者来处理。
线程
1、(单选题)下列程序的功能是在控制台上,每隔1秒钟显示宇符串"Hello",能够填写在程序中下划线位置,使程序完整,并能够正确运行的语句是()
public class Test implements Runnable{
public static void main(String[] args){
Test t=new Test();
Thread tt=new Thread(t);
tt.start();
}
public void run(){
for(;;){
try{
______
}catch(______e){}
System.out.println( "Hello”);
}
}
}
A.Thread.sleep (1000) InterruptedException
B.sleep (1000) InterruptedException
C.t. sleep (1000) InterruptedException
D.Thread. sleep (1000)RuntimeException
【正确答案】A
【答案解析】睡眠需要使用Thread的sleep方法,传入参数为一个long类型毫秒值,本题中要求间隔时间为1秒,所以需要传入1000毫秒作为参数。打断睡眠程序会抛出InterruptedException异常。
2、(单选题)关于sleep()和wait(),以下描述错误的一项是()
A.sleep 是线程类(Thread)的方法,wait是 Object 类的方法
B.sleep不释放对象锁,wait放弃对象锁
C.sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
D.wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态
【正确答案】D
【答案解析】
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
3、(单选题)以下哪个方法用于定义线程的执行体()
A.start()
B.init()
c.run()
D.main()
【正确答案】C
【答案解析】run方法是线程的执行体。
4、(单选题)以下哪一个是错误的()
A.public synchronized void go() {
/* code here */
}
B.private synchronized(this) void go() {
/*code here */
}
C. void go() {
Object o = new Object();
synchronized(o) {
/*code here */
}
D.synchronized(Object.class) {
/* code here*/
}
【正确答案】B
【答案解析】如果在方法声明时给该方法加锁,只需要使用synchronized关键字来修饰该方法即可,不需要传入任何对象。只有在方法内部的某些代码块中才需要传入对象参数。
5、(单选题)请选出正确的—项()
1. public class ThreadTest {
2. public static void main (String[] args){
3. new Thread(new Runnable() {
4. public void run() {
5. System.out.print("bar");
6. }}).start();
7. }
8.}
A.Compilation fails.
B.An exception is thrown at runtime.
C.The code executes normally, but nothing prints.
D.The code executes normally and prints "bar".
【正确答案】D
【答案解析】此段代码使用的是匿名类的写法,线程执行时,所执行的内容是其执行计划中的内容,也就是run方法中所定义的逻辑。
6、(单选题)下面程序的运行结果:()
public static void main(String args[ ]) {
Thread t = new Thread(){
public void run() {
pong():
}
}
t.run();
System.out.print("ping");
}
static void pong(){
System.out.print("pong");
}
A.pingpong
B.pongping
C.pingpong和pongping都有可能
D.都不输出
【正确答案】B
【答案解析】
这里考的是Thread类中start()和run()方法的区别了。start()用来启动一个线程。当调用start()方法后,系统才会开启一个新的线程,进而调用run()方法来执行任务,而单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。因此在启动一个线程的时候一定要使用start()而不是run()。
7、(单选题)关于线程设计,下列描述正确的是()
A.线程对象必须实现 Runnable接口
B.启动一个线程直接调用线程对象的run()方法
C.Java提供对多线程同步提供语言级的支持
D.一个线程可以包含多个进程
[正确答案】C
【答案解析】A选项中,线程对象可以实现Runnable接口,也可以继承Thread;B选项中,启动线程需要调用start()方法;选项D中,一个进程可以包含多个线程。
8、(单选题)请选择正确的一项()
1. public class Threads3 implements Runnable {
2. public void run() {
3. System.out.print("running");
4.}
5.public static void main(Stringlargs){
6. Thread t = new Thread(new Threads30);
7. t.run():
8. t.run();
9. t.start();
10. }
11.}
A.The code executes and prints "runningrunning".
B.The code executes and prints "runningrunningrunning".
C.The code executes and prints "running".
D.An exception is thrown at runtime.
【正确答案】B
【答案解析】
在执行t.start();之前所执行的两个t.run();只是单纯的通过虚拟机进行调用该方法,t.start()执行后会将该钱程置于就绪状态,等待系统分配时间片段给该线程去执行线程任务。
9、(单选题)代码执行后输出的结果是()
public class Zi{
public static void main(String[] args){
new Z();
}
Z(){
Zalias1 = this;
Z alias2 = this;
synchronized (alias1){
try{
alias2.wait();
System.out.println("DONE WAITING");
}catch (InterruptedException e){
System.out.println("IN TEEEUPTED"):
}catch (Exception e) {
System.out.println("OTHER EXCEPTION");
} finally {
System.out.println("FINALLY");
}
}
System.out.println("ALL DONE"");
}
}
A.The application compiles but doesn't print anything.
B.The application compiles and print "DONE WAITING".
C.The application compiles and print "FINALLY ".
D.The application compiles and print "ALL DONE ".
[正确答案】A
【答案解析】
wait方法和sleep方法很类以,都是处于等待状态,但是不同的是,wait方法执行后会释放锁对象,所以此段代码中wait方法后面的语句不会被执行,而是一直处于等待状态中。
10、(单选题)方法resume0负责恢复哪些线程的执行(
A.通过调用stop()方法而停止的线程。
B.通过调用sleep()方法而停止的线程。
C.通过调用wait()方法而停止的线程。
D.通过调用suspend()方法而停止的线程。
[正确答案】D
【答案解析】
suspend可以挂起一个线程,就是把这个线程暂停了,它占着资源,但不运行,用resume是恢复挂起的线程,让这个线程继续执行下去。
11、(多选题)有关线程的哪些叙述是对的()
A.—旦一个线程被创建,它就立即开始运行。
B.使用start()方法可以使一个线程成为可运行的,但是它不—定立即开始运行。
C.当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。
D.一个线程可能因为不同的原因停止并进入就绪状态。
【正确答案】B.D
【答案解析】
线程被创建后不可能立即开始运行。不同优先级的线程间是抢先式的,同级线程间是轮转式的。即使线程因为抢先而停止也不一定就进入可运行队列的前面。而同级线程是轮换式的,它的运行可能就是因为轮换,而它因抢占而停止后只能在轮换队列中排队而不能排在前面。
12、(多选题)下面能让线程停止执行的有()
A.sleep();
B.stop();
C.notify();
D.wait();
【正确答案】A.B,D
【答案解析】
sleep:导致此线程暂停执行指定时间; stop:这个方法将终止所有未结束的方法,包括run方法; wait:当前正在被服务的线程需要睡一会,醒来后继续被服务。
包装类
1.(单选题)下面代码的执行结果是()
public class ShortSet{
Set<Short> s =new HashSet<Short>();
for(Short i=0;i<100;i++){
s.add(i);
s.remove(i-1);
}
System.out.println(s.size());
}
}
A.1
B.100
C.Throws Exception
D.None of the Above
【正确答案】B
【答案解析】i是Short类型,i-1是int类型,其包装类为Integer,所以s.remove(i-1);不能移除Set集合中的Short类型对象。
RandomAccessFile
1、(单选题)RandomAccessFile是java.io包中的一个兼有输入输出功能的类。以下说法正确的是O
)A.可以选择文件中的任意位置开始操作
B.必须从文件中的终止位置开始操作
)C.必须从文件中的起始位置开始操作D.必须从文件中的某个固定位置开始操作
【正确答案】A
【答案解析】
文件操作中经常需要的是随机访问,Java中的RandomAccessFle类提供了随意访问文件的功能,它继承了Object类,用Datalnput和DataOutput接口来实现。接口中定义了从流中读/写基本类型的数据方法,因此也可以随意读/写数据文件的记录。
集合框架
1、(单选题)关于集合类以下说法错误的是()
A.Vector是线程安全的
B.ArrayList是线程安全的
C.HashMap中可以存放null值作为key
D.Set中存放的对象是唯—的
【正确答案】B
【答案解析】Vector是线程安全的,ArrayList不是线程安全的。
2、(单选题)Java的集合框架中重要的接口java.util.Collection定义了许多方法。选项中哪个方法不是Collection接口所定义的()
A.int size()
B.boolean containsAll(Collection c)
C.int compareTo(Object obj)
D.boolean equals(Object o);
【正确答案】C
【答案解析】int compareTo(Object obj)属于Comparable接口,其他属于Collection接口。
3、(单选题)欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的()
A.ArrayList myList = new Object();
B.List myList = new ArrayList();
C.ArrayList myList = new List();
D.List myList = new List();
【正确答案】B
【答案解析】接口不能new,Object对象不能直接转型成ArrayList类型。
4、(单选题)下面哪个是链式存储井快速顺序(不需要随机访问)访问的集合类型()
A.java.util.LinkedList
B.java.util.Queue
C.java.util.ArrayList
D.java.util.LinearList
【正确答案】B
【答案解析】请参考集合队列的结构特点及元素的存取。
5.(单选题)下面代码的执行结果是()
public class ShortSet{
Set<Short> s =new HashSet<Short>();
for(Short i=0;i<100;i++){
s.add(i);
s.remove(i-1);
}
System.out.println(s.size());
}
}
A.1
B.100
C.Throws Exception
D.None of the Above
【正确答案】B
【答案解析】 i是Short类型,i-1是int类型,其包装类为Integer,所以s.remove(i-1);不能移除Set集合中的Short类型对象。
6、(单选题)关于以下代码描述正确的有()
public class Cats {
public static void main(String args[]){
List<Cat> cats = new ArrayList<Cat>();
cats.add(new Cat());
Animal b = new Animal();
Cat a = null;
if(b instanceof Animal)
a = (Cat)b;
if(a != null)
cats.add(a);
System.out.printIn(cats.size() +"cats");
}
}
class Animal {}
class Cat extends Animal{}
A..编译失败
B.输出1 cats
C.输出2 cats
D.运行时抛出异常
【正确答案】D
【答案解析】a =(Cat)b;处抛出java.lang.ClassCastException异常,b为Animal类型,并且具体引用对象是Animal对象,不能强转成Cat类型。
7、(单选题)如果要保证元素唯—一,且按照存放顺序读取,可以选用()
A.Map
B.Set
C.LinkedList
D.LinkedHashSet
【正确答案】D
【答案解析】请参考集合结构特点及元素存取。
8、(单选题)请选出下列正确的答案()
1. import java.util.*;
2. public class WrappedString {3. private String s;
4.public WrappedString(String s) { this.s = s; }5. public static void main(String[] args){
6.HashSet<Object> hs = new HashSet<Object> 0;
7.WrappedString ws1 = new WrappedString("aardvark");
8.WrappedString ws2 = new WrappedString("aardvark");
9.String s1 = new String("aardvark");
10.String s2 = new String("aardvark");
11.hs.add(ws1); hs.add(ws2); hs.add(s1); hs.add(s2);
12. System.out.println(hs.sizeO); }}
A.1
B.4
C.2
D.3
【正确答案】D
【答案解析】
HashSet集合里面存储的元素是无序的且不重复的,本题中的是s1和s2两个对象在底层判断时返回的相关信息被视为相同元素,所以最终结果集台中值有3个元素。
9、(单选题)以下哪个不是Collection的子接口
A.List
B.Set
C.Map
D.SortedSet
【正确答案】c
【答案解析】Map与Collection是两个不同的接口,没有继承关系。
10、(多选题)链表是有的特点是()
A.不必事先估计存储空间
B.可随机访问任—元素
C.插入删除不需要移动元素
D.所需空间与线性表长度成正比
【正确答案】A,C,D
【答案解析】A.采用动态存储分配,不会造成内存浪费和溢出。B.不能随机访问,查找时要从头指针开始遍历
C.插入、删除时,只要找到对应前驱结点,修改指针即可,无需移动元素D.需要用额外空间存储线性表的关系,存储密度小。
11、(多选题)关于Java语言,下列描述正确的是()
A.switch不能够作用在String类型上
B.List, Set,Map都继承自Collection接口
C.Java语言支持goto语句
D.GC是垃圾收集器,程序员不用担心内存管理
【正确答案】A,D
【答案解析】B.List,set有继承Collection接口,但Map没有继承Collection接口;C. java不支持goto语句。
12、(多选题)以下集合对象中哪几个是线程安全的()
A.LinkedList
B.ArrayList
c.Vector
D.Hashtable
【正确答案】C,D
【答案解析】
Collection是对象集合,Collection有两个子接口List和Set,
List可以通过下标(1,2..)来取得值,值可以重复,而Set只能通过游标来取值,并且值是不能重复的
ArrayList , Vector , LinkedList是List的实现类
ArrayList是线程不安全的,Vector是线程安全的,这两个类底层都是由数组实现的
LinkedList是线程不安全的,底层是由链表实现的
Map是键值对集合
HashTable和HashMap是Map的实现类HashTable是线程安全的,不能存储null值
HashMap 不是线程安全的,可以存储null值
二进制
1、(单选题)下列四个不同进制的数中,最大的是()
A.二进制数0100 1111
B.八进制数120
C.十六进制数4F
D.十进制数79
【正确答案】B
【答案解析】
本题中比较各种进制数值大小可以都先转成十进制进行比较比较直观
A选项二进制0100 1111计算为0*O+1*64+0*O+0*O+1*8+1*4+1*2+1*1=79(十)
B选项八进制120计算为1*64+2*8+0*0=80(十)
C选项十六进制4F可以先转为二进制数
4(十六)对应0100(二)F(十六)对应1111(=)即0100 1111(二)
计算过程与结果与A选项结果相同。
D选项结果就是79。
所以ACD结果都是79B选项结果为80故答案为B
2、(单选题)计算二进制1100^1010的结果是()
A.1000
B.1110
C.0110
D.0000
【正确答案】C
【答案解析】
^属于二进制位运算符代表异或的意思运算时两个二进制数对应位的数不同时结果为1否则为0所以1100^1010的结果应该是0110。所以答案C正确。
3、(单选题)二进制数(0011 1101)转换成十六进制数是()
A.3C
B.3D
C.E1
D.F1
【正确答案】B
【答案解析】
十六进制是由4位二进制组成的,进制的转换是不影响数制的,因此转换的时候应该是把二进制数从右往左来计算,每4位来组合成一个十六进制数,每4位数字都按照8421的格式编码,然后累加求和就是对应的十六进制数,因此,二进制数划分为:11 1101,前两位按照8421排码加和为2+1=3,后四位按照8421排码加和为8+4+1=13=D,组合在一起就是3D,因此B正确。
4、(单选题)二进制数1001 0010对应的八进制数是()
A.146
B.222
C.116
D.以上都不对
【正确答案】B
【答案解析】
八进制转二进制只需要从低位到高位顺序每3位分为—组然后将每组的十进制数算出再将所有十进制数按顺序拼接起来即可。
因为八进制数每—位的最大值为7永远不会出现大于7的数字
而4位二进制数的最大值也为7最高位是0所以可以使用3位二进制数算出1位八进制数
所以本题中二进制数10010010被分为3位一组的话结果是010010010最高位的0是为了达到3位一组的效果而加上去的也可以不加这样分组后每组对应的十进制数分别为222所以八进制数就是222,故答案B正确。
5、(单选题)存储一个24X24点阵的汉字(每个点1bit),需要多少字节()
A.24
B.48
C.72
D.144
【正确答案】C
【答案解析】24*24/8=72。意思是:24*24的结果是二进制位,而八个二进制位等于一个字节,所以再除以八是所得的字节数。
6、(单选题)若x=2,y=3则x&y的结果是()
A.0
B.2
C.3
D.5
【正确答案】B
【答案解析】
2对应的二进制为10,3对应的二进制为11,&运算的规则是数位都为1则是1,只要有一个数的当前数位是0则结果为0,所以2&3 ==10&.11,则对应的结果为10,转换成十进制就是数字2,因此B正确。
7、(单选题)计算~36的十进制结果是()
A.36
B.-36
C.37
D.-37
【正确答案】D
【答案解析】
~属于二进制位运算符代表非的意思计算方法为将每—位上0变为11变为0
本题中要计算的是十进制数36的非运算值。
首先先将36(十)转为0010 0100(二)然后进行运算得到结果1101 1011(二)然后再将此二进制数转为十进制。由于我们这里计算的是8位二进制数最高位为第8位此时最高位数字为1是—个负数。
要想算出十进制负数的值可以进行取反+1运算先算出对应的十进制正数的值即11011011取反+1后变为0010 0101则对应的十进制数为37,所以最终~36的结果应该是-37,答案为D
8、(单选题)二进制数(0001 1011)转成十进制数是()
A.25
B.26
C.27
D.28
【正确答案】C
【答案解析】
二进制数是用O和1表示的一组数字,二进制数每一位实际代表的数是当前位上的数字乘以当前位的位权,每一位的位权是2的n次幂,n是数字是从右往左数第几位,计数的时候是从O开始数。所以2^4+2^3+2^1+2^O=16+8+2+1=27,所以C正确。
9、(单选题)每四位二进制数可用()位十六进制数表示
A.1
B.2
C.3
D.4
【正确答案】A
【答案解析】每位十六进制数是需要四位二进制数来表示,因此四位二进制则是对应一位十六进制数,因此A正确。
10、(单选题)十六进制数7F对应的十进制数是多少()
A.128
B.-128
C.127
D.-127
【正确答案】C
【答案解析】十六进制数7F可以先转为对应的二进制数。
7(十六)对应0111(二)
F(十六)对应1111(二)
所以4F(十六)对应01111111 (二)再转为十进制计算为
0*128+1*64+1*32+1*16+1*8+1*4+1*2+1*1=127所以答案选C
11、(单选题)阅读下列代码∶
public class Test{
public static void main(String args[){
System.out.printIn(89 > >1);
}
}
其运行结果是()
A.44
B.45
C.88
D.90
【正确答案】A
【答案解析】89>>1相当于89/2取整。
12、(单选题)在位运算中,操作数每左移一位,其结果相当于()
A..操作数乘以2
B.操作数除以2
C.操作数除以4
D.操作数乘以4
【正确答案】A
【答案解析】二进制数左移一位相当于数位上的数值乘以2,右移一位相当于数位上的数值除以2,因此A正确。
13、(单选题)在位运算中,操作数每右移一位,其结果相当于()
A.操作数乘以2
B.操作数除以2
C.操作数除以4
D.操作数乘以4
【正确答案】B
【答案解析】二进制数左移一位相当于数位上的数值乘以2,右移一位相当于数位上的数值除以2,因此B正确。
14、(单选题)关于运算符>>和>>>描述正确的是()
A.>>执行移动
B.>>执行翻转
C.> >执行有符号右移,>>>执行无符号右移
D.>>执行无符号右移,>>>执行有符号右移
【正确答案】C
【答案解析】java中,>>为有符号右移,>>>为无符号右移,<<为有符号左移,不存在无符号左移运算符。
15、(多选题)已知如下代码片段:
1.public class test {
2. public static void main (String[] args){
3. int i = OxFFFFFFF1;
4. int j = ~i;
5.
6.}
7.}
当程序运行到第5行时,i和j的值分别为多少()
A.-15
B.0
C.1
D.14
【正确答案】A,D
【答案解析】
OxFFFFFFF1为十六进制数,其转为二进制数为11111111 11111111 11111111 11110001 ,所对应的十进制数为-15 (原码为11110001,反码为00001110,补码为00001111),"~"符号为取反操作,即将0、1对换,结果为00000000 00000000 00000000 00001110 ,该二进制数转为十进制数结果为14。
API
1、(多选题)下列代码中,哪—项可以编译通过且正常运行出结果()
A.int foo = (int) Math.max(bar);
B.int foo = (int) Math.min(bar);
C.int foo = (int) Math.abs(bar);
D.int foo = (int)Math.ceil(bar);
【正确答案】C,D
【答案解析】
AB两个选项方法使用错误,都是两个参数。abs方法是取bar 的绝对值,ceil方法返回大于或者等于指定表达式的最小整数,即向上取整,本题中该值大于等于参数bar。例如∶Math.ceil(5.6)//6Math.ceil(-5.6)//-5
MAP
1、(单选题)以下哪个不是Collection的子接口?()。
A.List
B.Set
C.Map
D.SortedSet
【正确答案】C
【答案解析】Map与Collection是两个不同的接口,没有继承关系。
2、(单选题)HashSet子类依靠()方法区分重复元素。
A.toString().equals0
B.clone(),equals()
C.hashCode(),equals())
D.getClass(),clone()
【正确答案】C
【答案解析】
HashSet内部使用Map保存数据,即将HashSet的数据作为Map的key值保存,这也是HashSet中元素不能重复的原因。而Map中保存key值前,会去判断当前Map中是否含有该key对象,内部是先通过key的hashCode,确定有相同的hashCode之后,再通过equals方法判断是否相同。
3、(单选题)关于集合类以下说法错误的是()
A.Vector是线程安全的
B.ArrayList是线程安全的
C.HashMap中可以存放null值作为key
D.Set中存放的对象是唯一的
【正确答案】B
【答案解析】ArrayList不是线程安全的