在日常开发工作中,我们经常需要将一个字符串值转换成整型值,这个时候我们可以选择Integer.valueOf
和Integer.parseInt
两个选择
Integer.valueOf()
返回值是Integer
类型Integer.parseInt()
返回值是int
类型
而且,在Integer类中还有一个内部的缓存类IntegerCache
,它默认缓存了[-128, 127]的Integer值
Integer.parseInt()
很简单,它是将一个字符串转成10进制的int数值Integer.valueOf()
流程比较复杂,下面我们看一张流程图
- 使用
Integer**.**parseInt
方法将Integer**.**valueOf
的字符串类型参数转成int
类型 - 判断参数值是否在[-128, 127]范围之间,如果在范围内则直接从
IntegerCache
类中取值 - 如果不在范围内则直接创建一个新的对象
valueOf() 方法
valueOf()
方法用于返回给定参数的原生 Number 对象值,参数可以是原生数据类型, String等
该方法是静态方法。该方法可以接收两个参数,一个是字符串,一个是基数
语法
该方法有以下几种语法格式:
static Integer valueOf(int i)
static Integer valueOf(String s)
static Integer valueOf(String s, int radix)
参数
- i — Integer 对象的整数
- s — Integer 对象的字符串
- radix —在解析字符串 s 时使用的进制数,用于指定使用的进制数
返回值
Integer valueOf(int i)
:返回一个表示指定的 int 值的 Integer 实例Integer valueOf(String s)
:返回保存指定的 String 的值的 Integer 对象Integer valueOf(String s, int radix)
:返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值
public class Test{
public static void main(String args[]){
Integer x =Integer.valueOf(9);
Double c = Double.valueOf(5);
Float a = Float.valueOf("80");
Integer b = Integer.valueOf("444",16); // 使用 16 进制
System.out.println(x);
System.out.println(c);
System.out.println(a);
System.out.println(b);
}
}
9
5.0
80.0
1092
parseInt() 方法
parseInt()
方法用于将字符串参数作为有符号的十进制整数进行解析
如果方法有两个参数, 使用第二个参数指定的基数,将字符串参数解析为有符号的整数
语法
所有 Number 派生类 parseInt 方法格式类似如下:
static int parseInt(String s)
static int parseInt(String s, int radix)
参数
s -- 十进制表示的字符串
radix -- 指定的基数
返回值
parseInt(String s)
:返回用十进制参数表示的整数值parseInt(int i)
:使用指定基数的字符串参数表示的整数 (基数可以是 10, 2, 8, 或 16 等进制数)
public class Test{
public static void main(String args[]){
int x =Integer.parseInt("9");
double c = Double.parseDouble("5");
int b = Integer.parseInt("444",16);
System.out.println(x);
System.out.println(c);
System.out.println(b);
}
}
9
5.0
1092