93. Java 数字和字符串 - 字符串与数字互相转换

93. Java 数字和字符串 - 字符串与数字互相转换

将字符串转换为数字

在实际开发中,用户输入的数据通常以字符串形式存在。如果要对这些字符串中的数字数据进行算术运算,就需要先将字符串转换为数字。Java 中,所有包装基本数字类型的 Number 子类(如 Byte、Integer、Double、Float、Long 和 Short)都提供了一个静态方法 valueOf(),它可以把字符串转换为对应类型的对象。转换后的对象可以进一步调用对应的实例方法获取原始数据。

例如,下面的示例程序 ValueOfDemo 从命令行参数中获取两个字符串,将它们转换为 float 类型,并执行基本的算术运算:

java 复制代码
 public class ValueOfDemo {
    public static void main(String[] args) {

        // 此程序要求在命令行中传入两个参数
        if (args.length == 2) {
            // 将字符串转换为数字
            float a = (Float.valueOf(args[0])).floatValue(); 
            float b = (Float.valueOf(args[1])).floatValue();

            // 执行算术运算并打印结果
            System.out.println("a + b = " + (a + b));
            System.out.println("a - b = " + (a - b));
            System.out.println("a * b = " + (a * b));
            System.out.println("a / b = " + (a / b));
            System.out.println("a % b = " + (a % b));
        } else {
            System.out.println("This program requires two command-line arguments.");
        }
    }
}

假设命令行参数分别为 "4.5""87.2",程序输出如下:

java 复制代码
a + b = 91.7
a - b = -82.7
a * b = 392.4
a / b = 0.0516055
a % b = 4.5

使用 parseXXXX() 方法

除了 valueOf() 方法外,每个包装类还提供了一个 parseXXX() 方法,如 Float.parseFloat(),直接将字符串转换为原始数据类型而非对象。使用 parseXXXX() 方法更加简洁,因为不需要再调用额外的实例方法来获取原始值。例如,上述示例中可以改为:

java 复制代码
float a = Float.parseFloat(args[0]);
float b = Float.parseFloat(args[1]);

这样代码更为直观。


将数字转换为字符串

在某些情况下,我们需要将数字转换为字符串,以便进行字符串操作或输出。Java 提供了几种常见的转换方法:

1. 使用 + 运算符

最简单的方法是将数字与空字符串连接,Java 会自动将数字转换为字符串:

java 复制代码
int i = 123;
String s1 = "" + i;  // s1 的值为 "123"

2. 使用 String.valueOf() 方法

String 类提供了静态方法 valueOf(),可以接受各种数据类型并返回其字符串表示。例如:

java 复制代码
int i = 123;
String s2 = String.valueOf(i);  // s2 的值为 "123"

3. 使用各包装类的 toString() 方法

每个数字包装类(如 Integer、Double 等)也提供了静态的 toString() 方法,用于将数字转换为字符串:

java 复制代码
int i = 123;
double d = 45.67;
String s3 = Integer.toString(i);  // "123"
String s4 = Double.toString(d);   // "45.67"

示例程序:ToStringDemo

下面的示例程序演示了如何将数字转换为字符串,并利用字符串方法对数字格式进行进一步处理(例如计算小数点前后的位数)。

java 复制代码
public class ToStringDemo {
    public static void main(String[] args) {
        double d = 858.48;
        String s = Double.toString(d);
        
        // 找出小数点的位置
        int dot = s.indexOf('.');
        
        System.out.println(dot + " digits before decimal point.");
        System.out.println((s.length() - dot - 1) + " digits after decimal point.");
    }
}

程序输出为:

java 复制代码
3 digits before decimal point.
2 digits after decimal point.

说明:字符串 "858.48" 中,小数点前有 3 位,小数点后有 2 位。


总结

  • 将字符串转换为数字 :使用包装类的 valueOf()parseXXX() 方法,将字符串转换为对应的数字类型。valueOf() 返回对象,而 parseXXX() 返回原始数据类型。
  • 将数字转换为字符串 :可以通过 + 运算符、String.valueOf() 或包装类的 toString() 方法来实现。
  • 以上方法在实际开发中非常常用,能够方便地处理用户输入、数据转换和格式化输出等场景。

通过这些示例和讲解,希望大家能够熟练掌握字符串与数字之间的转换方法,从而编写出更灵活、健壮的代码。

相关推荐
旺仔Sec5 分钟前
2026年度河北省职业院校技能竞赛“Web技术”(高职组)赛项竞赛任务
运维·服务器·前端
用户4099322502126 分钟前
Vue的Class绑定对象语法如何让动态类名切换变得直观高效?
前端·ai编程·trae
韩立学长7 分钟前
基于Springboot酒店管理系统的设计与实现c12044zy(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
资深web全栈开发19 分钟前
深入理解 Google Wire:Go 语言的编译时依赖注入框架
开发语言·后端·golang
忘记92623 分钟前
什么是spring boot
java·spring boot·后端
expect7g26 分钟前
Paimon源码解读 -- Compaction-6.CompactStrategy
大数据·后端·flink
GIS之路36 分钟前
GIS 数据转换:GDAL 实现将 CSV 转换为 Shp 数据(一)
前端
喵个咪40 分钟前
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:极速搭建微服务应用
后端·微服务·go
武清伯MVP1 小时前
深入了解Canvas:HTML5时代的绘图利器(一)
前端·html5·canvas
一水鉴天1 小时前
整体设计 定稿 之24 dashboard.html 增加三层次动态记录体系仪表盘 之2 程序 (Q208 之1)
前端·html