Java题库:每日挑战01

题目

选自牛客网

1.以下 b 的值是: byte b = (byte)129;

A.-126
B.-127
C.-128
D.-129

正确答案:B

在Java中,byte类型是一个8位的有符号整数,范围是从-128到127。当你尝试将一个超出了byte类型范围的值赋给一个byte变量时,会发生溢出。这种情况下,值会与byte类型的范围进行模运算,即取256的模。

对于题目中的例子,129超出了byte的范围。当你将129赋值给byte类型的变量b时,它实际上会变成 129 % 256,即129 - 256 = -127。因此,b的值会是-127


2.以下代码执行后输出结果为( )

public class Test
{
    public static Test t1 = new Test();
    {
         System.out.println("blockA");
    }
    static
    {
        System.out.println("blockB");
    }
    public static void main(String[] args)
    {
        Test t2 = new Test();
    }
 }

A.blockAblockBblockA
B.blockAblockAblockB
C.blockBblockBblockA
D.blockBblockAblockB
选A
在这里插入图片描述

  1. 创建 t1 对象时

    • 执行静态初始化块(如果有,但在这种情况下是在类加载时执行,而不是在创建对象时)。
    • 执行非静态初始化块(即 { System.out.println("blockA"); }),输出 blockA
    • 执行构造函数(在这种情况下是默认的无参构造函数,没有显式定义,因此不会有任何额外输出)。
  2. 执行静态初始化块

    • 输出 blockB。注意,这个块只会在类加载时执行一次,而不是每次创建对象时都执行。
  3. 创建 t2 对象时

    • 再次执行非静态初始化块,输出 blockA
    • 再次执行构造函数(默认无参构造函数)。

综上所述,按照您的分析,输出顺序应该是:

  1. 创建 t1 对象时输出 blockA
  2. 类加载时执行静态初始化块输出 blockB
  3. 创建 t2 对象时再次输出 blockA

3.下面哪些类实现或继承了 Collection 接口?

A.HashMap
B.ArrayList
C.Vector
D.Iterator

正确答案是 B 和 C。
在 Java 中,Collection 接口是集合框架的基础接口之一,它定义了集合的基本操作。现在我们来看看给出的选项中哪些实现了或继承了 Collection 接口:

A. HashMap —— 这不是一个实现了 Collection 接口的类。HashMap 实现了 Map接口,它是另一种类型的集合,用于存储键值对。

B. ArrayList —— 这个类实现了 List 接口,而 List 接口继承自 Collection接口。因此,ArrayList 间接继承了 Collection 接口。

C. Vector —— 和 ArrayList 类似,Vector 也实现了 List 接口,同样间接继承了 Collection 接口。

D. Iterator —— Iterator 是一个接口,用于遍历集合中的元素。它并没有实现或继承 Collection 接口。


4.JDK1.8版本之前,抽象类和接口的区别,以下说法错误的是

A.接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的。

B.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface,实现多重继承。接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用。

C.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员),所有的成员方法默认都是 public abstract 类型的。

D.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"has-a"关系,interface表示的是"is-a"关系。

正确答案:D
描述了抽象类和接口的设计理念,但是这里的表述是错误的。正确的理解应该是:

  • Abstract Class 表示的是 “is-a” 关系:抽象类表示一个类是另一个类的一种特定类型,例如 Vehicle 是一个抽象类,Car 继承 Vehicle 表示 Car 是一种 Vehicle
  • Interface 表示的是 “implements” 或者说是 “can do” 关系:接口定义了一组行为规范,实现该接口的类承诺它可以执行这些行为。例如,一个 Flyable 接口可以被 Bird
    Airplane 实现,表示 BirdAirplane 都可以飞行。

因此,选项 D 的正确表述应该是:

D. Abstract class 和 interface 所反映出的设计理念不同。其实 abstract class 表示的是
“is-a” 关系,interface 表示的是 “implements” 或 “can do” 关系。


5.下列流当中,属于处理流的是:()

A.FilelnputStream
B.lnputStream
C.DatalnputStream
D.BufferedlnputStream

正确答案:CD

处理流是在已存在的流之上添加功能的流。处理流本身并不直接与物理设备关联,而是用来增强或改变基础流的功能。下面是关于给出选项的说明:

A. FileInputStream ——这是一个字节输入流,用于从文件系统中的文件读取数据。它不是处理流,而是直接与文件系统交互的流。

B. InputStream —— 这是所有字节输入流的父接口,不是具体的流实现,也不是处理流。

C. DataInputStream —— 这是一个处理流,它建立在一个现有的输入流之上,提供了读取基本数据类型的方法,如
readInt(), readDouble() 等。它增强了基础流的功能。

D. BufferedInputStream —— 这也是一个处理流,它建立在一个现有的输入流之上,通过内部缓冲机制提高了读取效率。它提供了一个缓冲区来减少对底层流的访问次数。

  • 26
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布说在见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值