在日常开发工作中,我们经常需要将一个字符串值转换成整型值,这个时候我们可以选择Integer.valueOfInteger.parseInt两个选择

  • Integer.valueOf()返回值是Integer类型
  • Integer.parseInt()返回值是int类型

而且,在Integer类中还有一个内部的缓存类IntegerCache,它默认缓存了[-128, 127]的Integer值

  • Integer.parseInt()很简单,它是将一个字符串转成10进制的int数值
  • Integer.valueOf()流程比较复杂,下面我们看一张流程图

Integer.valueOf和Integer.parseInt区别 - 图1

  • 使用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 中提取的值
  1. public class Test{
  2. public static void main(String args[]){
  3. Integer x =Integer.valueOf(9);
  4. Double c = Double.valueOf(5);
  5. Float a = Float.valueOf("80");
  6. Integer b = Integer.valueOf("444",16); // 使用 16 进制
  7. System.out.println(x);
  8. System.out.println(c);
  9. System.out.println(a);
  10. System.out.println(b);
  11. }
  12. }
  13. 9
  14. 5.0
  15. 80.0
  16. 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 等进制数)
  1. public class Test{
  2. public static void main(String args[]){
  3. int x =Integer.parseInt("9");
  4. double c = Double.parseDouble("5");
  5. int b = Integer.parseInt("444",16);
  6. System.out.println(x);
  7. System.out.println(c);
  8. System.out.println(b);
  9. }
  10. }
  11. 9
  12. 5.0
  13. 1092