格式化输出

引言

如果我们简单的使用System.out.print(x)打印输出,将会以x的类型所允许的最大非0数位个数打印输出x,例如:

double x = 1000.0 / 3.0;
System.out.print(x);
// 输出
333.3333333333333

但有时我们希望可以对输出的格式有更多的控制,这时可以通过System.out.printf()方法实现

Java5沿用了C语言函数库的printf方法

方法

一、格式说明符语法

二、格式说明符
  • 字段宽度与精度

    m.n:总计打印m个字符,精度为小数点之后n个字符

    • 不适用字段宽度时,将默认以能展示数值的最小宽度展示
    • 使用字段宽度时,默认右对齐;如果字段宽度不够,将自动增加宽度
  • 转换符(尾部)

    转换符 类型 示例
    d 十进制整数 159
    x 十六进制整数 9f
    o 八进制整数 237
    f 定点浮点数 15.9
    e 指数浮点数 1.59e+01
    g 通用浮点数(e和f中较短的一个)
    a 十六进制浮点数 0x1.fccdp3
    s 字符串 Hello
    c 字符 H
    b 布尔 true
    h 散列码 42628b2
    % 百分号 %
    n 与平台有关的行分隔符
    • 可以用s转换符格式化任意的对象

      • 对于实现了Formattable接口的任意对象,将调用这个对象的formatTo方法
      • 否则调用toString方法将这个对象转换为字符串
  • 标志

    标志 目的 示例
    + 打印正数和负数的符号(对于负数好像并不需要) +3333.33
    space 在正数之前添加空格 | 3333.33|
    0 数字前面补0(数字前,符号后) 003333.33
    - 左对齐(默认右对齐) |3333.33 |
    ( 将负数括在括号里(不再打印负号) (3333.33)
    , 添加分组分隔符 3,333.33
    #(对于f格式) 包含小数点 3333.
    #(对于x或o格式) 添加前缀0x或0 0xcafe
    $ 指定要格式化的参数索引 159 9F
    < 格式化前面说明的数值 159 9F

    部分对比示例

    // 在下面的示例输出中,以'*'指代空格
    // +: 打印正数和负数的符号
    System.out.printf("%8d", 100);                    // *****100
    System.out.printf("%+8d", 100);                   // ****+100
    // space: 在正数之前添加空格
    System.out.printf("%d", 100);                     // 100
    System.out.printf("% d", 100);                    // *100
    // 0: 数字前面补0
    System.out.printf("%8d", 100);                    // *****100
    System.out.printf("%08d", 100);                   // 00000100
    System.out.printf("%8d", -100);                   // ****-100
    System.out.printf("%08d", -100);                  // -0000100
    // -: 左对齐
    System.out.printf("%8d", 100);                    // *****100
    System.out.printf("%-8d", 100);                   // 100*****
    // (: 将负数括在括号里(不再打印负号)
    System.out.printf("%8d", -100);                   // ****-100
    System.out.printf("%(8d", -100);                  // ***(100)
    // ,: 添加分组分隔符
    System.out.printf("%12d", 333333333);             // *333,333,333
    System.out.printf("%,12d", 333333333);            // ***333333333
    // #: 包含小数点
    System.out.printf("%8.0f", 3333F);                // ****3333
    System.out.printf("%#8.0f", 3333F);               // ***3333.
    // #: 添加前缀0x(对于x转换符)
    System.out.printf("%8x", 100);                    // ******64
    System.out.printf("%#8x", 100);                   // ****0x64
    // #: 添加前缀0(对于o转换符)
    System.out.printf("%8o", 100);                    // *****144
    System.out.printf("%#8o", 100);                   // ****0144
    // $: 指定要格式化的参数索引
    System.out.printf("%1$8d %1$8x", 100);            // *****100*******64
    // $: 格式化前面说明的数值
    System.out.printf("%8d%<8x", 100);                // *****100*******64
    
    • 参数索引值从1开始,而不是从0开始。这是为了避免与0标志混淆

    • 标志之间可以组合使用,顺序并不会产生影响,例如:

      System.out.printf("%#8x", 100);                    // ****0x64
      System.out.printf("%08x", 100);                    // 00000064
      System.out.printf("%0#8x", 100);                   // 0x000064
      System.out.printf("%#08x", 100);                   // 0x000064
      

【Java格式化输出】相关推荐

  1. Java格式化输出时间

    Java格式化输出时间 在Java中如何将一个时间格式化为标准形式: 1.获取当前时间,并设置为标准年月日时分秒格式 SimpleDateFormat simpleDateFormat = new S ...

  2. java 格式化输出 对齐_Java中中英文对齐输出问题,以及Java中的格式化输出

    一 中英文对齐输出问题 问题,要求控制台输出如下: abcefg  def 森林 阿狗 其实就是要求对齐输出,各种查找java的格式化输出,然后发现只要一个简单的"\t"就可以实现 ...

  3. 8.Java格式化输出

    JAVA中字符串输出格式 1.使用format函数 System.out.format("%d  %f",10,10.5); 2.使用Formatter类 构造函数Formatte ...

  4. java格式化输出双精度小数,用Java格式化双精度类型

    假设我们有以下三个值-double val1 = 15.546; double val2 = 25.87; double val3 = Math.PI; 现在让我们格式化这些双精度型数字.首先,我们使 ...

  5. java 格式化输出xml_Java格式化输出Xml

    Java中在格式化输出Xml时,需要dom4j-1.6.1.jar这个文件,读者可以自行在网上下载. package com.zhj.creDbXml; import java.io.IOExcept ...

  6. Java格式化输出的四种方法

    一.System.out.printf() Java SE5推出了C语言printf()风格的格式化输出功能. String str="Java"; double pi=3.14; ...

  7. Java格式化输出(表格样式)

    前言 有时想输出整齐的二维数据,可是输出后因为数据的宽度导致输出并不好看,有的数据更是对不齐,歪歪扭扭:所以写了一个输出类Fout,意为格式化输出. 项目地址 github 代码与输出截图 代码调用: ...

  8. 【Java 笔记】 java 格式化输出

    public static void main(String[] args) {/*** 格式化形式* %[argument_index$][flags][width][.precision]conv ...

  9. java 格式化输出

    基础 使用语法:("My Name Is: %s", name) "My Name Is: %s" 是第一个参数,就是要格式化的字符串(format strin ...

最新文章

  1. stackoverflow国内被墙的打开办法
  2. FTP基础知识及排障方法
  3. .NET Core 事件总线,分布式事务解决方案:CAP
  4. creator图片循环显示_江淮宣传车厂家价格 图片 配置
  5. 用数据来证明累计充值赠送活动
  6. VC++实现数据包嗅探
  7. DropBox:机器学习每年可以为我们节省170万的文档预览费用
  8. 服务不支持chkconfig
  9. 推荐阅读20100708
  10. 「leetcode」56. 合并区间【贪心算法】详细图解!
  11. *第四周*数据结构实践项目二【单链表算法库】
  12. ztree 使用教程
  13. 阈值分割法——最佳阈值的选择问题
  14. 英雄联盟服务器状态在线怎么解决,LOL服务器状态查询
  15. 直流电机调速仿真作业
  16. python画喜羊羊代码_python学习笔记7-字典
  17. TDB中多个model情况下使用fuseki查询
  18. unity静止人物素材制作动作,导入unity行走、跑步动画,并用Animator Controller加脚本进行控制
  19. 微信授权之登录、注册、关联微信号全流程图
  20. 华为 手机 hbuilderx 连接不上手机

热门文章

  1. IE中直接访问html,????? help!在IE中用Applet如何访问所在的HTML吗?
  2. 我跑了香港六家银行,把境外开户的事整明白了
  3. 不可重现的bug如何处理
  4. 爬取微博热点评论用户ID--简易版本
  5. linux运行lnk,LNK 文件扩展名: 它是什么以及如何打开它?
  6. 修改Opera浏览器主页搜索引擎
  7. 20175312陶光远 与 20175309刘雨恒 结对
  8. 内存屏障什么的(经典)
  9. os 库、 sys 库、getopt 库 与 filecmp 库,5000 字长文带你搞定四大库
  10. 互联网时代,知识付费行业发展空间巨大