java基础---->Java的格式化输出
在JavaSe5中,推出了C语言中printf()风格的格式化输出。这不仅使得控制输出的代码更加简单,同时也给与Java开发者对于输出格式与排列更大的控制能力。今天,我们开始学习Java中的格式化输出。
System.out.format()
由于内容比较简单,我们通过实例来加以说明。项目结构如下:
aaarticlea/png;base64,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" alt="" />
Java Se5引入的format方法可用于PrintStream或PrintWriter对象,其中也包括System.out对象。
package com.tomhu.format;
public class FormatTest1 {
public static void main(String[] args) {
int x = 5;
double y = 3.141592;
// 一般方式
System.out.println("x = " + x + ", y = " + y);
// printf()方式
System.out.printf("x = %d, y = %f\n", x, y);
// format()方式
System.out.format("x = %d, y = %f\n", x, y);
}
}
输出的结果如下:
x = 5, y = 3.141592
x = 5, y = 3.141592
x = 5, y = 3.141592
可以看到,format与printf是等价的,它们只需要一个简单的格式化字符串,加上一串参数即可,每个参数对应一个格式修饰符。
public PrintStream printf(String format, Object ... args) {
return format(format, args);
}
在format的具体代码中,其实就是调用Formatter的format方法:formatter.format(Locale.getDefault(), format, args);
public PrintStream format(String format, Object ... args) {
try {
synchronized (this) {
ensureOpen();
if ((formatter == null)
|| (formatter.locale() != Locale.getDefault()))
formatter = new Formatter((Appendable) this);
formatter.format(Locale.getDefault(), format, args);
}
} catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
} catch (IOException x) {
trouble = true;
}
return this;
}

