import java.text.Format;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.text.ChoiceFormat;
import java.text.DateFormat;
import java.text.MessageFormat;
import java.text.NumberFormat;
1.1Format抽象类
有两个抽象方法,format、parseObject;
1.2Format的子类
格式化日期、消息和数字分别提供了三个特殊的 Format 的子类:
- DateFormat(抽象类) Format —>DateFormat —>SimpleDateFormat
- MessageFormat Format —>MessageFormat
- NumberFormat(抽象类) Format —>NumberFormat —>ChoiceFormat及DecimalFormat用于格式化十进制数字
1.3 DataFormat
1.4 MessageFormat
1.5 NumberFormat介绍
NumberFormat 是所有数字格式的抽象基类。类结构与DateFormat类似。主要也是通过get***Instance方法(工厂函数?)获得实现类DecimalFormat;
public static void main(String[] args) {
Double myNumber=23323.3323232323;
Double test=0.3434;
//getInstance()返回当前缺省语言环境的缺省数值格式。
String myString = NumberFormat.getInstance().format(myNumber);
System.out.println(myString); //23,323.332
//getCurrencyInstance()返回当前缺省语言环境的通用格式
myString = NumberFormat.getCurrencyInstance().format(myNumber);
System.out.println(myString); //¥23,323.33
//getNumberInstance() 返回当前缺省语言环境的通用数值格式。
myString = NumberFormat.getNumberInstance().format(myNumber);
System.out.println(myString); //23,323.332
//getPercentInstance() 返回当前缺省语言环境的百分比格式。
myString = NumberFormat.getPercentInstance().format(test);
System.out.println(myString); //34%
//setMaximumFractionDigits(int) 设置数值的小数部分允许的最大位数。
//setMaximumIntegerDigits(int) 设置数值的整数部分允许的最大位数。
//setMinimumFractionDigits(int) 设置数值的小数部分允许的最小位数。
//setMinimumIntegerDigits(int) 设置数值的整数部分允许的最小位数.
NumberFormat format = NumberFormat.getInstance();
format.setMinimumFractionDigits( 3 );
format.setMaximumFractionDigits(5);
format.setMaximumIntegerDigits( 10 );
format.setMinimumIntegerDigits(0);
System.out.println(format.format(2132323213.23266666666)); //2,132,323,213.23267
}
1.5.1 子类DecimalFormat
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。在DecimalFormat中传入pattern,可以自定义格式化类型。舍入方式是half-even(四舍五入)。
1.5.2 子类ChoiceFormat
1.5.6. 其它的数字格式化
另外在对数字进行格式化时,也可以考虑使用java.math.BigDecimal。
如setScale(int newScale,int roundingMode):newScale指精确度,即保留几位小数。roundingMode指舍入模式,常用的是四舍五入。DecimalFormat貌似只能使用四舍五入,如果使用别的舍入方式,就要使用BigDecimal了。
java.lang.Integer中的几个转换进制的方法也比较实用
- toBinaryString(int i): 以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
- toHexString(int i): 以十六进制的无符号整数形式返回一个整数参数的字符串表示形式
- toOctalString(int i) :以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。