1、静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据。( )正确答案: A
A、正确
B、错误
2、在类Tester中定义方法如下,public double max(int x, int y) { // 省略 },则在该类中定义如下哪个方法头是对上述方法的重载(Overload)?正确答案: B
A.public int max(int a, int b) {}
B.public int max(double a, double b) {}
C.public double max(int x, int y) {}
D.private double max(int a, int b) {}
解析:
重载:同名不同参,返回值无关。
3、以下Java程序运行的结果是:
public class Tester{ public static void main(String[] args){ Integer var1=new Integer(1); Integer var2=var1; doSomething(var2); System.out.print(var1.intValue()); System.out.print(var1==var2); } public static void doSomething(Integer integer){ integer=new Integer(2); } }
正确答案: A
A.1true
B.2true
C.1false
D.2false
解析:
4、关于下面的程序Test.java说法正确的是( )。
public class Test { static String x="1"; static int y=1; public static void main(String args[]) { static int z=2; System.out.println(x+y+z); } }
正确答案: D
A.3
B.112
C.13
D.程序有编译错误
解析:
5、@SuppressWarnings(“deprecation”)的功能是什么?正确答案: A
A.屏蔽不赞同使用的类和方法的警告
B.屏蔽在强制类型转换的时候编译器给出的警告
C.关闭所有警告信息
D.当在可序列化的类上缺少serialVersionUID定义的警告
解析:
6、对于构造方法,下列叙述正确的是( )。正确答案: A C D
A.构造方法的优先级一般比代码块低。
B.构造方法的返回类型只能是void型。
C.构造方法的主要作用是完成对类的对象的初始化工作。
D.一般在创建新对象时,系统会自动调用构造方法。
解析:
7、程序中常采用变量表示数据,变量具有名、地址、值、作用域、生存期等属性。关于变量的叙述,()是正确的。正确答案: A C D
A.根据作用域规则,在函数中定义的变量只能在函数中引用
B.在函数中定义的变量,其生存期为整个程序执行期间
C.在函数中定义的变量不能与其所在函数的形参同名
D.在函数中定义的变量,其存储单元在内存的栈区
解析:
在函数中,不管中间隔了几层,都不允许定义一个与形参同名的变量
8、final、finally和finalize的区别中,下述说法正确的有?正确答案: A B
A.final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
B.finally是异常处理语句结构的一部分,表示总是执行。
C.finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。
D.引用变量被final修饰之后,不能再指向其他对象,它指向的对象的内容也是不可变的。
解析:
finalize方法一个对象只能执行一次,只能在第一次进入被回收的队列,而且对象所属于的类重写了finalize方法才会被执行。
使用 final 关键字修饰一个变量时,引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。
9、关于下面一段代码,以下说法正确的是: () 正确答案: A C
public class Test { private synchronized void a() { } private void b() { synchronized (this) { } } private synchronized static void c() { } private void d() { synchronized (Test.class) { } } }
A.同一个对象,分别调用方法a和b,锁住的是同一个对象
B.同一个对象,分别调用方法a和c,锁住的是同一个对象
C.同一个对象,分别调用方法b和c,锁住的不是同一个对象
D.同一个对象,分别调用方法a、b、c,锁住的不是同一个对象
解析:
- 同步代码块(synchronized(this),synchronized(类实例对象),锁是小括号()中的实例对象)
- 同步非静态方法(synchronized method),锁的是当前对象的实例对象
- 同步代码块(synchronized(类.class)),锁是最小括号 () 中的类对象(Class对象)
- 同步静态方法(synchronized static method),锁是当前对象的类对象(Class 对象)
10、对于下面这段代码,以下说法正确的是:正确答案: C
public class Test { public int x; public static void main(String []args) { System. out. println("Value is" + x); } }
A.程序会打出 "Value is 0"
B.程序会抛出 NullPointerException
C.非静态变量不能够被静态方法引用
D.编译器会抛出 "possible reference before assignment"的错误
解析:
当类加载时,static静态方法随着类加载而初始化,此时实例对象还未被创建,但是非静态成员变量需要等到实例对象创建才会被初始化,故无法被引用。
11、哪个类可用于处理 Unicode? 正确答案: A
A.InputStreamReader
B.BufferedReader
C.Writer
D.PipedInputStream
解析:
InputStreamReader是将字节流转换成字符流供我们使用。同时InputStreamReader可以指定字符集的编码。
InputStreamReader(InputStream in, String charsetName) : 创建使用指定字符集的 InputStreamReader。
12、说明输出结果。正确答案: C
import java.util.Date; public class SuperTest extends Date{ private static final long serialVersionUID = 1L; private void test(){ System.out.println(super.getClass().getName()); } public static void main(String[]args){ new SuperTest().test(); } }
A.SuperTest
B.SuperTest.class
C.test.SuperTest
D.test.SuperTest.class
解析:
super.getClass().getName() 返回:包名+类名
13、下面的代码输出的结果为正确答案: A
public class Test1 { static int cnt = 6; static { cnt += 9; } public static void main(String[] args) { System.out.println("cnt =" + cnt); } static { cnt /= 3; } }
A.cnt=5
B.cnt=2
C.cnt=3
D.cnt=6
解析:
本题考查初始化顺序:
14、一个容器类数据结构,读写平均,使用锁机制保证线程安全。如果要综合提高该数据结构的访问性能,最好的办法是______。
正确答案: C
A.只对写操作加锁,不对读操作加锁
B.读操作不加锁,采用copyOnWrite的方式实现写操作
C.分区段加锁
D.无法做到
解析:
15、以下哪些继承自 Collection 接口()正确答案: A B
A.List
B.Set
C.Map
D.Array
解析:
16、以下代码可以使用的修饰符是:()正确答案: A B D
public interface Status { /*INSERT CODE HERE*/ int MY_VALUE=10; }
A.final
B.static
C.abstract
D.public
解析:
接口中字段的修饰符:public static final(默认不写)
接口中方法的修饰符:public abstract(默认不写)
17、Java类Demo中存在方法func1、func2、func3和func4,请问该方法中,哪些是不合法的定义?( ) 正确答案: A D
public class Demo{ float func1() { int i=1; return; } float func2() { short i=2; return i; } float func3() { long i=3; return i; } float func4() { double i=4; return i; } }
A.func1
B.func2
C.func3
D.func4
解析:
自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:
byte,short,char -> int -> long -> float -> double
运算中,不同类型的数据先转化为同一类型,然后进行运算,转换规则如下:
操作数 1 类型 |
操作数 2 类型 |
转换后的类型 |
byte 、 short 、 char |
int |
int |
byte 、 short 、 char 、 int |
long |
long |
byte 、 short 、 char 、 int 、 long |
float |
float |
byte 、 short 、 char 、 int 、 long 、 float |
double |
double |
18、以下各类中哪几个是线程安全的?( ) 正确答案: B C D
A.ArrayList
B.Vector
C.Hashtable
D.Stack
解析:
Stack继承了Vector,所以也是线程安全的