区分Integer.getInteger和Integer.valueOf、Integer.parseInt() 的使用方法
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更容易让人发现错误。
还有一个就是Integer.parseInt() 返回的是一个int的值。
parseInt
public static int parseInt(String s, int radix) throws NumberFormatException
以第二个参数所指定基数将字符串参数分析为一个带符号的整数。除了第一个字符可以用 ASCII 的减号 '-' 来表示一个负值外,字符串中的字符必须是指定基数的数(由 Character.digit 是否返回非负值决定)。返回作为结果的整数值。
参数:
s - 包含整数的 String 。
radix - 使用的进制
返回值:
指定基数的字符串参数所表示的整数。
抛出: NumberFormatException
若该串不包含一个可分析的整数。
parseInt
public static int parseInt(String s) throws NumberFormatException
将字符串参数作为带符号十进制整数来分析。除过第一个字符为 ASCII 字符中减号 '-' 表示的负数,字符串中的字符都必须是十进制数。
参数:
s - 串。
返回值:
十进制参数表示的整数。
抛出: NumberFormatException
若该串不包含一个可分析的整数。
例题:
设有下面两个赋值语句:
a = Integer.parseInt(“123”);
b = Integer.valueOf(“123”).intValue();
下述说法正确的是( d )。
A、a是整数类型变量,b是整数类对象。
B、a是整数类对象,b是整数类型变量。
C、a和b都是整数类对象并且值相等。
D、a和b都是整数类型变量并且值相等。
详细解析:
parseInt(String s )方法是类Integer的静态方法,它的作用就是将形参 s 转化为整数,比如:
Interger.parseInt("1")=1;
Integer.parseInt("20")=20;
Integer.parseInt("324")=324;
当然,s 表示的整数必须合法,不然是会抛异常的。
valueOf(String s )也是Integer类的静态方法,它的作用是将形参 s 转化为Integer对象,
什么是Integer对象,Integer就是基本数据类型int型包装类,就是将int包装成一个类,这样在很多场合下是必须的。如果理解不了,你就认为int是Integer的mini版,好用了很多,但也丢失了一些功能,好了,看代码:
Interger.valueOf("123")=Integer(123)
这时候Integer(123)就是整数123的对象表示形式,它再调用intValue()方法,就是将123的对象表示形式转化为基本数据123
所以,选择D
转自:http://blog.csdn.net/mingtianhaiyouwo/article/details/51351159
区分Integer.getInteger和Integer.valueOf、Integer.parseInt() 的使用方法的更多相关文章
- java中Integer,String判断相等与integer的比较大小
package sfk.bbs.test.springjsbctempletTest; import static org.junit.Assert.*; import org.junit.Test; ...
- 一、基础篇--1.1Java基础-int 和 Integer 有什么区别,Integer的值缓存范围
int和Integer的区别 int是基本数据类型,Integer是int的包装类. Integer必须实例化后才能使用,int变量不需要. Integer实际是对象的引用,生成一个新对象实际上是生成 ...
- 【leetcode】Integer to Roman & Roman to Integer(easy)
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
- 5.Integer to Roman && Roman to Integer
Roman chart: http://literacy.kent.edu/Minigrants/Cinci/romanchart.htm Integer to Roman Given an inte ...
- 【LeetCode】12 & 13 - Integer to Roman & Roman to Integer
12 - Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be wit ...
- Integer to Roman & Roman to Integer
Integer to Roman Given an integer, convert it to a roman numeral. The number is guaranteed to be wit ...
- Java 的Integer、int与new Integer到底怎么回事?
先做一些总结,询问了些经验比较多的师傅,在这里表示感谢,然后自己总结下,今天的收获分享给大家: 1. int 和Integer在进行比较的时候,Integer会进行拆箱,转为int值与int进行比较. ...
- jsp中遇到Integer的方法valueOf()和parseInt()的区别.前者要求是对象类型,后者是数字型字符串
他们有本质区别,Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完 ...
- Android Integer.decode()和Intger.valueof()
decode合适用来分析数字 可以分析 8进:010=>分析后为 8 10进:10=>分析后为 10 16进:#10|0X10|0x10=>分析后是 16 而valueof 只 ...
随机推荐
- 【传智播客】Libevent学习笔记(四):事件event
目录 00. 目录 01. 事件概述 02. 创建事件 03. 事件的标志 04. 事件持久性 05. 超时事件 06. 信号事件 07. 设置不使用堆分配的事件 08. 事件的未决和非未决 09. ...
- 下载GitHub上的dnSpy源码
一.方法 下载GitHub上项目的方法,目前我知道的有四种: 1.用svn软件checkout下载 2.安装git,然后git命令下载 3.直接下载项目压缩包 4.安装GitHub的客户端,然后下载项 ...
- 记录xerces使用(VS2017 C++)
1.编译xerces,获得dll文件和lib文件 2.将dll文件和lib文件拷贝到使用xerces的工程目录里面去 3.配置VS2017 C/C++ -> All Options --&g ...
- selenium 浏览器基础操作(Python)
想要开始测试,首先要清楚测试什么浏览器.如何为浏览器安装驱动,前面已经聊过. 其次要清楚如何打开浏览器,这一点,在前面的代码中,也体现过,但是并未深究.下面就来聊一聊对浏览器操作的那些事儿. from ...
- 树莓派 - 蓝牙 (1) 试试Beacon
首先先了解一下bluez, 以及常用的tools. - hcitool.bluetoothctl等工具,可以进行BLE设备的扫描.连接.配对.广播等操作: - hcitool可以发送HCI comma ...
- CSS3---媒体查询与响应式布局
1. 值 设备类型 All 所有设备 Braille 盲人用点字法触觉回馈设备 Embossed 盲文打印机 Handheld 便携设备 Print 打印用纸或打印预览视图 Projection 各种 ...
- laravel使用总结(一)
安装 composer create-project laravel/laravel learnlaravel5 --prefer-dist v5.3.* 安装成功之后会自动生成一个key > ...
- POJ 2267 From Dusk till Dawn or: Vladimir the Vampire(最短路变形)
题意: 有一个吸血鬼要旅游, 他只能在晚上6点到第二天凌晨6点行动(18:00 ~ 6:00), 然后每天中午12点要喝1L的血(12:00), 现有m条火车的发车时间和行程时间, 问他从a到达b需要 ...
- 3. express 框架使用 vue框架 weiUI
express 1. 安装 npm install express --save 2. 创建项目 vue js 安装Vuejs vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue- ...
- 如何取SQL结果集的第一条记录
在SQL Server数据库中,使用top关键字: SELECT TOP number|percent column_name(s) FROM table_name 在MySQL数据库中,使用LIMI ...