Java小白的周考——第三周

@[TOC][第三周测验]

填空题

  1. 类的基类是什么类?
    • Object是所有类的超类
  2. static修饰的变量特点
    • 全局共享,内存中唯一
  3. static修饰的方法特点
    • 通过类名可以直接调用方法,静态方法不能调用非静态的变量和方法,动态方法可以调用静态方法和变量

单选题

  1. 以下代码的执行结果是:C
public class Example {
 static int i = 1, j = 2;   //=>i=3
 static {
  display(i);//1
  i = i + j;//i=3
 }
 static void display(int n) {
  System.out.println(n);
 }

 public static void main(String[] args) {
  display(i);
 }
}

执行流程

① 程序体内有static静态代码块 ,优先执行,调用静态方法display执行,传入实参 i = 1,打印1;然后执行 i = i + j ,结果是i = 3 ; 继续执行main方法再次调用display 传入实参 i 此时 i 的值是 3 ,所以打印 3;程序结束 输入 1 , 3
- A. 1 2
- B. 0 1
- C. 1 3
- D. 1 1
2. 关于Java中继承的说法,正确的是( B )

==java类只允许单继承,接口可以多继承,类可以通过实现接口来实现多继承==
A.类允许多继承 x
B.接口允许多继承 √
C.接口和类都允许多继承 x
D.接口和类都不允许多继承 x
  1. 下列说法错误的是?( C )
    A.Object类是所有Java类的顶层类,即类继承树的根。 √
    B.如果一个类没有使用extends关键字扩展任何类,则编译器自动将创建的类视为Object类的子类√
    C.Object类中提供了equals()方法来判定本对象和其他对象中的内容是否一致x Object底层是用==来实现的,比较的是内存地址
    D.Object中提供的clone默认为浅克隆 √

  2. 下面关于变量的陈述哪个是不对的?( B )
    A.实例变量是类的成员变量√
    B.成员常量在声明时可以不进行初始化X 常量必须有初始值,且值一旦确定就不能修改
    C.局部变量在使用前必须被初始化√
    D.静态变量不依赖类的实例√

  3. 如下代码,输出结果( A )

public class E {
  static int i = 10;
  static {
   System.out.println(this.i); // X 静态块儿里面不能使用this调用,以为this是非静态调用
  }
  public static void main(String[] args) {
     E.i++;
   System.out.println(E.i);
  }
}

A.编译失败
B.10 11
C.11 12
D.10 10

  1. 以下代码输出结果(C)
public static void main (String args[]) { 
	Integer integer1 = 129; 
	Integer integer2 = 129;
	Integer integer3 = new Integer(100);
	System.out.println(integer1==integer2); // 超出常量池范围 -128~127 所以两个interage地址不同
	System.out.println(integer2==integer3); 
}

A.trut true
B.true false
C.false false
D.false true

  1. 如下代码输出结果是什么?(B)
 public class Example {
  int a = 10;
  static int b = 20;
 public static void main(String[] args) {
  Example e1 = new Example();
  Example e2 = new Example();
  e1.a = 1;
  e1.b = 2;
  System.out.println(e1.a); =>1
  System.out.println(e2.a); =>10
  System.out.println(e2.b); =>2
  
 }
}

A.1 1 2
B.1 10 2
C.1 1 20
D.10 10 20

  1. 包装类常量池的范围(A)
    A.负128到正127
    B.负127到正127
    C.负128到正128
    D.负127到正128

  2. 如下代码输出结果:(D)

class Person{
 public static void t1() {
  System.out.println("helloworld1");
 }
 public void t2() {
  System.out.println("helloworld2");
 }
 public static void main(String[] args) {
  ((Person)null).t1(); // 第1行  (Person)null实际上是通过Person调用的t1方法 反编译之后这一句代码是 t1();
  ((Person)null).t2();// 第2行  (Person)null只有在运行的时候才能发现是null所以运行报错
  }
}

A.第1行编译通过,第2行编译失败
B.第1行和第2行都编译失败
C.第1行运行成功输出helloworld1,第2行编译失败
D.第1行运行成功输出helloworld1,第2行运行失败

  1. 有String s = “Metallica”;请问以下哪个语句可以打印输出ica。(b)
    A.System.out.println(s.substring(7)); =》 ca
    B.System.out.println(s.substring(6)); =》ica
    C.System.out.println(s.substring(6,8)); =》ic
    D.System.out.println(s.substring(7,9)); =》ca

多选题

  1. 现有以下代码:(CD)
interface W {}

class Z implements W {}

class X extends Z {}

class Y extends Z {}

只有存在父子关系才能进行强制转换

  1. 下列哪些代码段是正确的?
    A.
    X x=new X();
    Y y=new Y();
    Z z=new Z();
    y=(Y)x;
    B.
    X x=new X();
    Y y=new Y();
    Z z=new Z();
    x=(X)y;
    C.
    X x=new X();
    Y y=new Y();
    Z z=new Z();
    z=(Z)x;
    D.
    X x=new X();
    Y y=new Y();
    Z z=new Z();
    W w=(W)x;

  2. 请选择所有的正确答案?(BC)
    A.接口中存在变量成员 接口的中定义的属于全局常量
    B.在接口中定义的变量默认为public、static、final的√
    C.一个接口可以继承多个接口√
    D.关键字implements代表接口之间的继承关系 implements是实现

判断

  1. 在接口中定义的变量默认为public、static、final的(√)

  2. 使用implements实现接口中的多重继承( X ) extends是继承

  3. 抽象类中至少包含1个抽象方法,也可以有普通方法( X ) 抽象类可以没有抽象方法

  4. 在多态环境下,调用成员变量时使用父类声明的版本,调用成员方法时使用子类声明的版本( √ )

  5. final修饰的方法不能被重载 ( X ) 不能重写

简答题或编程题

  1. 解释自动拆装箱

    • JDK1.5之后允许包装类和简单类自动转换,包装类转换成简单类是 拆装, 简单类转换成包装类是 装箱过程是包装器调用了valueOf , 拆箱过程是包装器调用了xxxValue
  2. 抽象类和接口的区别

    1. 修饰词不同 抽象类是abstract 接口是 interface;
    2. 接口只能定义public static final的静态常量,抽象类没有限制
    3. 接口可以多继承,抽象类只能单继承
    4. 抽象类中可以有抽象方法,可以有普通方法,也可以有构造函数
    5. 接口只能有抽象方法 , jdk1.8之后才能在接口定义default方法,且没有构造方法
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值