printf与格式化字符串

常规类型、字符类型和数值类型的格式

%[argument_index$][flags][width][.precision]conversion

日期和时间类型的格式

%[argument_index$][flags][width]conversion

 

argument_index$

是一个十进制整数,用于表明要格式化第几个参数。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。

flags

'-'

结果将是左对齐的

'#'

结果应该使用依赖于转换类型的替换形式(看例子比较好理解)

'+'

结果总是包括一个符号

'('

结果若是负值,则用()括起来

'0'

结果用0补充

','

结果用逗号分隔(只使用十进制)

width

是一个非负十进制整数,表明要向输出中写入的最少字符数,如果小于系统默认字符数,将不起效果

.precision

是一个非负十进制整数,表明要向输出中写入的最少字符数或者保留多少位小数

conversion

'c', 'C'

结果是一个 Unicode 字符   'C'  返回结果是大写

'd'

结果被格式化为十进制整数

'o'

结果被格式化为八进制整数

'x', 'X'

结果被格式化为十六进制整数  'X'  返回结果是大写

'e', 'E'

结果被格式化为用计算机科学记数法表示的十进制数  'E'  返回结果是大写

'f'

结果被格式化为浮点数

'g', 'G'

根据精度和舍入运算后的值, 使用计算机科学记数形式或十进制格式对结果进行格式化

'a', 'A'

结果被格式化为带有效位数和指数的十六进制浮点数

't', 'T'

日期和时间转换字符的前缀。请参阅日期/时间转换。'T'  返回结果是大写

'%'

输出%,其它什么都没有

'n'

结果为特定于平台的行分隔符

'H'

24 小时制的小时,被格式化为带前导零的两位数

'I'

12 小时制的小时,被格式化为带前导零的两位数

'k'

24 小时制的小时

'l'

12 小时制的小时

'M'

小时中的分钟,被格式化为必要时带前导零的两位数

'S'

分钟中的秒,被格式化为必要时带前导零的两位数

'L'

秒中的毫秒,被格式化为必要时带前导零的三位数

举例

public class StringFormat {

    public static void main(String[] args) {

       double d = 1345.678;

       String s = "你好!";

       int i = 1234;

       // "%"表示进行格式化输出,"%"之后的内容为格式的定义。

       System.out.printf("%f", 1345.678);

//"f"表示格式化输出浮点数。1345.678-->1345.678000

 

   System.out.printf("%9f", 1345.678);

//1345.678-->1345.678000,系统默认为11个字符数,定义9个没有效果

 

       System.out.printf("%12f", 1345.678);

//1345.678-->*1345.678000,注意1前面有一个空字符,为可观看暂用”*”代替

 

       System.out.printf("%12.2f", 1345.678);

//2表示小数点后的位数 1345.678-->*****1345.68

 

       System.out.printf("%+9.2f", 1345.678);

//"+"表示输出的数带正负号 1345.678-->*+1345.68

 

       System.out.printf("%-9.4f", 1345.678);

//"-"表示输出的数左对齐(默认为右对齐)1345.678-->1345.6780

 

       System.out.printf("%+-9.3f", 1345.678);

//"+-"表示输出的数带正负号且左对齐。

 

       System.out.printf("%5d", 1234);

//"d"表示输出十进制整数 1234-->*1234

 

       System.out.printf("%o", 1234);

//"o"表示输出八进制整数 1234-->2322

 

       System.out.printf("%x", 1234);

//"x"表示输出十六进制整数 1234-->4d2

 

       System.out.printf("%#x", 1234);

//1234-->0x4d2,加上#前面就加上0x

 

       System.out.printf("%s", "你好!");

//"s"表示输出字符串 你好!-->你好!

 

   System.out.printf("输出一个浮点数:%1$f,一个整数:%2$d,一个字符串:%3$s", 1234.567, 1234, "你好!");

       // 可以输出多个变量,注意顺序。

 

       System.out.println(String.format("%2$08d", -3123, -5566));

       // -5566-->-00005566

 

       System.out.println(String.format("%1$9d", -31));

// -31-->******-31    

  

System.out.println(String.format("%1$(9d", -31));

       // -31-->*****(31)

 

       Calendar cal = Calendar.getInstance();

       System.out.printf("%1$tm-%1$te-%1$tY", cal);

        // cal-->11-21-2010,记得要加上’t’

 

        System.out.printf("%1$tH:%1$tM:%1$tS",cal);

        // cal-->16:01:57,记得要加上’t’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值