面试题:如何将 String 类型转化成 Number 类型 ?

在 Java 中,String 类型可以通过多种方式转换成 Number 类型(如 IntegerDouble 等)。以下是常见的转换方法:


1. 使用包装类的 parseXxx 方法

Java 为每种基本数据类型提供了对应的包装类(如 IntegerDouble 等),这些类提供了 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 转换为对应的包装类对象(如 IntegerDouble 等),然后可以进一步转换为基本数据类型。

示例:

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 类型的常用方法包括:

  1. 使用包装类的 parseXxx 方法(如 Integer.parseInt)。
  2. 使用包装类的 valueOf 方法(如 Integer.valueOf)。
  3. 使用 NumberFormat 或 DecimalFormat 处理复杂格式。
  4. 使用 Scanner 类从字符串中提取数字。
  5. 使用 BigDecimal 或 BigInteger 处理高精度数字。
THE END
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容