博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
区分Integer.getInteger和Integer.valueOf使用方法
阅读量:5065 次
发布时间:2019-06-12

本文共 1031 字,大约阅读时间需要 3 分钟。

Integer类有两个看起来很类似的静态方法,一个是Integer.getInteger(String),另外一个是Integer.valueOf(String)。如果只看方法名称的话,很容易将这两个方法的功能区分开来,还是让我们来看看Java文档。

    Integer.getInteger(String)的功能是根据指定的名称得到系统属性的整数值。第一个参数将被认为是系统属性的名称。系统属性可以通过  System.getProperty(java.lang.String)方法访问得到。属性值字符串将被解释成一个整数,并且以表示这个值的Integer对象形式返回。可能出现的数字格式的详细说明可以在 getProperty 的定义说明里找到。

    Integer.valueOf(String)的功能是获取给定的字符串所代表的整数。

    那么就让我来看看是否理解了:

  • Integer.valueOf(String)方法假设String参数表达的是一个数值,会把该数值String转化成Integer。也就是说,  Integer.valueOf("123") 得到一个Integer对象,其值是123。
  • Integer.getInteger(String)方法假设String参数是一个系统属性数值的名称,会读取该系统属性,然后把系统属性的值转换成一个数字。也就是说,  Integer.getInteger("12345") 应该是得到 null(假设没有名为12345的系统属性)。


    虽然这两个方法的功能是不一样的,但是从方法的名称上并没有明显的区分开来,常常容易让人混淆。有很多bug就是因为想使用valueOf的功能但是错误的使用了getInteger方法而导致的。

    这是在Java语言中会产生歧义的一个糟糕的例子。另外一个糟糕的例子是Boolean.getBoolean("true")。Boolean.getBoolean(String)的功能和Integer.getInteger(String)是类似的。通常我们都不会有一个名为“true”的系统属性,因此Boolean.getBoolean("true")通常会返回Boolean.FALSE。这里甚至比Integer.getInteger(String)还要糟糕,还不如返回一个null更容易让人发现错误。

转载于:https://www.cnblogs.com/pdca/p/4490811.html

你可能感兴趣的文章
通过Url网络编程实现下载
查看>>
@RequestParam 绑定List参数
查看>>
poj 2195Going Home
查看>>
伪元素消除浮动
查看>>
HttpClient的几个实现类
查看>>
关于对接保税仓物流系统或支付系统推送报关单的一些琐碎的问题
查看>>
mysql将一个库中表的某几个字段插入到另一个库中的表
查看>>
mysql 索引长度tips innodb和myisam引擎
查看>>
[转]Spark能否取代Hadoop?
查看>>
Stack Pointer Tracker
查看>>
IIC原理及简单流程
查看>>
适用于单片机的数据加密算法:xxtea
查看>>
iframe框架
查看>>
CSS标签详解
查看>>
图片随鼠标渐动或者倾斜
查看>>
swiper轮播后hover无效问题解决案例
查看>>
第九周学习进度条
查看>>
servlet的几个函数
查看>>
elk的一些零碎知识
查看>>
史上最全的MSSQL笔记
查看>>