简介

实现格式化接口的流对象是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);



IO Streams:格式化的更多相关文章

  1. asyncio异步IO——Streams详解

    前言 本文翻译自python3.7官方文档--asyncio-stream,译者马鸣谦,邮箱 1612557569@qq.com.转载请注明出处. 数据流(Streams) 数据流(Streams)是 ...

  2. IO Streams:扫描

    简介 Scanner类被用于输入的格式化中断,并将其移到Tokens中,然后对其单个的Tokens根据其数据类型进行翻译. 从input--Tokens 默认情况下,一个Scanner使用 空格 键去 ...

  3. IO Streams:字符流

    简介 Java平台使用Unicode约定存储字符值.字符流I / O自动将此内部格式转换为本地字符集.在西方,本地字符集通常是ASCII的8位超集. 对于大多数应用,具有字符流的I / O并不比具有字 ...

  4. IO Streams:来源于命令行的IO

    简介 程序经常从命令行运行并与在命令行环境中的用户交互.Java平台支持这种互动的方式有两种:通过标准流,通过控制台 标准流 标准流是许多操作系统的一项功能.默认情况下,他们从键盘输入读取和输出到显示 ...

  5. IO Streams:字节流

    简介 程序使用字节流来执行8位字节的输入和输出.所有字节流类都继承于InputStream和OutputStream. 有很多字节流类:为了说明字节流如何工作,我们将重点关注文件I / O字节流Fil ...

  6. IO Streams:对象流

    简介 正如数据流支持原始数据类型的I / O一样,对象流支持对象的I / O.标准类中的大多数但不是全部都支持对象的序列化.那些实现标记接口Serializable的那些. 对象流类是ObjectIn ...

  7. IO Streams:数据流

    数据流支持原始数据类型值(布尔型,字符型,字节型,短型,长整型,浮点型和双倍型)的二进制I / O以及字符串值.所有数据流都实现了DataInput接口或DataOutput接口.本节重点介绍这些接口 ...

  8. IO Streams:缓冲流

    我们迄今为止看到的大多数示例都使用无缓冲的I / O.这意味着每个读或写请求都由底层操作系统直接处理.这使程序效率变得很低,因为每个这样的请求经常触发磁盘访问,网络活动或一些相对昂贵的其他操作. 为了 ...

  9. Java IO总结之缓冲读入文件

    package com.io; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException ...

随机推荐

  1. Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] C A Weakness and Poorness (三分)

    显然f(x)是个凹函数,三分即可,计算方案的时候dp一下.eps取大了会挂精度,指定循环次数才是正解. #include<bits/stdc++.h> using namespace st ...

  2. ACM博弈论基础

    博弈论的题目有如下特点: 有两名选手 两名选手交替操作,每次一步,每步都在有限的合法集合中选取一种进行 在任何情况下,合法操作只取决于情况本身,与选手无关 游戏败北的条件为:当某位选手需要进行操作时, ...

  3. 学习jQuery的免费资源:电子书、视频、教程和博客

    jQuery毫无疑问是目前最流行的JavasScript库.排名最前的网站中70%使用了jQuery,并且jQuery也成为了Web开发的标准.如果你想找Web开发方面的工作,了解jQuery会大大的 ...

  4. c#List结合IEqualityComparer求交集

    List元素类: public class MultiPointSearchingRet { public int ID { get; set; } public string PlateNumber ...

  5. 【动态规划】bzoj1939: [Croatian2010] Zuma

    隐约记得类似的一道JSOI祖玛……然后好像这题不能够把珠子合并成一段?或许是因为这里珠子碰在一起之后可以不消除? Description 有一行 N 个弹子,每一个都有一个颜色.每次可以让超过 K 个 ...

  6. 201621123080《java程序设计》第六周作业总结

    201621123080<java程序设计>第六周作业总结 1. 本周学习总结 2. 书面作业 clone方法 1.1 在test1包中编写Employee类,在test2包中新建一个Te ...

  7. 01windows常用命令及批处理

    1. 概述 复制内容:右键弹出快捷菜单,选择"标记(K)",然后选中所需要的内容,然后右键即可 粘贴内容:右键弹出快捷菜单,选择"粘贴(P)" 命令参数的路径: ...

  8. laravel5 使用try catch

    在laravel5中使用以下代码并没有捕获异常 try{ var_dump($val); }catch (Exception $e){ var_dump($e); }  Laravel 5 时代控制器 ...

  9. GoF23种设计模式之结构型模式之享元模式

    一.概述  运用共享技术有效地支持大量细粒度的对象. 二.适用性 1.当一个应用程序使用了大量的对象的时候. 2.由于使用大量的独享而造成很大的存储开销的时候. 3.对象的大多数状态都可变为外部状态的 ...

  10. Python并发编程之多进程(实战)

    一.multiprocessing和Process multiprocessing提供了支持子进程.通信和数据共享.执行不同形式的同步,提供了Process.Queue.Pipe.Lock等组件 创建 ...