全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  应聘面试  >  Java面试题

java面试题:java知识点合集(四)

发布时间:2022-07-11 16:51:00
发布人:wjy

  一. 举例说明什么情况下会更倾向于使用抽象类而不是接口?

  接口和抽象类都遵循”面向接口而不是实现编码”设计原则,它可以增加代码的灵活性,可以适应不断变化的需求。下面有几个点可以帮助你回答这个问题:在 Java 中,你只能继承一个类,但可以实现多个接口。所以一旦你继承了一个类,你就失去了继承其他类的机会了。

  接口通常被用来表示附属描述或行为如: Runnable 、 Clonable 、 Serializable 等等,因此当你使用抽象类来表示行为时,你的类就不能同时是 Runnable 和 Clonable( 注:这里的意思是指如果把 Runnable 等实现为抽象类的情况 ) ,因为在 Java 中你不能继承两个类,但当你使用接口时,你的类就可以同时拥有多个不同的行为。

  在一些对时间要求比较高的应用中,倾向于使用抽象类,它会比接口稍快一点。如果希望把一系列行为都规范在类继承层次内,并且可以更好地在同一个地方进行编码,那么抽象类是一个更好的选择。有时,接口和抽象类可以一起使用,接口中定义函数,而在抽象类中定义默认的实现。

java面试题:java知识点合集(四)

  二. 实例化创建对象有哪几种方式

  1. 实例化对象的方式有如下几种:

  new

  clone()

  通过反射机制创建

  序列化反序列化

  2. 反射示例代码

java面试题:java知识点合集44

  3. 序列化示例代码:

java面试题:java知识点合集55

  三. byte类型127+1等于多少

  byte的范围是-128~127。

  字节长度为8位,最左边的是符号位,而127的二进制为01111111,所以执行+1操作时,01111111变为10000000。

  大家知道,计算机中存储负数,存的是补码的兴衰。左边第一位为符号位。

  那么负数的补码转换成十进制如下:

  一个数如果为正,则它的原码、反码、补码相同;一个正数的补码,将其转化为十进制,可以直接转换。

  已知一个负数的补码,将其转换为十进制数,步骤如下:

  1先对各位取反;

  2将其转换为十进制数;

  3加上负号,再减去1;

  4例如10000000,最高位是1,是负数,①对各位取反得01111111,转换为十进制就是127,加上负号得-127,再减去1得-128;

  四. float 和 double 的区别是什么?

  1. 内存中占有的字节数不同

  单精度浮点数在内存中占有4个字节;

  双精度浮点数在内存中占有8个字节;

  2. 有效数字位数不同

  单精度浮点数有效数字8位;

  双精度浮点数有效数字16位;

  3. 数值取值范围不同

  单精度浮点数的表示范围:-3.40E+38~3.40E+38

  双精度浮点数的表示范围:-1.79E+308~-1.79E+308

  4. 在程序中处理速度不同

  一般来说,CPU处理单精度浮点数的速度比双精度浮点数的速度快。如果不声明,默认小数是double类型,如果想用float,要进行强转。

  5. 举例

  float f = 1.3;会编译报错,正确的写法是float f = (float)1.3;或者float a = 1.3f;(f或F都可以不区分大小写)。

  6. 注意

  float是八位有效数字,第七位会四舍五入。

  7. 相关面试题

  7.1 Java中3*0.1==0.3会返回什么?true还是false?

  答:返回false,因为浮点数不能完全精确的表示出来,一般会损失精度;

  7.2 Java中float f = 3.4;是否正确?

  答:不正确。因为3.4是双精度浮点数,将双精度赋给单精度属于向下转型,会造成精度损失,因此需要强制类型转换 float=(float)3.4; 或者写成 float f = 3.4f。

  更多关于“Java培训”的问题,欢迎咨询千锋教育在线名师。千锋已有十余年的培训经验,课程大纲更科学更专业,有针对零基础的就业班,有针对想提升技术的好程序员班,高品质课程助力你实现java程序员梦想。

相关文章

华为外包java面试题-Java实现单链表的逆序

2023-07-25

Java程序员面试题

2023-07-21

Java面试题及答案

2023-07-20

什么是Java中的线程?如何创建和启动线程?

2023-07-18

Java中的异常处理机制是什么?请解释try-catch-finally块的作用

2023-07-18

面向对象编程的特征是什么?请解释每个特征

2023-07-18
在线咨询 免费试学 教程领取