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. Here is an example,
ValueOfDemo
, that gets two strings from the command line, converts them to numbers, and performs arithmetic operations on the values:
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."); } } }
4.5
and 87.2
for the command-line arguments:
a + b = 91.7 a - b = -82.7 a * b = 392.4 a / b = 0.0516055 a % b = 4.5
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. Since a primitive type is returned instead of an object, the
parseFloat()
method is more direct than the valueOf()
method. For example, in the
ValueOfDemo
program, we could use:
float a = Float.parseFloat(args[0]); float b = Float.parseFloat(args[1]);
int i; String s1 = "" + i; //Concatenate "i" with an empty string; //conversion is handled for you.
String s2 = String.valueOf(i); //The valueOf class method.
Number
subclasses includes a class method, toString()
,
that will convert its primitive type to a string. For example:
int i; double d; String s3 = Integer.toString(i); String s4 = Double.toString(d);
ToStringDemo
example uses the toString
method to convert a number to a string.
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."); } }
3 digits before decimal point. 2 digits after decimal point.