1、如下代码,执行test()函数后,屏幕打印结果为(D)
public
class
Test2
{
public
void
add(Byte b)
{
b = b++;
}
public
void
test()
{
Byte a =
127
;
Byte b =
127
;
add(++a);
System.out.print(a +
" "
);
add(b);
System.out.print(b +
""
);
}
}
A、127 127
B、128 127
C、129 128
D、以上都不是
解析:
答案应该是-128 127.
2、代码片段:
byte
b1=
1
,b2=
2
,b3,b6;
final
byte
b4=
4
,b5=
6
;
b6=b4+b5;
b3=(b1+b2);
System.out.println(b3+b6);
关于上面代码片段叙述正确的是(C)
A、输出结果:13
B、语句:b6=b4+b5编译出错
C、语句:b3=b1+b2编译出错
D、运行期抛出异常
解析:
被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了
而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
Java中的byte,short,char进行计算时都会提升为int类型。
3、What will happen when you attempt to compile and run the following code? D
public
class
Test{
static
{
int
x=
5
;
}
static
int
x,y;
public
static
void
main(String args[]){
x--;
myMethod( );
System.out.println(x+y+ ++x);
}
public
static
void
myMethod( ){
y=x++ + ++x;
}
}
A、compiletime error
B、prints:1
C、prints:2
D、prints:3
E、prints:7
F、prints:8
解析:
1.静态语句块中x为局部变量,不影响静态变量x的值
2.x和y为静态变量,默认初始值为0,属于当前类,其值得改变会影响整个类运行。
3.java中自增操作非原子性的
main方法中:
- 执行x--后 x=-1
- 调用myMethod方法,x执行x++结果为-1(后++),但x=0,++x结果1,x=1 ,则y=0
- x+y+ ++x,先执行x+y,结果为1,执行++x结果为2,得到最终结果为3
4、下面关于变量及其范围的陈述哪些是不正确的(BC)
A、实例变量是类的成员变量
B、实例变量用关键字static声明
C、在方法中定义的局部变量在该方法被执行时创建
D、局部变量在使用前必须被初始化
解析:
A.类的成员变量包括实例变量和类变量(静态变量),成员方法包括实例方法和类方法(静态方法)。 A正确
B.类变量(静态变量)用关键字static声明,B错误
C.方法中的局部变量在方法被调用加载时开始入栈时创建,方法入栈创建栈帧包括局部变量表操作数栈,局部变量表存放局部变量,并非在执行该方法时被创建,C错误
D.局部变量被使用前必须初始化,否则程序报错。D正确
5、final、finally和finalize的区别中,下述说法正确的有? AB
A、final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
B、finally是异常处理语句结构的一部分,表示总是执行。
C、finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。
D、引用变量被final修饰之后,不能再指向其他对象,它指向的对象的内容也是不可变的。
解析:
A,D考的一个知识点,final修饰变量,变量的引用(也就是指向的地址)不可变,但是引用的内容可以变(地址中的内容可变)。
6、以下代码将打印出
public
static
void
main(String args[]) {
List Listlist1 =
new
ArrayList();
Listlist1.add(
0
);
List Listlist2 = Listlist1;
System.out.println(Listlist1.get(
0
)
instanceof
Integer);
System.out.println(Listlist2.get(
0
)
instanceof
Integer);
}
A、编译错误
B、true true
C、true false
D、false false
解析:
collection类型的集合(ArrayList,LinkedList)只能装入对象类型的数据,该题中装入了0,是一个基本类型,但是JDK5以后提供了自动装箱与自动拆箱,所以int类型自动装箱变为了Integer类型。编译能够正常通过。
将list1的引用赋值给了list2,那么list1和list2都将指向同一个堆内存空间。instanceof是Java中关键字,用于判断一个对象是否属于某个特定类的实例,并且返回boolean类型的返回值。显然,list1.get(0)和list2.get(0)都属于Integer的实例
7、以下对继承的描述错误的是(A)
A、Java中的继承允许一个子类继承多个父类
B、父类更具有通用性,子类更具体
C、Java中的继承存在着传递性
D、当实例化子类时会递归调用父类中的构造方法
8、以下程序段的输出结果为:
public
class
EqualsMethod
{
public
static
void
main(String[] args)
{
Integer n1 =
new
Integer(
47
);
Integer n2 =
new
Integer(
47
);
System.out.print(n1 == n2);
System.out.print(
","
);
System.out.println(n1 != n2);
}
}
A、false,false
B、false,true
C、true,false
D、true,true
解析:
使用Integer a = 1;或Integer a = Integer.valueOf(1); 在值介于-128至127直接时,作为基本类型。
使用Integer a = new Integer(1); 时,无论值是多少,都作为对象。
9、如下代码的输出结果是什么? D
public
class
Test {
public
int
aMethod(){
static
int
i =
0
;
i++;
return
i;
}
public
static
void
main(String args[]){
Test test =
new
Test();
test.aMethod();
int
j = test.aMethod();
System.out.println(j);
}
}
A、0
B、1
C、2
D、编译失败
静态变量只能在类主体中定义,不能在方法中定义。
9、下面哪些情况可以引发异常: ABC
A、数组越界
B、指定URL不存在
C、使用throw语句抛出
D、使用throws语句
解析:
1、throws出现在方法头,throw出现在方法体 2、throws表示出现异常的一种可能性,并不一定会发生异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。 3、两者都是消极的异常处理方式,只是抛出或者可能抛出异常,是不会由函数处理,真正的处理异常由它的上层调用处理。
10、常用的servlet包的名称是? BD
A、java.servlet
B、javax.servlet
C、servlet.http
D、javax.servlet.http
11、jdk1.8中,下面有关java 抽象类和接口的区别,说法错误的是? BD
A、抽象类可以有构造方法,接口中不能有构造方法
B、抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法
C、一个类可以实现多个接口,但只能继承一个抽象类
D、接口中可以有普通成员变量,抽象类中没有普通成员变量
解析:
接口可以有default、static方法,所以B是错的。
interface A {
abstract void a();
static void s() {
}
default void d(){
}
void b();//默认用abstract修饰
int a = 0;//默认用static final 修饰
}
12、以下哪些类是线程安全的(ADE)
A、Vector
B、HashMap
C、ArrayList
D、StringBuffer
E、Properties
解析:
A,Vector相当于一个线程安全的List
B,HashMap是非线程安全的,其对应的线程安全类是HashTable
C,Arraylist是非线程安全的,其对应的线程安全类是Vector
D,StringBuffer是线程安全的,相当于一个线程安全的StringBuilder
E,Properties实现了Map接口,是线程安全的
13、往OuterClass类的代码段中插入内部类声明, 哪一个是错误的: ABCD
public class OuterClass{
private float f=1.0f;
//插入代码到这里
}
A、class InnerClass{ public static float func(){return f;} }
B、abstract class InnerClass{ public abstract float func(){} }
C、static class InnerClass{ protected static float func(){return f;} }
D、public class InnerClass{ static float func(){return f;} }
解析:
主要考核了这几个知识点:
1.静态内部类才可以声明静态方法
2.静态方法不可以使用非静态变量
3.抽象方法不可以有函数体