当前位置: 首页 > news >正文

每日十题八股-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.多态解决了什么问题?

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

http://www.lryc.cn/news/492797.html

相关文章:

  • OpenCV截取指定图片区域
  • Java部分新特性
  • 【SpringBoot】28 API接口防刷(Redis + 拦截器)
  • IT运维专家给年轻人一些职业上的建议
  • Django基础之路由
  • Python实例化中默认值的行为及应用
  • 【WRF后处理】WRF模拟效果评价及可视化:MB、RMSE、IOA、R
  • ShenNiusModularity项目源码学习(4:身份认证)
  • python+django自动化部署日志采用‌WebSocket前端实时展示
  • flink学习(6)——自定义source和kafka
  • 开发常见问题及解决
  • python excel接口自动化测试框架!
  • mybatis:You have an error in your SQL syntax;
  • 使用 Maven 开发 IntelliJ IDEA 插件
  • Windows修复SSL/TLS协议信息泄露漏洞(CVE-2016-2183) --亲测
  • uniapp生命周期:应用生命周期和页面生命周期
  • 基于SSM的婴幼儿用品商城系统+LW示例参考
  • 【工具变量】城市供应链创新试点数据(2007-2023年)
  • 【carla生成车辆时遇到的问题】carla显示的坐标和carlaworld中提取的坐标y值相反
  • Jira使用笔记二 ScriptRunner 验证问题创建角色
  • Java线程的使用
  • 自动化测试工具Ranorex Studio(四十三)-RANOREXPATH编辑器5
  • 超高流量多级缓存架构设计!
  • 数据结构(Java)—— ArrayList
  • 实习冲刺第三十三天
  • Uniapp开发下拉刷新功能onPullDownRefresh/onReachBottom
  • 什么是 C++ 中的函数对象?函数对象与普通函数有什么区别?如何定义和使用函数对象?
  • PointNet++论文复现
  • 【VUE】el-table表格内输入框或者其他控件规则校验实现
  • django开发中html继承模板样式