题目
选自牛客网
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
创建
t1
对象时:
- 执行静态初始化块(如果有,但在这种情况下是在类加载时执行,而不是在创建对象时)。
- 执行非静态初始化块(即
{ System.out.println("blockA"); }
),输出blockA
。- 执行构造函数(在这种情况下是默认的无参构造函数,没有显式定义,因此不会有任何额外输出)。
执行静态初始化块:
- 输出
blockB
。注意,这个块只会在类加载时执行一次,而不是每次创建对象时都执行。创建
t2
对象时:
- 再次执行非静态初始化块,输出
blockA
。- 再次执行构造函数(默认无参构造函数)。
综上所述,按照您的分析,输出顺序应该是:
- 创建
t1
对象时输出blockA
。- 类加载时执行静态初始化块输出
blockB
。- 创建
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
实现,表示Bird
和Airplane
都可以飞行。因此,选项 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
—— 这也是一个处理流,它建立在一个现有的输入流之上,通过内部缓冲机制提高了读取效率。它提供了一个缓冲区来减少对底层流的访问次数。