每天5道Java面试题(第6天)

2023-11-10 08:45:59 浏览数 (1)

1. 接口和抽象类有什么区别?

默认方法实现:抽象类可以有默认的方法实现;接口不能有默认的方法实现。

实现:抽象类的子类使用

构造函数:抽象类可以有构造函数,接口不能有。

main 方法:抽象类可以有 main 方法,并且我们能运行它;接口不能有 main 方法。

实现数量:类可以实现很多个接口;但是只能继承一个抽象类。

访问修饰符:接口中的方法默认使用public修饰;抽象类中的方法可以是任意访问修饰符。

2. &和&&有什么区别?

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结bai果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。&即如果第一个表达式不管为false还是true,第二表达式都会参与运算。

(例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & y>0) y会增长,If(x==33 && y>0)不会增长。)这段不背!

&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。(了解,建议记住)

3. Java 中 IO 流分为几种?

按功能来分:输入流(input)、输出流(output)。

按类型来分:字节流和字符流。

4. 字节流和字符流的区别是?

字节流操作的基本单元为字节;

字符流操作的基本单元为Unicode码元。

字节流默认不使用缓冲区;

字符流使用缓冲区。

字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;

字符流通常处理文本数据,它支持写入及读取Unicode码元。

5. BIO、NIO、AIO 有什么区别?

BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。

NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。

AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

0 人点赞