本Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
请参阅Java语言变更以了解Java SE 9及其后续版本中更新的语言特性的摘要。
请参阅JDK发行说明以获取有关所有JDK版本的新功能、增强功能和已删除或已弃用选项的信息。
通常情况下,程序会得到一个字符串对象中的数字数据,比如用户输入的值。
包装原始数值类型的Number
子类(Byte
、Integer
、Double
、Float
、Long
和Short
)都提供了一个名为valueOf
的类方法,用于将字符串转换为相应类型的对象。下面是一个示例:ValueOfDemo
,从命令行获取两个字符串,将它们转换为数字,并对这些值进行算术运算:
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("该程序需要在命令行上提供两个参数。"); } } }
当使用命令行参数4.5
和87.2
时,程序的输出如下:
a + b = 91.7 a - b = -82.7 a * b = 392.4 a / b = 0.0516055 a % b = 4.5
Number
子类还提供了一个parseXXXX()
方法(例如parseFloat()
),用于将字符串转换为原始数值。由于返回的是原始类型而不是对象,parseFloat()
方法比valueOf()
方法更直接。例如,在ValueOfDemo
程序中,我们可以使用以下代码:
float a = Float.parseFloat(args[0]); float b = Float.parseFloat(args[1]);
有时候你需要将一个数字转换为字符串,因为你需要在其字符串形式上进行操作。有几种简单的方法可以将数字转换为字符串:
int i; // 将"i"与一个空字符串连接;转换将由系统自动处理。 String s1 = "" + i;
或者
// 使用valueOf类方法。 String s2 = String.valueOf(i);
每个Number
子类都包括一个类方法toString()
,它将把其基本类型转换为字符串。例如:
int i; double d; String s3 = Integer.toString(i); String s4 = Double.toString(d);
这个ToStringDemo
示例使用toString
方法将一个数字转换为字符串。程序然后使用一些字符串方法来计算小数点前后的数字个数:
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.