Formatter类
在Java中,所有新的格式化功能都由Formatter类处理,上述的printf与format也是。可以将Formatter看作是一个翻译器,它将你的格式化字符串与数据翻译成需要的结果。当你创建一个Formatter对象的时候 ,需要向其构造器传递一些信息,告诉它最终的结果将向哪里输出
package com.tomhu.format;
import java.util.Formatter;
public class FormatTest2 {
public static void main(String[] args) {
String name = "huhx";
int age = 22;
Formatter formatter = new Formatter(System.out);
formatter.format("My name is %s, and my age is %d ", name, age);
formatter.close();
}
}
它的输出结果如下:
My name is huhx, and my age is 22
格式化说明符
在插入数据时,如果想要控制空格与对齐,就需要精细复杂的格式修饰符,以下是其抽象的语法:
%[argument_index$][flags][width][.precision]conversion The optional argument_index is a decimal integer indicating the position of the argument in the argument list. The first argument is referenced by "1$", the second by "2$", etc. The optional flags is a set of characters that modify the output format. The set of valid flags depends on the conversion. The optional width is a non-negative decimal integer indicating the minimum number of characters to be written to the output. The optional precision is a non-negative decimal integer usually used to restrict the number of characters. The specific behavior depends on the conversion. The required conversion is a character indicating how the argument should be formatted. The set of valid conversions for a given argument depends on the argument's data type.
最常见的应用是控制一个域的最小尺寸,这可以通过指定width来实现。Formatter对象通过在必要时添加空格,来确保一个域至少达到某个长度。在默认的情况下,数据是右对齐的,通过"-"标志可以改变对齐的方向。
与width相对的是precision(精确度),它用来指明最大尺寸。width可以应用各种类型的数据转换,并且其行为方式都一样。precision则不一样,不是所有类型的数据都能使用precision,而且,应用于不同的类型的数据转换时,precision的意义也不同。
- precision应用于String时,它表示打印String时输出字符的最大数量
- precision应用于浮点数时,它表示小数点要显示出来的位数。默认是6位小数,如果小数位数过多则舍入,过少则在尾部补零。
- 由于整数没有小数部分,所以precision不能应用于整数。如果你对整数应用precision,则会触发异常
package com.tomhu.format;
import java.util.Formatter;
public class FormatTest3 {
static Formatter formatter = new Formatter(System.out);
public static void printTitle() {
formatter.format("%-15s %-5s %-10s\n", "huhx", "linux", "liuli");
formatter.format("%-15s %-5s %-10s\n", "zhangkun", "yanzi", "zhangcong");
formatter.format("%-15s %-5s %-10s\n", "zhangkun", "yanzhou", "zhangcong");
}
public static void print() {
formatter.format("%-15s %5d %10.2f\n", "My name is huhx", 5, 4.2);
formatter.format("%-15.4s %5d %10.2f\n", "My name is huhx", 5, 4.1);
}
public static void main(String[] args) {
printTitle();
System.out.println("----------------------------");
print();
formatter.close();
}
}
它的输出结果如下:
huhx linux liuli
zhangkun yanzi zhangcong
zhangkun yanzhou zhangcong
----------------------------
My name is huhx 5 4.20
My n 5 4.10
Formatter转换
下面的表格包含了最常用的类型转换:
| d | 整数型(10进制 ) | e | 浮点数(科学计数) |
| c | Unicode字符 | x | 整数(16进制) |
| b | Boolean值 | h | 散列码(16进制) |
| s | String | % | 字符"%" |
| f | 浮点数(10进制) |
String.format()是一个static方法,它接受与Formatter.format()方法一样的参数,但返回一个String对象。当你只需要用format方法一次的时候,String.format()还是很方便的。
package com.tomhu.format;
public class FormatTest4 {
public static void main(String[] args) {
int age = 22;
String name = "huhx";
String info = String.format("My name is %s and my age is %d", name, age);
System.out.println(info);
}
}
它的输出结果如下:
My name is huhx and my age is 22
其实String.format方法的实质还是Formatter.format(),只不过是做了简单封装而已:
public static String format(String format, Object... args) {
return new Formatter().format(format, args).toString();
}
简单的十六进制转换工具
package com.tomhu.format;
public class FormatTest5 {
public static String format(byte[] data) {
StringBuilder builder = new StringBuilder();
int n = 0;
for(byte b: data) {
if (n %16 == 0) {
builder.append(String.format("%05x: ", n));
}
builder.append(String.format("%02x ", b));
n ++;
if (n % 16 == 0) {
builder.append("\n");
}
}
builder.append("\n");
return builder.toString();
}
public static void main(String[] args) {
String string = "my name is huhx, welcome to my blog";
System.out.println(format(string.getBytes()));
}
}
输出结果如下:
00000: 6d 79 20 6e 61 6d 65 20 69 73 20 68 75 68 78 2c
00010: 20 77 65 6c 63 6f 6d 65 20 74 6f 20 6d 79 20 62
00020: 6c 6f 67
友情链接
作者: huhx
出处: www.cnblogs.com/huhx
格言:你尽力了,才有资格说自己的运气不好。
版权:本文版权归作者huhx和博客园共有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
java基础---->Java的格式化输出的更多相关文章
- Java中数字的格式化输出
Java中数字的格式化输出 double d = 345.678; String s = "hello!"; int i = 1234; //"%"表示进行格式 ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock)
Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在学习Java的之前,你可能已经听说过读 ...
- Java基础-Java中23种设计模式之常用的设计模式
Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...
- Java基础-Java中的堆内存和离堆内存机制
Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Java基础-Java中的内存分配与回收机制
Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.
- Java基础-Java中的并法库之线程池技术
Java基础-Java中的并法库之线程池技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是线程池技术 二.
- Java基础-JAVA中常见的数据结构介绍
Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...
- Java基础-Java数据类型
Java基础-Java数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...
随机推荐
- Unity的Input输入
Unity中的输入管理器由Input类进行操控.官方文档地址:https://docs.unity3d.com/ScriptReference/Input.html 中文翻译的话可以在这里:http: ...
- mount: wrong fs type, bad option, bad superblock
mount: wrong fs type, bad option, bad superblock on 125.64.41.244:/data/img, missing codepage ...
- protobuf语法指南
遇到proto编译问问,看看proto语法,记录一下 protobuf3 语法指南 http://colobu.com/2017/03/16/Protobuf3-language-guide/ htt ...
- JavaAes加密操作工具类
package com.king.weixin.util;import java.io.UnsupportedEncodingException;import java.security.Algori ...
- Glide终于解决了同时绑定多个webp格式图片的问题
前端时间,要给项目换个图片加载的库,使用Glide 3.7版本进行测试, 发现在快速滑动列表(每个item都会加载一个app的图标,采用webp格式,即同时加载多个webp格式)的时候,一屏至少有2- ...
- CentOS7开启docker远程访问并在idea中连接使用
CentOS7开启docker远程访问并在idea中连接使用 1.编辑/usr/lib/systemd/system/docker.service,配置远程访问.主要是在[Service]这个部分,添 ...
- centos7下docker二进制安装
问题描述: 内网离线环境下,安装docker.二进制来的还是快点,或者内网搭建yum的epel仓库! 环境: centos7.x docker-18.9.0 x86_64 static //二进制 ...
- PHP异步扩展Swoole笔记(1)
安装Swoole扩展 通过pecl安装, 系统中最好已经有http2依赖, 如果是Ubuntu, 可以直接通过apt安装nghttp2, 如果是Centos或者需要自己编译, 在Github下载ngh ...
- [转]PID控制算法原理
PID控制算法是工业界使用极其广泛的一个负反馈算法,相信这个算法在做系统软件时也有用武之处,这里摘录了知乎上的一篇文章,后面学习更多后自己总结一篇 以下为原文: PID控制应该算是应用非常广泛的控制算 ...
- 【转】Java并发的AQS原理详解
申明:此篇文章转载自:https://juejin.im/post/5c11d6376fb9a049e82b6253写的真的很棒,感谢老钱的分享. 打通 Java 任督二脉 —— 并发数据结构的基石 ...