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);}
这段代码是简化过的,主要作用就是通过用户服务根据id获取用户信息发送短信,不过后来有客诉反应,最后的短信成了尊敬的"null"你好,xx等 。开发第一时间看了代码,觉的没有问题啊 , 为什么短信内容会出现用户名为null呢,不是经过了非空判断的吗?后来经过定位发现了问题所在:首先用户的名字里有特殊的emoji符号,从数据库获取的时候因为符号转义的时候为null了,接下来才是重点:
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
文章插图
正确的删除姿势就是使用Iterator.remove进行遍历删除 , 可以规避这个问题 。
六:总结 jdk的设计者有两个很大的特点:
①大多不会做非null判断
②出现错误直接throw new Exception , 容错性很差,
【java保留两位小数怎么保留 保留两位小数怎么保留】在实际开发中,面对jdk一定要谨慎使用 , jdk提供了便利的同时 , 也有一些我们使用上的盲区 , 应该养成多看源码,多注意错误性处理 , 防止在小问题上栽大跟头 。回到最开始说的那个subtract方法的问题 , 因为这个问题等需要我处理完之后用户才能收到退款 , 这直接造成了用户体验直线下降 , 而部分用户还直接打电话投诉 。同事一个小小的不谨慎和马虎就给公司造成了很多负面影响 , 技术问题虽然不大但是带来的业务影响范围很严重 。所以我们必须防微杜渐 , 小小的问题都得细细的打磨 , 才能避免很多问题的产生 。
推荐阅读
- 判缓刑能保留公职吗
- 房贷逾期一天征信上保留多久
- 三位数除以两位数怎么求
- 现金借款如何保留证据
- 确诊宫外孕以后还能保留输卵管吗?
- 二建成绩会保留多长时间
- 常用的JavaIDE工具有哪些
- 车牌能保留多久
- 牌照号可以保留二年吗
- 移民后还能保留中国国籍吗