欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 每日十题八股-2024年11月27日

每日十题八股-2024年11月27日

2024/11/30 10:50:01 来源:https://blog.csdn.net/anncyuyan/article/details/144080367  浏览:    关键词:每日十题八股-2024年11月27日

1.类型互转会出现什么问题吗?
2.为什么用bigDecimal 不用double ?
3.装箱和拆箱是什么?
4.Java为什么要有Integer?
5.Integer相比int有什么优点?
6.那为什么还要保留int类型?
7.说一下 integer的缓存
8.怎么理解面向对象?简单说说封装继承多态
9.多态体现在哪几个方面?
10.多态解决了什么问题?

1.类型互转会出现什么问题吗?

数据丢失,数据溢出,精度损失和类型不匹配导致的错误。

2.为什么用bigDecimal 不用double ?

double 使用二进制表示数值,而许多常见的十进制数(如 0.1 或 0.2)在二进制中无法准确表示,因此会导致不精确的计算结果。特别是当执行多个浮点运算时,误差会累积,最终影响结果的正确性。
BigDecimal 是一个高精度的类,能够表示任意精度的小数,避免了浮点数在精度上的限制。它内部使用的是十进制表示,适合精确的财务计算或需要高精度的科学计算。
使用 BigDecimal 时,可以指定所需的精度,并确保计算不会因舍入误差而不准确。

3.装箱和拆箱是什么?

装箱是从包装类转到基本数据类型的过程。
拆箱是从基本数据类型转到包装类的过程。
在java1.5之前都是手动进行转换,之后可以自动装拆箱。自动装箱主要发生在两种情况,一种是赋值时,另一种是在方法调用的时候。
自动装拆箱有一个弊端就是,在编码不够合理的时候,会创建大量的包装类对象。

Integer iObject = Integer.valueOf(3);
int iPrimitive = iObject.intValue();

4.Java为什么要有Integer?

其实就是问为什么要有包装类?
包装类就是把基本数据类型和与它相关的处理方法放到一起。
好处有:适配集合类操作,泛型中要求使用引用类型,转换类型中的应用(int要转String,必须转Integer,再转String)。

5.Integer相比int有什么区别?

int是基本数据类型,基本数据类型在内存中存放的位置是栈。
Integer是对象的引用,对象存放在堆中,需要实例化,额外分配内存,没有实例化就可能出现空指针异常。

6.那为什么还要保留int类型?

Integer对象占16字节,一个int占4字节。int读写和存储效率高。

7.说一下 integer的缓存

在Integer类内部会实现一个静态缓存池,用于存储特定范围内的整数值对应的Integer对象。默认情况下,范围为-128-127。用Integer.valueOf(int)创建一个范围内对象的时候,就会复用缓存中的现有对象。

8.怎么理解面向对象?简单说说封装继承多态

面向对象是一种编程范式。将现实生活中的事物抽象为对象。对象的属性和行为分别抽象为属性和方法。以对象为中心,对象之间的交互实现功能。具有封装,继承和多态三个特性。
封装就是将属性和方法细节隐藏在对象内部。外部通过接口使用。
继承就是子类可以自动继承父类的属性和方法,代码复用高,层次清晰。
多态是指允许不同类的对象对同一消息作出响应。即同一个接口,使用不同的实例而执行不同操作。

9.多态体现在哪几个方面?

多态性可以分为编译时多态(重载)和运行时多态(重写)。它使得程序具有良好的灵活性和扩展性。
重载是编译时的多态,是在一个类中对同名方法的不同实现。
重写是子类继承父类时,重写父类的方法。
接口实现:不同类实现统一接口。声明的时候用接口的话,就可以调用不同的实现类。
向上转型和向下转型:向上转型(子转父)可以当做隐藏自身的方法,所以,再转回来(向下转型)方法就会恢复原状。该是你的还是你的。
直接向下转型(父转子),父类不具有子类的独有方法,所以即使转化成功,也是个残废儿子,还不如不转,所以直接报错转化失败。不是你的你想都别想。

10.多态解决了什么问题?

多态可以提高代码的扩展性和复用性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com