`
shell_picker
  • 浏览: 16037 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

IntegerUtils :一个关于整数操作的工具类

    博客分类:
  • Java
阅读更多

最近自己写程序的时候,想提高程序的性能。

 

一个基本的想法是:减少对象的创建。由于我的程序中要大量使用整数操作,包括 Integer.toString() 、Integer.toHexString() 等等。理论上,每次调用这些函数的时候都会解析整数,并生成字符串,所以我自己写了个类来缓存结果,第二次调用的时候就不用再计算了。

 

以下代码发布在公共领域(Public Domain)下,你可以自由地使用它们。

 

/**
 * Integer utils, cached many results of toString/toHexString to get better performance<p>
 * Java 1.4 compatible
 *
 * @author henix[http://shell-picker.iteye.com]
 */
public class IntegerUtils {

    static final int MAX_CACHED = 2048;

    private static Integer[] cache = new Integer[MAX_CACHED];
    private static String[] cachedStrings = new String[MAX_CACHED];
    private static String[] cachedHexStrings = new String[MAX_CACHED];

    /**
     * Implement the same logic as Integer.valueOf(int) in Java 1.5.
     * 
     * @param i
     * @return
     */
    public static Integer getInteger(int i) {
        if (i >= 0 && i < MAX_CACHED) {
            synchronized (cache) {
                if (cache[i] == null) {
                    cache[i] = new Integer(i);
                }
            }
            return cache[i];
        } else {
            return new Integer(i);
        }
    }

    public static String toString(int i) {
        if (i >= 0 && i < MAX_CACHED) {
            synchronized (cachedStrings) {
                if (cachedStrings[i] == null) {
                    cachedStrings[i] = Integer.toString(i);
                }
            }
            return cachedStrings[i];
        } else {
            return Integer.toString(i);
        }
    }

    public static String toHexString(int i) {
        if (i >= 0 && i < MAX_CACHED) {
            synchronized (cachedHexStrings) {
                if (cachedHexStrings[i] == null) {
                    cachedHexStrings[i] = Integer.toHexString(i);
                }
            }
            return cachedHexStrings[i];
        } else {
            return Integer.toHexString(i);
        }
    }

    /**
     * parseInt that never throws exceptions
     * 
     * @param str
     * @return
     */
    public static int parseInt(String str) {
        try {
            return Integer.parseInt(str);
        } catch (Exception e) {
            return 0;
        }
    }

    public static int parseInt(String str, int radix) {
        try {
            return Integer.parseInt(str, radix);
        } catch (Exception e) {
            return 0;
        }
    }
}

 

1
2
分享到:
评论

相关推荐

    java内存管理的小技巧

    对于跨不同JDK环境的情况,可以自定义工具类如`IntegerUtils`来提供`valueOf`方法,确保在各种环境下都能利用这种优化特性。 #### 三、使用StringBuffer进行字符串拼接 在Java中,字符串是不可变的,这意味着每次...

    Java语言中内存管理的几个技巧

    这一策略不仅适用于SUN SDK,在不同SDK环境下亦可通过自定义工具类如`IntegerUtils`保持一致性和优化效果。 #### 二、优先使用`StringBuffer`而非字符串连接 字符串拼接是Java程序中常见的操作,但直接使用`+`...

    Java基础之Integer使用的注意事项及面试题

    从上面的结果可以看到,b1 和 a1 指向同一个对象,而不是同一个数值。同时,c1=100,说明对于-128-127之间的数值,都是从 IntegerCache 中获取的对象,100 对应的 Integer 对象被改变后,后续对于 100 的装箱都被...

    基于MBD开发手册的《Application Modeling Guideline:辅助驾驶系统中的数学模型设计与应用》,Application Modeling Guideline 文档57页 基于

    基于MBD开发手册的《Application Modeling Guideline:辅助驾驶系统中的数学模型设计与应用》,Application Modeling Guideline 文档57页 基于MBD开发手册包含: 1. MBD概述:文档可能会介绍MBD的基本概念,解释为什么它在辅助驾驶系统开发中至关重要。 MBD允许工程师使用数学模型来描述系统行为,这有助于早期发现问题,减少硬件原型制作的需求。 2. 工具选择:在辅助驾驶开发中,常用的MBD工具有MATLAB Simulink、MathWorks的Simulink Design Verifier、Vector的CANoe等。 文档可能涵盖这些工具的特点和适用场景,帮助开发者选择合适的工具。 3. 模型设计:MBD的核心是模型设计,文档会详细说明如何创建和组织模型结构,包括输入 输出接口定义、状态机设计、算法实现等。 对于辅助驾驶系统,这可能涉及到视觉处理、传感器融合、路径规划、决策制定等多个模块。 4. 仿真与验证:MBD工具支持动态仿真,开发者可以运行模型以验证其功能。 文档会介绍如何设置仿真条件,进行时序分析,以及如

    springboot学生答题练习在线平台.zip

    springboot学生答题练习在线平台,含有完整的源码和报告文档

    动力电池用导热硅胶材料研制及性能研究.pdf

    动力电池用导热硅胶材料研制及性能研究.pdf

    2022年12月50430考试真题.pdf

    2022年12月50430考试真题

    输电线路单相接地故障测距:不同短路时刻与位置对双端测距法的影响分析,输电线路单相接地测距 搭建如图1所示的35kV输电网模型,输电侧发电机出口电压10.5kV经过升压变压器变至38.5kV,受电侧经降

    输电线路单相接地故障测距:不同短路时刻与位置对双端测距法的影响分析,输电线路单相接地测距 搭建如图1所示的35kV输电网模型,输电侧发电机出口电压10.5kV经过升压变压器变至38.5kV,受电侧经降压变压器降压至6.6kV。输电线路全长100km,架空线路线路正负序参数为:,,,,,。经过计算可得行波线模速度:。通过故障模块设置A相不同短路时刻与过渡电阻发生单相接地,并根据双端行波测距原理进行故障测距,每次设置故障发生点距离首端距离分别为20km、40km、60km、80km,模型仿真步长为秒。 (1)短路时刻对故障测距的影响 分别设置A相电压正峰值、负峰值、过零值以及任意时刻发生单相接地,对应时刻分别为0.0467s、0.0567s、0.0517s和0.0490s,仿真及计算结果入表2-1所示: 由表1可以看出,在使用双端测距方法时,短路时刻对测量结果无影响,只需两侧时钟保持高度同步计时即可。 (2)过渡电阻对故障测距的影响 分别设置A相在任意时刻(0.049s)发生单接地,接地电阻分别为0Ω、10Ω、100Ω、1000Ω,仿真及计算结果入表2所示: 由表2和图4可知,在使用双端

    2022年03月C语言六级.pdf

    2022年03月C语言六级

    2020年09月Scratch一级实操.pdf

    2020年09月Scratch一级实操

    彩虹聚合登录开心版源码2025版系统下载

    安装教程: 打开config.php文件,填写自己数据库的名称和密码,再访问域名即可安装 源码简介: 彩虹聚合登录系统源码开心版 一站式社会化账号登录系统 彩虹聚合登录是彩虹旗下的社交账号聚合登录系统,为网站提供一站式社交账号登录选项,包括微信、微博、QQ、百度等账号。简化了用户注册和登录流程,提高了用户在网站的浏览体验,快速增加了网站的注册量和用户数据量。系统还提供完整的开发文档和SDK,方便开发者快速接入。 系统特点 全新的用户中心界面,可以查看整体统计数据和公告。 支持会员级别在线购买,并可根据不同会员级别设置可用的登录方式和账号上限。 方便查看应用统计信息,包括不同登录方式占比、新增账户数、请求数等统计信息。 所有登录的账号都可以清晰显示。 搭建说明: 确保您的PHP 版本为7.1 或更高版本。只需访问域名后跟“/install”即可开始安装。 后台管理地址为“/admin”,默认帐号为“admin”,默认密码为“123456”。 通过使用彩虹聚合登录系统,您可以轻松增加网站用户数量,提高用户注册率,为用户提供更好的登录体验。

    TiO2纳米管阵列的制备和应用最新研究进展.pdf

    TiO2纳米管阵列的制备和应用最新研究进展.pdf

    2020完整运营版本电影小程序源码/电影源码/视频源码/影视影院小程序

    淘宝上买的,分享给大家了,并不是什么值钱的物件。东西还是不错的,带流量主激励广告,电视投屏,分享防封技术场景设置功能等,功能比较多。 安装教程:见压缩包内

    2021年03月Python四级理论.pdf

    2021年03月Python四级理论

    2016年3月产品认证基础

    CCAA 2016年3月产品认证基础

    vivado32位乘法器实现

    vivado32位乘法器实现

    "探索光子晶体的神秘魅力:揭示能带与光束位移之下的偏振转换与连续域束缚态",光子晶体正入射光束位移; - 复现:2021子刊NC,这里本质上有关于k空间和实空间的对应,很有趣的物理 - 关键词:光子

    "探索光子晶体的神秘魅力:揭示能带与光束位移之下的偏振转换与连续域束缚态",光子晶体正入射光束位移; - 复现:2021子刊NC,这里本质上有关于k空间和实空间的对应,很有趣的物理。 - 关键词:光子晶体,能带,远场偏振椭圆分布 (偏振场),连续域束缚态 (BIC),光束位移,偏振转 - 软件:comsol,matlab (也可以不用,可comsol内出图),FDTD (仅用于位移部分,3D大尺寸计算更高效) ,核心关键词:光子晶体; 能带; 远场偏振椭圆分布; 连续域束缚态; 光束位移; 偏振转换; 正入射; k空间; 实空间; comsol; matlab; FDTD。,光子晶体中的能带偏振场与光束位移现象研究

    基于SpringBoot-Spring-SpringMVC-Nginx-MySQL-MybatisPlus-Redis的reggie点餐系统设计源码

    本项目是一款综合运用SpringBoot、Spring、SpringMVC、Nginx、MySQL、MybatisPlus和Redis技术栈构建的点餐系统源码。项目包含206个文件,涵盖71个Java源文件、22个JavaScript文件、21个HTML文件、18个CSS文件、8个XML配置文件、6个字体文件、3个字体格式文件、2个Git忽略文件和2个ICO图标文件,旨在为开发者提供一个实用的练手项目,助力掌握后端开发技能。

    2021年09月机器人五级实操.pdf

    2021年09月机器人五级实操

    基于富士通单片机控制的VF变频器方案:适应多种功率与电压输出需求,源码及电路原理图齐全,一款纯VF控制的变频器方案方案说明:可做0.2KW7.5KW 220V,0.2KW75KW 380V,富士通MB

    基于富士通单片机控制的VF变频器方案:适应多种功率与电压输出需求,源码及电路原理图齐全,一款纯VF控制的变频器方案方案说明:可做0.2KW7.5KW 220V,0.2KW75KW 380V,富士通MB90F462A LQFP64单片机控制,可提供源码及电路原理图,PCB图 这是一种基于纯VF控制的变频器方案。它可以在220V电压下提供0.2KW到7.5KW的功率输出,或者在380V电压下提供0.2KW到75KW的功率输出。该方案采用了富士通MB90F462A LQFP64单片机进行控制,并且提供了源码、电路原理图和PCB图。 知识点和领域范围: - 变频器:变频器是一种电力电子设备,用于控制交流电机的转速和输出功率。它通过改变输入电压的频率和幅值,实现对电机的调速控制。 - VF控制:VF控制是一种变频器控制方式,通过同时改变电压和频率的比例,实现对电机转速的精确控制。 - 单片机控制:单片机是一种集成电路芯片,具有处理器、存储器和输入输出接口等功能。它可以用于控制和管理各种电子设备,包括变频器。 - 源码:源码是计算机程序的原始代码,通常以文本形式表示。它包含了程序的逻辑

Global site tag (gtag.js) - Google Analytics