字符串格式化:Formatter 类
2018-12-08 本文已影响13人
hswwjp
类型转换字符 代码:
@Test
public void stringFormat() {
System.out.println(String.format("符号d: %d", 1000)); // 整数型(十进制)
System.out.println(String.format("符号o: %o", 1000)); // 整数型(八进制)
System.out.println(String.format("符号x: %x", 1000)); // 整数型(十六进制)
System.out.println(String.format("符号f: %f", 1000.0)); // 浮点型(十进制)
System.out.println(String.format("符号e: %e", 1000.0)); // 浮点型(科学计数)
System.out.println(String.format("符号b: %b", true)); // 布尔型
System.out.println(String.format("符号c: %c", 'A')); // 字符型
System.out.println(String.format("符号s: %s", "字符串")); // 字符串型
System.out.println(String.format("符号%%: %d%%", 50)); // 字符%
}
输出:
符号d: 1000
符号o: 1750
符号x: 3e8
符号f: 1000.000000
符号e: 1.000000e+03
符号b: true
符号c: A
符号s: 字符串
符号%: 50%
类型转换字符
格式控制(flags) 代码:
@Test
public void flagFormat() {
System.out.println(String.format("***%8d***", 1000)); // 无负号 右对齐
System.out.println(String.format("***%-8d***", 1000)); // 有负号"-" 左对齐
System.out.println(String.format("***%+8d***", 1000)); // 有加号"+" 正数前显示正号
System.out.println(String.format("***%+8d***", -1000)); // 有加号"+" 负数前显示负号
System.out.println(String.format("***% 8d***", 1000)); // 有空格" " 正数前显示空格
System.out.println(String.format("***% 8d***", -1000)); // 有空格" " 负数前显示负号
System.out.println(String.format("***%08d***", 1000)); // 有零"0" 使用0填充剩余位置
System.out.println(String.format("***%,8d***", 10000)); // 有逗号"," 每3位数字添加一个逗号
System.out.println(String.format("***%,8d***", 1000000)); // 有逗号"," 每3位数字添加一个逗号
}
输出:
*** 1000***
***1000 ***
*** +1000***
*** -1000***
*** 1000***
*** -1000***
***00001000***
*** 10,000***
***1,000,000***
格式控制(flags)
String.format() 源码部分:
/**
* Returns a formatted string using the specified format string and arguments.
*/
public static String format(String format, Object... args) {
return new Formatter().format(format, args).toString();
}
最终 Formatter对象调用 toString()方法
参考资料:https://blog.csdn.net/cuixianlong/article/details/78583186