在 Java 中,String
类型可以通过多种方式转换成 Number
类型(如 Integer
、Double
等)。以下是常见的转换方法:
1. 使用包装类的 parseXxx
方法
Java 为每种基本数据类型提供了对应的包装类(如 Integer
、Double
等),这些类提供了 parseXxx
方法,可以将 String
转换为对应的基本数据类型。
示例:
String str = "123";
// 转换为 int
int intValue = Integer.parseInt(str);
// 转换为 double
double doubleValue = Double.parseDouble(str);
// 转换为 long
long longValue = Long.parseLong(str);
注意:
- 如果字符串格式不正确(例如包含非数字字符),会抛出
NumberFormatException
。
2. 使用包装类的 valueOf
方法
valueOf
方法可以将 String
转换为对应的包装类对象(如 Integer
、Double
等),然后可以进一步转换为基本数据类型。
示例:
String str = "123.45";
// 转换为 Integer 对象
Integer integerValue = Integer.valueOf(str);
// 转换为 Double 对象
Double doubleValue = Double.valueOf(str);
注意:
valueOf
方法也会抛出NumberFormatException
,如果字符串格式不正确。valueOf
返回的是包装类对象,如果需要基本数据类型,可以调用intValue()
、doubleValue()
等方法。
3. 使用 NumberFormat
或 DecimalFormat
类
如果需要处理复杂的数字格式(如带有千位分隔符的字符串),可以使用 NumberFormat
或 DecimalFormat
类。
示例:
import java.text.NumberFormat;
import java.text.ParseException;
public class Main {
public static void main(String[] args) {
String str = "1,234.56";
NumberFormat format = NumberFormat.getInstance();
try {
Number number = format.parse(str);
double doubleValue = number.doubleValue();
System.out.println(doubleValue); // 输出: 1234.56
} catch (ParseException e) {
e.printStackTrace();
}
}
}
注意:
NumberFormat
可以处理本地化的数字格式(如不同语言环境下的千位分隔符)。- 如果字符串格式不正确,会抛出
ParseException
。
4. 使用 Scanner
类
Scanner
类可以用于从字符串中解析数字。
示例:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String str = "123";
Scanner scanner = new Scanner(str);
if (scanner.hasNextInt()) {
int intValue = scanner.nextInt();
System.out.println(intValue); // 输出: 123
}
scanner.close();
}
}
注意:
Scanner
适合从复杂的输入中提取数字。- 如果字符串格式不正确,
nextInt()
会抛出InputMismatchException
。
5. 转换为 BigDecimal
或 BigInteger
如果需要高精度的计算,可以将 String
转换为 BigDecimal
或 BigInteger
。
示例:
import java.math.BigDecimal;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
String str = "12345678901234567890";
// 转换为 BigInteger
BigInteger bigInteger = new BigInteger(str);
// 转换为 BigDecimal
BigDecimal bigDecimal = new BigDecimal(str);
}
}
注意:
BigDecimal
和BigInteger
适合处理非常大的数字或需要高精度的场景。
总结:
将 String
转换为 Number
类型的常用方法包括:
- 使用包装类的
parseXxx
方法(如Integer.parseInt
)。 - 使用包装类的
valueOf
方法(如Integer.valueOf
)。 - 使用
NumberFormat
或DecimalFormat
处理复杂格式。 - 使用
Scanner
类从字符串中提取数字。 - 使用
BigDecimal
或BigInteger
处理高精度数字。
THE END
暂无评论内容