文
章
目
录
章
目
录
学会使用Java中的Long.parseLong(String)、Long.valueOf(String)方法和new Long(String)构造函数将字符串转换为Long类型。
String number = "2018"; //String
long value1 = Long.parseLong( number, 10 );
long value2 = Long.valueOf( number );
long value3 = new Long( number );
1.使用Long.valueOf(String)
Long.valueOf()方法将输入的字符串解析为带符号的十进制long类型。字符串中的字符必须都是十进制数字,除了第一个字符可以是负号(-)表示负数,也可以是正号(+)表示正数。
结果的long值与基数10中的字符串参数完全相同。在下面的示例中,我们将一个正数和一个负数转换为long值。
String positiveNumber = "+12001";
long value1 = Long.valueOf(positiveNumber); //12001L
String negativeNumber = "-22002";
long value2 = Long.valueOf(negativeNumber); //-22002L
如果字符串无法解析为long类型,它会抛出NumberFormatException异常。
Assertions.assertThrows(NumberFormatException.class, () -> {
Long.valueOf("alexa");
});
2.使用Long.parseLong(String)
Long.parseLong(String)方法的规则与Long.valueOf(String)方法相似。
它将字符串参数解析为带符号的十进制长整型值。 字符串中的字符必须都是十进制数字,除了第一个字符可以是负号(-)表示负数,也可以是正号(+)表示正数。 结果的long值与基数10中的字符串参数完全相同。 再次,我们将使用parseLong() API将一个正数和一个负数转换为long值。
String positiveNumber = "+12001";
long value1 = Long.parseLong(positiveNumber); //12001L
String negativeNumber = "-22002";
long value2 = Long.parseLong(negativeNumber); //-22002L
如果输入的字符串属于另一个进制,那么我们可以将进制作为方法的第二个输入参数传递。
String numberInHex = "-FF";
// 将其按照十六进制解析
long value = Long.parseLong(numberInHex, 16); //-255L
3.使用new Long(String)构造函数
另一种有用的方法是利用Long类的构造函数来创建新的long对象。自Java 9以来,该方法已被弃用,建议使用如上所述的parseLong() API。
long value = new Long("100"); //100L
4.NumberFormatException
使用任何给定的方法,如果输入的字符串除了第一个字符可以是加号或减号符号外,没有只包含十进制数字,我们将在运行时收到NumberFormatException错误。
String number = "12001xyz";
long value = Long.parseLong(number);
//抛出异常信息
Exception in thread "main" java.lang.NumberFormatException: For input string: "12001xyz"