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,每一位根据进制数计数出值,再进行累加(这个思路还是比较原始啊....但大道至简)

Step3. Character底层方法:

以及(不好理解了...):

再看valueOf源码:

Step1: 一样是进制数,我记得jdk6里是没有这个机制数的:

Step2. 基于缓存,数据在【-128,127】之间,之间在cache中拿,这个设计还是非常好,我相信大部分应用中可能大于50%的数据都是在这个区间之中。(Long也有cache, Double就没有了,大家可以去翻翻源码),没有Cache就直接new。

以上。

原文地址:https://www.cnblogs.com/do-your-best/p/9435736.html

时间: 2024-11-05 06:07:16

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 any interface type implemented by this value type. When the CLR boxes a value type, it wraps the value inside a System.Object and stores it on the managed h

学习如何避免10种最常见的C#误区

英文原文:"Learn How to Avoid The 10 Most Common C# Mistakes" About C# C# is one of several languages that target the Microsoft Common Language Runtime (CLR). Languages that target the CLR benefit from features such as cross-language integration and

【甘道夫】通过Mahout构建推荐系统--通过IDRescorer扩展评分规则

通过Mahout构建推荐系统时,假设我们须要添?某些过滤规则(比方:item的创建时间在一年以内),则须要用到IDRescorer接口,该接口源代码例如以下: package org.apache.mahout.cf.taste.recommender; /** * <p> * A {@link Rescorer} which operates on {@code long} primitive IDs, rather than arbitrary {@link Object}s. * Thi

Android调用JNI本地方法经过有点改变

方法注册好后要经过哪些路 Android一个异常捕获项目 https://github.com/xroche/coffeecatch coffeecatch CoffeeCatch, a tiny native POSIX signal catcher (especially useful for JNI code on Android/Dalvik, but it can be used in non-Java projects) It allows to "gracefully"

Collections and Generics

The content and code of this article is referenced from book Pro C#5.0 and the .NET 4.5 Framework by Apress. The intention of the writing is to review the konwledge and gain better understanding of the .net framework.  When the .net platform was rele

7、基本类型和包装类型

Java 的 8 个原始数据类型(Primitive Types,boolean.byte .short.char.int.float.double.long),Java 语言虽然号称一切都是对象,但原始数据类型是例外. Integer 是 int 对应的包装类,它有一个 int 类型的字段存储数据,并且提供了基本操作,比如数学运算.int 和字符串之间转换等.在 Java 5 中,引入了自动装箱和自动拆箱功能(boxing/unboxing),Java 可以根据上下文,自动进行转换,极大地简化

Supported Values for @SuppressWarnings

Update July 2011: This list has been reviewed and made current with the most recent Eclipse 3.7 release. If you are a Java developer and use the new @SuppressWarnings annotation in your code from time-to-time to suppress compiler warnings you, like m

@SuppressWarnings抑制警告

@SuppressWarnings(“XXXX”) 来抑制编译时的警告信息.参数如下: 关键字 用途 all to suppress all warnings boxing  to suppress warnings relative to boxing/unboxing operations cast to suppress warnings relative to cast operations dep-ann to suppress warnings relative to depreca

Node.js背后的V8引擎优化技术

Node.js的执行速度远超Ruby.Python等脚本语言,这背后都是V8引擎的功劳.本文将介绍如何编写高性能Node.js代码.V8是Chrome背后的JavaScript引擎,因此本文的相关优化经验也适用于基于Chrome浏览器的JavaScript引擎. V8优化技术概述 V8引擎在虚拟机与语言性能优化上做了很多工作.不过按照Lars Bak的说法,所有这些优化技术都不是他们创造的,只是在前人的基础上做的改进. 隐藏类(Hidden Class) 为了减少JavaScript中访问属性所