Documentation

The Java™ Tutorials
Hide TOC
Converting Between Numbers and Strings在数字和字符串之间转换
Trail: Learning the Java Language
Lesson: Numbers and Strings
Section: Strings

Converting Between Numbers and Strings在数字和字符串之间转换

Converting Strings to Numbers将字符串转换为数字

Frequently, a program ends up with numeric data in a string object—a value entered by the user, for example.通常,程序以字符串对象中的数字数据结束—例如,用户输入的值。

The Number subclasses that wrap primitive numeric types ( Byte, Integer, Double, Float, Long, and Short) each provide a class method named valueOf that converts a string to an object of that type.包装基本数字类型(ByteIntegerDoubleFloatLongShort)的Number子类都提供了一个名为valueOf的类方法,该类方法将字符串转换为该类型的对象。Here is an example, ValueOfDemo , that gets two strings from the command line, converts them to numbers, and performs arithmetic operations on the values:以下是ValueOfDemo示例,它从命令行获取两个字符串,将其转换为数字,并对值执行算术运算:

public class ValueOfDemo {
    public static void main(String[] args) {

        // this program requires two 
        // arguments on the command line 
        if (args.length == 2) {
            // convert strings to numbers
            float a = (Float.valueOf(args[0])).floatValue(); 
            float b = (Float.valueOf(args[1])).floatValue();

            // do some arithmetic
            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.");
        }
    }
}

The following is the output from the program when you use 4.5 and 87.2 for the command-line arguments:以下是使用4.587.2作为命令行参数时程序的输出:

a + b = 91.7
a - b = -82.7
a * b = 392.4
a / b = 0.0516055
a % b = 4.5

Note: Each of the Number subclasses that wrap primitive numeric types also provides a parseXXXX() method (for example, parseFloat()) that can be used to convert strings to primitive numbers.包装基元数字类型的每个Number子类还提供一个parseXXXX()方法(例如,parseFloat()),可用于将字符串转换为基元数字。Since a primitive type is returned instead of an object, the parseFloat() method is more direct than the valueOf() method.由于返回的是基元类型而不是对象,因此parseFloat()方法比valueOf()方法更直接。For example, in the ValueOfDemo program, we could use:例如,在ValueOfDemo程序中,我们可以使用:
float a = Float.parseFloat(args[0]);
float b = Float.parseFloat(args[1]);

Converting Numbers to Strings将数字转换为字符串

Sometimes you need to convert a number to a string because you need to operate on the value in its string form.有时需要将数字转换为字符串,因为需要对字符串形式的值进行操作。There are several easy ways to convert a number to a string:有几种简单的方法可以将数字转换为字符串:

int i;
// Concatenate "i" with an empty string; conversion is handled for you.
String s1 = "" + i;

or

// The valueOf class method.
String s2 = String.valueOf(i);

Each of the Number subclasses includes a class method, toString(), that will convert its primitive type to a string.每个Number子类都包含一个类方法toString(),该方法将其原语类型转换为字符串。For example:例如:

int i;
double d;
String s3 = Integer.toString(i); 
String s4 = Double.toString(d);

The ToStringDemo example uses the toString method to convert a number to a string.ToStringDemo示例使用toString方法将数字转换为字符串。The program then uses some string methods to compute the number of digits before and after the decimal point:然后,程序使用一些字符串方法计算小数点前后的位数:

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.");
    }
}

The output of this program is:该程序的输出为:

3 digits before decimal point.
2 digits after decimal point.

Previous page: Strings
Next page: Manipulating Characters in a String