很多使用原始类型的地方,其实也可以使用java.lang.Number类型的对象,并且通常是能够自动转换的
Number.parseXXX,和Number.valueOf可以得到该类型对象
java.io.PrintStream
类中有两个方法,printf和foumat,可以用来替代print和println
format(String format, Object... args)//并且有重载
巧了,System.out正好是PrintStream类型
System.out.format("The value of " + "the float variable is " + "%f, while the value of the " + "integer variable is %d, " + "and the string is %s", floatVar, intVar, stringVar);
关于%后面都能加什么,可以查看java.util.Formatter类
也可以用java.text.DecimalFormat类,来控制前导0,后导0,前后缀,分隔符等
import java.text.*; public class DecimalFormatDemo { static public void customFormat(String pattern, double value ) { DecimalFormat myFormatter = new DecimalFormat(pattern); String output = myFormatter.format(value); System.out.println(value + " " + pattern + " " + output); } static public void main(String[] args) { customFormat("###,###.###", 123456.789); customFormat("###.##", 123456.789); customFormat("000000.000", 123.78); customFormat("$###,###.###", 12345.67); } }
The output is:
123456.789 ###,###.### 123,456.789 123456.789 ###.## 123456.79 123.78 000000.000 000123.780 12345.67 $###,###.### $12,345.67
java.lang.Math类包含了更多的算术运算,所有方法都是静态的,可以
import static java.lang.Math.*;//导入静态成员,可直接使用
Math.random()方法返回[0.0,1.0)的一个随机数,如果想生成多个,要用java.util.Random的实例方法
java.lang.Character类是char的包装类,但并不是Number的子类
java.lang.String类表示字符串,也就是字符序列
对每个字串字面量,编译器都会生成一个String对象,另外也可以调用它的13种构造手动生成
所有的Number,Character,String类型对象,都是不可更改的,所以String下面的很多方法都是生成了新的String
+操作符可以用来连接String,或者其他类型,如果是对象的话,会调用toString()方法
String字面量不能跨行书写,所以只能用+连接起来
String.format()方法返回另一个String
String fs; fs = String.format("The value of the float " + "variable is %f, while " + "the value of the " + "integer variable is %d, " + " and the string is %s", floatVar, intVar, stringVar); System.out.println(fs);
String.substring(4,5)指的是下标[4,5)的子串
StringBuilder提供的是变长字串,长度和内容可随时更改
StringBuilder(String)构造,和toString()方法,提供了二者的相互转换