java错题记录(一)

一、观察下类代码,输出正确的是

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的特性

常量与常量的拼接结果在常量池中,且常量中不会存在内容相同的常量。

常量与变量拼接、变量与变量拼接,结果在堆中

java错题记录(一)_第1张图片 

二、以下代码的输出结果是?

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)

java错题记录(一)_第2张图片 

 

你可能感兴趣的:(Java学习,java)