一、观察下类代码,输出正确的是
String s1 = "coder";
String s2 = "coder";
String s3 = "coder" + s2;
String s4 = "coder" + "coder";
String s5 = s1 + s2;
System.out.println(s3 == s4);
System.out.println(s3 == s5);
System.out.println(s4 == "codercoder");
A false;false; true;
B false;true; true;
C false;false; false;
D true;false; true;
正确答案:A
该题总结:
本题考察的是String的特性
常量与常量的拼接结果在常量池中,且常量中不会存在内容相同的常量。
常量与变量拼接、变量与变量拼接,结果在堆中
二、以下代码的输出结果是?
public class B
{
public static B t1 = new B();
public static B t2 = new B();
{
System.out.println("构造块");
}
static
{
System.out.println("静态块");
}
public static void main(String[] args)
{
B t = new B();
}
}
A 静态块 构造块 构造块 构造块
B 构造块 静态块 构造块 构造块
C 构造块 构造块 静态块 构造块
D 构造块 构造块 构造块 静态块
正确答案:C
该题总结:
1.java中是静态域先执行,而不是静态代码块。
静态域包括静态属性、静态代码块和静态方法,其中需要初始化的是静态变量和静态代码块,他们的执行顺序有他们声明时的顺序决定的(从上到下依次执行)
2、静态代码块与分静态代码块:
- 静态代码块
- 可以有输出语句
- 随着类的加载而执行,且只执行一次
- 可以对类的属性、类的声明进行初始化操作
- 不可以对非静态的属性进行初始化操作
- 不可以调非静态的属性及方法
- 可以定义多个静态代码块,执行顺序从上到下依次执行
- 静态代码块的执行要先于非静态代码块,且先于构造器执行
- 非静态代码块
- 可以有输出语句
- 随着对象的创建而执行,每次创建对象的时候都会执行一次
- 可以对类的属性、类的声明进行初始化操作
- 可以调用非静态的属性及方法
- 可以调用静态属性及方法
- 可以定义多个非静态代码块,执行顺序从上到下依次执行
- 非静态代码块的执行顺序要先于构造器的执行
3、程序中成员变量赋值的执行顺序:
- 1.声明成员变量默认初始化
- 2.显示初始化、多个初始化块依次被执行(同级别的按声明先后顺序执行)
- 3.构造器再对成员变量进行初始化操作
- 4.通过“对象.属性”或“对象.方法”的方式,对成员变量进行赋值
三、下面有关java基本类型的默认值和取值范围,说法错误的是?
A 字节型的类型默认值是0,取值范围是-2^7—2^7-1
B boolean类型默认值是false,取值范围是true\false
C 字符型类型默认是0,取值范围是-2^15 —2^15-1
D long类型默认是0,取值范围是-2^63—2^63-1
正确答案:C
本题总结:
基本类型 | 默认值 | 取值范围 |
---|---|---|
byte | 0 | -2^7——2^7-1 |
short | 0 | -2^15——2^15-1 |
int | 0 | -2^31——2^31-1 |
long | 0L | -2^63——2^63-1 |
float | 0.0f | -2^31——2^31-1 |
double | 0.0d | -2^63——2^63-1 |
char | '\u0000' | 0——2^16-1 |
boolean | false | true、false |
四、多重继承的概念在Java中实现是通过如下哪些?()
I. 扩展两个或多个类
II. 扩展一个类并实现一个或多个接口。
III. 实现两个或更多接口。
A 只有I &II
B 只有II & III
C 只有III
D 都是
正确答案:B
本题总结:
java只支持单继承。
实现多重继承共有三种方式:多层继承、实现一个或多个接口、内部类(通过内部类去继承而实现多继承 )
五、执行语句“int a= ’ 2 ’ ”后,a的值是( )
A 2
B 50
C 49
D 0
正确答案:B
本题总结:
int a='2'与int a=2不同。
int a='2'中的数字2被单引号引起来,表示的是字符2,而字符2所对应的ASCII码是50,因此这种情况下,a的值是50
int a = 2中的数字2表示了数字本身,这种情况下,a的值是2
六、下列关于容器集合类的说法正确的是?
A LinkedList继承自List
B AbstractSet继承自Set
C HashSet继承自AbstractSet
D WeakMap继承自HashMap
正确答案:C
本题总结:
A:LinkedList是实现了AbstractSequentialList(抽象类,实现了List接口)的,并且实现了List接口
B:AbstractSet是实现了Set接口,本身是一个抽象类。继承自AbstractCollection(抽象类,实现了Collection接口)
C:HashSet是继承自AbstractSet,实现了Set接口
D:WeakMap不属于java集合框架,只有一个WeakHashMap(继承自AbstractMap)