[Done]FindBugs: boxing/unboxing to parse a primitive
在开发过程中遇到了以下问题:
FindBugs: boxing/unboxing to parse a primitive
查看代码(左边是老代码,右边是新的):
问题出在 自动装箱和拆箱的检查。
参考相关资料:https://www.cnblogs.com/yongwangzhiqian/p/3977529.html
查看源码:
先看parseInt源码:
Step1: 这里是radix是指10进制
Step2: 摘取了核心代码,底层是依赖Character的digit方法,是逐位去解析string, 每一位根据进制数计数出值,原数*10+新数(这个思路还是比较简单易懂....但大道至简)
Step3. Character底层方法:
以及(不好理解了...):
再看valueOf源码:
Step1: 一样是进制数,我记得jdk6里是没有这个进制数的:
Step2. 基于缓存,数据在【-128,127】之间,之间在cache中拿,这个设计还是非常好,我相信大部分应用中可能大于50%的数据都是在这个区间之中。(Long也有cache, Double就没有了,大家可以去翻翻源码),没有Cache就直接new对象。
以上。
[Done]FindBugs: boxing/unboxing to parse a primitive的更多相关文章
- boxing & unboxing
[boxing & unboxing] Boxing is the process of converting a value type to the type object or to an ...
- FindBugs——帮助查找隐藏的bug
FindBugs 1.什么是FindBugs FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序 ...
- Android findBugs
1.Bug:DM_BOXED_PRIMITIVE_FOR_PARSING "Boxing/unboxing to parse a primitive", A boxed primi ...
- 使用FindBugs寻找bug,代码分析
安装就不说了,网上很多. 一些常见的错误信息 Bad practice 代码中的一些坏习惯 Class names should start with an upper case letter 主要包 ...
- IntelliJ IDEA 安装使用 FindBugs 代码分析详述
1 下载 2 重启idea 选中文件,右键 附:一些常见的错误信息 Bad practice 代码中的一些坏习惯 Class names should start with an upper case ...
- FindBugs-IDEA插件的使用
前言 Findbugs很多人都并不陌生,Eclipse中有插件可以帮助查找代码中隐藏的bug,IDEA中也有这款插件.这个插件可以帮助我们查找隐藏的bug,比较重要的功能就是查找潜在的null指针. ...
- idea中使用FindBugs-IDEA插件
下载 - 安装 - 重启idea即可: 项目右键或者文件右键即可看到 FindBugs 选项. 选择某个选项直接检测即可.检测结果如下图: 这里的Correctness是重点关注对象.这里面的错误往 ...
- Long.ValueOf("String") Long.parseLong("String") 区别 看JAVA包装类的封箱与拆箱
IP地址类型转换原理: 将一个点分十进制IP地址字符串转换成32位数字表示的IP地址(网络字节顺序). 将一个32位数字表示的IP地址转换成点分十进制IP地址字符串. 1.Long.ParseLong ...
- IDEAL葵花宝典:java代码开发规范插件 FindBugs-IDEA
前言: 检测代码中可能的bug及不规范的位置,检测的模式相比p3c更多,写完代码后检测下 避免低级bug,强烈建议用一下,一不小心就发现很多老代码的bug. 使用步骤: 1):打开 Settings ...
随机推荐
- 中国剩余定理 hdu 3579
HDU 3579 Hello Kiki Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- HDU 5656 CA Loves GCD dp
CA Loves GCD 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5656 Description CA is a fine comrade w ...
- jQuery对象和Javascript对象
jQuery 对象是通过 jQuery 包装DOM 对象后产生的对象.jQuery 对象是 jQuery 独有的,其可以使用 jQuery 里的方法,但是不能使用 DOM 的方法:例如: $(&quo ...
- mysql 存储过程案列一个。
-- 设置分隔符 DELIMITER // /*初始化*/ DROP PROCEDURE IF EXISTS useCursor // /*建立 存储过程 create */ CREATE PROCE ...
- CentOS 6.9/7通过yum安装指定版本的JDK/Maven
说明:通过yum好处其实很多,环境变量不用配置,配置文件放在大家都熟悉的地方,通过rpm -ql xxx可以知道全部文件的地方等等. 一.安装JDK(Oracle JDK 1.8) # wget -- ...
- uboot启动内核的实现
前面我们分析了uboot 的整个流程,我们知道uboot启动以后所有功能都是通过命令来实现的,启动kernel就是执行了bootcmd里面的命令.命令执行过程在uboot中是非常重要的现在我们就来看u ...
- layer弹框,弹出后自动关闭
今天做项目,出现一个问题,需求是用ajax做文件上传功能,代码写好之后,测试发现问题. 弹出层出现以后我没有主动点击确定和关闭等操作,程序自动关闭了弹出层 一步一步排查,找到了错误,首先,先确认你页面 ...
- HDU 4498 Function Curve (分段,算曲线积分)
Function Curve Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)To ...
- Spring在bean配置文件中定义电子邮件模板
在上一篇Spring电子邮件教程,硬编码的所有电子邮件属性和消息的方法体中的内容,这是不实际的,应予以避免.应该考虑在Spring bean 配置文件中定义电子邮件模板. 1.Spring的邮件发件人 ...
- OpenERP实施记录(10):采购补货
本文是<OpenERP实施记录>系列文章的一部分. 上文中业务部门接到沃尔玛三台联想Y400N笔记本电脑的订单,但是仓库无货.本文需要完成采购补货处理. 1. 联想YN400N是ABC公司 ...