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了,接下来才是重点:

java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
java保留两位小数怎么保留 保留两位小数怎么保留

文章插图
正确的删除姿势就是使用Iterator.remove进行遍历删除 , 可以规避这个问题 。
六:总结 jdk的设计者有两个很大的特点:
①大多不会做非null判断
②出现错误直接throw new Exception , 容错性很差,
【java保留两位小数怎么保留 保留两位小数怎么保留】在实际开发中,面对jdk一定要谨慎使用 , jdk提供了便利的同时 , 也有一些我们使用上的盲区 , 应该养成多看源码,多注意错误性处理 , 防止在小问题上栽大跟头 。回到最开始说的那个subtract方法的问题 , 因为这个问题等需要我处理完之后用户才能收到退款 , 这直接造成了用户体验直线下降 , 而部分用户还直接打电话投诉 。同事一个小小的不谨慎和马虎就给公司造成了很多负面影响 , 技术问题虽然不大但是带来的业务影响范围很严重 。所以我们必须防微杜渐 , 小小的问题都得细细的打磨 , 才能避免很多问题的产生 。

    推荐阅读