java保留两位小数怎么保留 保留两位小数怎么保留
前言jdk作为我们每天必备的调用类库,里面大量提供了基础类供我们使用.可以说离开jdk,我们的java代码寸步难行,jdk带给我们的便利可谓是不胜枚举,但同时这些方法在使用起来也存在一些坑,如果不注意就很容易掉入到陷阱里面,导致程序抛出错误 。jdk中的很多方法都不会做非null判断,可能设计jdk的作者默认开发者已经处理好null值了.不过这个设计可能会造成很严重的后果,实在是暗藏杀机 。比如今天早上我们查了一笔订单没有退款,查了一早上最终才发现是同事写的代码的BigDecimal的subtract方法的值没有做非null判断处理导致程序抛出了空指针异常,看似简单的异常却直接无法让很多订单退款,是在是小问题造成大事故 。而要修补退款这个问题,要耗费很多时间去修补,实在是让人觉得麻烦 。出错的成本太高,本期我们就来看看jdk中那些坑你没商量的方法,这些方法很常见,相信你一定遇到过 。
一:String.valueOf()方法的陷阱String.valueOf()是String提供的一个类型转换的方法,我们来看一下案发现场(代码简化过后的):
Map<String, Object> userInfo = userService.getUserInfoById(userId);Object userNameObject = userInfo.get("name");String userName = String.valueOf(userNameObject);// 判空if(userName!=null&&userName.length()>0) {String message = getMessage(userName);smsService.send(message);}
【java保留两位小数怎么保留 保留两位小数怎么保留】这段代码是简化过的,主要作用就是通过用户服务根据id获取用户信息发送短信,不过后来有客诉反应,最后的短信成了尊敬的"null"你好,xx等 。开发第一时间看了代码,觉的没有问题啊,为什么短信内容会出现用户名为null呢,不是经过了非空判断的吗?后来经过定位发现了问题所在:首先用户的名字里有特殊的emoji符号,从数据库获取的时候因为符号转义的时候为null了,接下来才是重点:

文章插图

文章插图

文章插图

文章插图

文章插图

文章插图

文章插图

文章插图

文章插图

文章插图

文章插图

文章插图

文章插图

文章插图

文章插图
正确的删除姿势就是使用Iterator.remove进行遍历删除,可以规避这个问题 。
六:总结 jdk的设计者有两个很大的特点:
①大多不会做非null判断
②出现错误直接throw new Exception,容错性很差,
在实际开发中,面对jdk一定要谨慎使用,jdk提供了便利的同时,也有一些我们使用上的盲区,应该养成多看源码,多注意错误性处理,防止在小问题上栽大跟头 。回到最开始说的那个subtract方法的问题,因为这个问题等需要我处理完之后用户才能收到退款,这直接造成了用户体验直线下降,而部分用户还直接打电话投诉 。同事一个小小的不谨慎和马虎就给公司造成了很多负面影响,技术问题虽然不大但是带来的业务影响范围很严重 。所以我们必须防微杜渐,小小的问题都得细细的打磨,才能避免很多问题的产生 。
- 洗脱时间是保留时间吗
- 2020年旧车牌照可以保留多久
- 柯基断尾标准位置
- 百数表中一共有几个两位数
- 中级经济师可以保留成绩吗
- 农业银行记录保留多久
- 申请房贷的额度和工资收入比例 申请房贷的工资卡里最少要保留多少钱才能申请
- excel如何保留小数点后两位 excel小数点保留两位四舍五入
- excel怎么设置小数点后保留两位 excel中如何设置保留小数点后两位
- 最大两位数和最小两位数相差多少
