📜  Java中的字符串到整数– parseInt()

📅  最后修改于: 2020-03-27 05:07:38             🧑  作者: Mango

在对字符串进行操作时,有时需要将以字符串表示的数字转换为整数类型。在Java中通常用于将String转换为Integer的方法是parseInt()。
如何在Java中使用parseInt()方法?
此方法有两种变体:

public static int parseInt(String s) throws NumberFormatException
     -   这个方法解析string到一个有符号的整数
public static int parseInt(String s, int radix) throws NumberFormatException
     -  这个方法解析string到一个有符号的整数,但进制根据radix来决定

返回:
简单来说,这两种方法都将字符串转换为等效的整数。唯一的区别是参数基数的区别。第一种方法可以视为与第二种方法的等价基数= 10(十进制)。
参数:

  • s –需要转换为整数的字符串。它也可以仅具有第一个字符,以减号’-‘(‘\ u002D’)或加号’+'(‘\ u002B’)表示数字的符号。
  • radix –解析字符串时使用的基数。
    注意:此参数仅用于方法的第二种形式。

异常:
如果发生以下任何一种情况,则此方法引发NumberFormatException:
对于这两种变体:

  • 字符串为空或长度为零
  • 字符串表示的值不是int类型的值
  • 专门针对该函数的parseInt(String s,int radix)变体:
    • 第二个参数小于Character.MIN_RADIX或大于Character.MAX_RADIX
    • 字符串的任何字符都不是指定基数的数字,除非第一个字符可以是减号’-‘(‘\ u002D’)或加号’+'(‘\ u002B’)

例子:

parseInt("20") 返回 20
parseInt("+20") 返回 20
parseInt("-20") 返回 -20
parseInt("20", 16) 返回 16, (2)*16^1 + (0)*16^0 = 32
parseInt("2147483648", 10) 报错  NumberFormatException
parseInt("99", 8) 报错  NumberFormatException
parseInt("geeks", 28) 报错  NumberFormatException
parseInt("geeks", 29) 返回 11670324,

parseInt("geeksforgeeks", 29) 报错  NumberFormatException 

 

// Java展示parseInt()如何工作
public class GFG
{
    public static void main(String args[])
    {
        int decimalExample = Integer.parseInt("20");
        int signedPositiveExample = Integer.parseInt("+20");
        int signedNegativeExample = Integer.parseInt("-20");
        int radixExample = Integer.parseInt("20",16);
        int stringExample = Integer.parseInt("geeks",29);
        // 解注释如下代码,可以验证报错
        // NumberFormatException
        //   String invalidArguments = "";
        //   int emptyString = Integer.parseInt(invalidArguments);
        //   int outOfRangeOfInteger = Integer.parseInt("芒果文档",29);
        //   int domainOfNumberSystem = Integer.parseInt("芒果",28);
        System.out.println(decimalExample);
        System.out.println(signedPositiveExample);
        System.out.println(signedNegativeExample);
        System.out.println(radixExample);
        System.out.println(stringExample);
    }
}

输出:

20
20
-20
32
11670324

同样,我们可以将字符串转换为任何其他原始数据类型:
parseLong() :将字符串解析为Long
parseDouble() :将字符串解析为Double
如果我们想不使用parseInt()将字符串转换为整数,则可以使用valueOf()方法。它还有两个类似于parseInt()的变体。

parseInt()和valueOf()之间的区别:
parseInt()解析字符串并返回原始整数类型。但是,valueOf()返回一个Integer对象。
注意: valueOf()内部使用parseInt()转换为整数。

// Java展示函数valueOf()如何使用
public class GFG
{
    public static void main(String args[])
    {
        int decimalExample = Integer.valueOf("20");
        int signedPositiveExample = Integer.valueOf("+20");
        int signedNegativeExample = Integer.valueOf("-20");
        int radixExample = Integer.valueOf("20",16);
        int stringExample = Integer.valueOf("geeks",29);
        System.out.println(decimalExample);
        System.out.println(signedPositiveExample);
        System.out.println(signedNegativeExample);
        System.out.println(radixExample);
        System.out.println(stringExample);
    }
}

输出:

20
20
-20
32
11670324