1.关键字()表明一个对象或变量的引用在初始化后不能被修改。
正确答案: B 你的答案: B (正确)
A.private
B.final
C.static
D.没有这种关键字
解释:
使用final关键字 修饰一个变量时,是指引用变量不能变 ,引用变量所指向的对象中的内容 还是可以改变的。
2.javac的作用是( )。
正确答案: A 你的答案: A (正确)
A.将源程序编译成字节码
B.将字节码编译成源程序
C.解释执行Java字节码
D.调试Java代码
解释:
javac 可以将java源文件编译为class字节码文件。
如 javac HelloWorld.java,运行javac命令后,如果成功编译没有错误的 话,会出现一个HelloWorld.class的文件。
java 可以运行class字节码文件。
如 java HelloWorld。注意java命令后面不要加.class
3.关于String、StringBuffer、StringBuilder以下说法错误的是
正确答案: C 你的答案: C (正确)
A.StringBuilder运行速度最快
B.StringBuffer是线程安全的
C.String的值是可变的
D.StringBuffer运行速度比String快
解释:
String是final修饰的,不可变
运行速度StringBuilder>StringBuffer>String
StringBuffer是线程安全的
Integer i = 42;
Long l = 42l;
Double d = 42.0;
下面为true的是
正确答案: G 你的答案: G (正确)
A.(i == l)
B.(i == d)
C.(l == d)
D.i.equals(d)
E.d.equals(l)
F.i.equals(l)
G.l.equals(42L)
解释:
1、基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,因此Integer(0)会自动拆箱为int类型再进行比较,显然返回true;int a = 220; Integer b = 220; System.out.println(a==b);//true
2、两个Integer类型进行“==”比较, 如果其值在-128至127 ,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关,这里不进行赘述。
Integer c=3; Integer h=3; Integer e=321; Integer f=321; System.out.println(c==h);//true System.out.println(e==f);//false
3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true。
Integer a=1; Integer b=2; Integer c=3; System.out.println(c.equals(a+b));//true
4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行3中的比较。
int i=1; int j = 2; Integer c=3; System.out.println(c.equals(i+j));//true
5.以下代码段执行后的输出结果为
public class Test {
public static void main(String args[]) {
int i = -5;
i = ++(i++);
System.out.println(i);
}
}
正确答案: C 你的答案: C (正确)
A.-7
B.-3
C.编译错误
D.-5
解释:
java中的i++和++i在java语言层面上来看使用中间量机制,i=i++,i不变,i=++i相当于++i,而结合在一个语句里使用则会报错,因为++后应该跟变量。同理,i=(++i)++也是不对的
6.下列说法正确的有( )
正确答案: A C D 你的答案: A C D (正确)
A.构造方法的方法名必须与类名相同
B.构造方法也没有返回值,但可以定义为void
C.在子类构造方法中调用父类的构造方法,super() 必须写在子类构造方法的第一行,否则编译不通过
D.一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个默认的构造方法,这个构造方法不执行任何代码
解释:
B:
如果写成public void 类名(){} 这种格式的话。此时就相当与你重新定义了一个函数,不能起到构造函数的作用,调用这个类的时候不能自动执行构造函数里的代码。
7.下列哪些情况下会导致线程中断或停止运行( )
正确答案: B 你的答案: A B D (错误)
A.InterruptedException异常被捕获
B.线程调用了wait方法
C.当前线程创建了一个新的线程
D.高优先级线程进入就绪状态
解释:
A选项正确,Java中一般通过interrupt方法中断线程
B选项正确,线程使用了wait方法,会强行打断当前操作,进入阻塞(暂停)状态,然后需要notify方法或notifyAll方法才能进入就绪状态
C选项错误,新创建的线程不会抢占时间片,只有等当前线程把时间片用完,其他线程才有资格拿到时间片去执行。
D选项错误,调度算法未必是剥夺式的,而准备就绪但是还没有获得CPU,它的权限更高只能说明它获得CPU被执行的几率更大而已
8.下面有关java classloader说法正确的是()?
正确答案: A C D 你的答案: A C D (正确)
A.ClassLoader就是用来动态加载class文件到内存当中用的
B.JVM在判定两个class是否相同时,只用判断类名相同即可,和类加载器无关
C.ClassLoader使用的是双亲委托模型来搜索类的
D.Java默认提供的三个ClassLoader是Boostrap ClassLoader,Extension ClassLoader,App ClassLoader
E.以上都不正确
解释:
JVM根据两个方面判断两个类是否相同:一是类的全称;另一个是类加载器.即使类的全称相同,而使用的加载器不同那Class对象也是不同的.
9.对于线程局部存储TLS(thread local storage),以下表述正确的是
正确答案: A B D 你的答案: B C (错误)
A.解决多线程中的对同一变量的访问冲突的一种技术
B.TLS会为每一个线程维护一个和该线程绑定的变量的副本
C.每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了
D.Java平台的java.lang.ThreadLocal是TLS技术的一种实现
解释:
ThreadLocal可以给一个初始值,而每个线程都会获得这个初始化值的一个副本,这样才能保证不同的线程都有一份拷贝。ThreadLocal 不是用于解决共享变量的问题的,不是为了协调线程同步而存在,而是为了方便每个线程处理自己的状态而引入的一个机制.
10.以下说法哪个是正确的()
正确答案: A B C D 你的答案: A B (错误)
A.IOException在编译时会被发现
B.NullPointerEception在编译时不被发现
C.SQLException在编译时会被发现
D.FileNotFoundException在编译时会被发现
解释:
Java的异常分为两种,一种是运行时异常(RuntimeException),一种是非运行异常也叫检查式异常(CheckedException)。
1、运行时异常不需要程序员去处理,当异常出现时,JVM会帮助处理。常见的运行时异常有:
ClassCastException(类转换异常)
ClassNotFoundException
IndexOutOfBoundsException(数组越界异常)
NullPointerException(空指针异常)
ArrayStoreException(数组存储异常,即数组存储类型不一致)
还有IO操作的BufferOverflowException异常
2、非运行异常需要程序员手动去捕获或者抛出异常进行显示的处理,因为Java认为Checked异常都是可以被修复的异常。常见的异常有:
IOException
SqlException