• IO Streams:格式化


    简介

    实现格式化接口的流对象是PrintWriter,字符流类或PrintStream(字节流类)。

    注意:您可能唯一需要的PrintStream对象是System.out和System.err。 (有关这些对象的更多信息,请参阅命令行的I / O。)当需要创建格式化的输出流时,实例化PrintWriter,而不是PrintStream

    像所有字节和字符流对象一样,PrintStream和PrintWriter的实例实现了简单字节和字符输出的一组标准写入方法。此外,PrintStream和PrintWriter都实现了将内部数据转换为格式化输出的相同方法。提供了两个级别的格式:

    1,print和println以标准方式格式化各个值。 

    2,format格式基于格式字符串格式化几乎任何数据的值,具有许多精确格式化选项。

    print和println方法

    在使用适当的toString方法转换值后,调用print或println输出单个值。我们可以在Root例子中看到这一点:

    public class Root {
        public static void main(String[] args) {
            int i = 2;
            double r = Math.sqrt(i);
            
            System.out.print("The square root of ");
            System.out.print(i);
            System.out.print(" is ");
            System.out.print(r);
            System.out.println(".");
    
            i = 5;
            r = Math.sqrt(i);
            System.out.println("The square root of " + i + " is " + r + ".");
        }
    }
    Root的输出为:

    The square root of 2 is 1.4142135623730951.
    The square root of 5 is 2.23606797749979.

    i和r变量被格式化为两次:第一次使用代码在打印过载中,第二次由Java编译器自动生成的转换代码,这也使用了toString。 您可以通过这种格式设置任何值,但是您对结果没有足够的控制权限。

    format方法

    format格式基于格式字符串格式化多个参数。格式字符串由嵌入格式说明符的静态文本组成;除了格式说明符,格式字符串输出不变。
    格式字符串支持许多功能。在本教程中,我们将介绍一些基础知识。有关完整的说明,请参阅API规范中的格式字符串语法。 
    Root2示例使用单个格式调用格式化两个值:
    public class Root2 {
        public static void main(String[] args) {
            int i = 2;
            double r = Math.sqrt(i);
            
            System.out.format("The square root of %d is %f.%n", i, r);
        }
    }
    输出为:
    The square root of 2 is 1.414214.

    与本示例中使用的三个类似,所有格式说明符都以%开头,并以1或2字符转换结束,该转换指定正在生成的格式化输出的种类。 这里使用的三个转换是:
    1,d将整数值格式化为十进制值。
    2,f将浮点值格式化为十进制值。 
    3,n输出平台专用线路终端器。 
    以下是一些其他转换:
    1,x将整数格式化为十六进制值。 
    2,s将任何值格式化为字符串。 
    3,tB格式化整数作为特定于区域的月份名称。 
    还有许多其他的转换。
    注意:除了%%和%n,所有格式说明符必须与参数匹配。如果没有,则会抛出异常。 在Java编程语言中, n转义始终生成换行字符( u000A)。不要使用 n,除非你特别想要换行符。要获取本地平台的正确的行分隔符,请使用%n。
    除了转换之外,格式说明符可以包含进一步自定义格式化输出的几个附加元素。这里有一个例子,Format,它使用每种可能的元素。
    public class Format {
        public static void main(String[] args) {
            System.out.format("%f, %1$+020.10f %n", Math.PI);
        }
    }
    这是输出:
    3.141593, +00000003.1415926536
    附加元素都是可选的。 下图显示了更长的说明符如何分解成元素。


    元素必须按照显示的顺序显示。从上图来看,可选要素是:
    1,精度:对于浮点值,这是格式化值的数学精度。对于s和其他一般转换,这是格式化值的最大宽度;如有必要,该值将被截断。
    2,宽度:格式化值的最小宽度;如果需要,该值被填充。默认情况下,该值用空格填充。
    3,标志:指定其他格式选项。在格式示例中,+标志指定该数字应始终使用符号进行格式化,0标志指定0是填充字符。其他标志包括 - (右侧的垫)和(格式编号与具有区域设置的数千分隔符)。请注意,某些标志不能与某些其他标志或某些转换一起使用。
    4,参数索引:允许您明确匹配指定的参数。您也可以指定<匹配与先前说明符相同的参数。因此,该示例可以说:System.out.format(“%f,%<+ 020.10f%n”,Math.PI);


  • 相关阅读:
    java多态课后作业
    java继承与接口课后作业
    java数组课后作业
    javaString课后作业
    Java类与对象课后作业
    java方法课后作业
    java基本知识课后作业
    读《大道至简》第二章有感
    课堂作业(字符串转化并计算)
    读《大道至简》第一章有感
  • 原文地址:https://www.cnblogs.com/hhx626/p/8320410.html
Copyright © 2020-2023  润新知