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数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...
随机推荐
- 咏南APP(手机)开发框架
咏南APP(手机)开发框架 有意者可向咏南索取DEMO. 基于DELPHI官方的FIREMONKEY类库构建,不使用任何三方控件. 原生手机框架,支持各种手机硬件操作. 主界面 聊天 照相并分享 短信 ...
- Unity中InitializeOnLoad属性的妙用
InitializeOnLoad 属性应用的对象是 静态构造函数,它可以保证在编辑器启动的时候调用此函数.根据这个特性,可以在编辑器中设置定期的回调(帧更新),来实现类似watchFile的功能.这里 ...
- MySQL监控全部执行过的sql语句
MySQL监控全部执行过的sql语句 查看是否开启日志记录show variables like “general_log%” ; +——————+———-+|Variable_name|Value| ...
- SpringBoot(十二):springboot2.0.2写测试用例
导入maven依赖: <dependency> <groupId>junit</groupId> <artifactId>junit</artif ...
- CentOS安装mariadb做为mysql的替代品
mariadb做为mysql的替代品 现在centos的新版本yum包已换成mariadb 安装一些库 yum install gcc gcc-c++ wget net-tools 复制代码 查看SE ...
- Window下使用Charles对手机的Https请求进行抓包
https://blog.csdn.net/zhaoerduo/article/details/52128607
- SSE图像算法优化系列二十四: 基于形态学的图像后期抗锯齿算法--MLAA优化研究。
偶尔看到这样的一个算法,觉得还是蛮有意思的,花了将近10天多的时间研究了下相关代码. 以下为百度的结果:MLAA全称Morphological Antialiasing,意为形态抗锯齿是AMD推出的完 ...
- 阿里云 nginx配置ssl证书实现https访问
一,环境说明 服务器系统:ubuntu16.04LTS 服务器IP地址:47.89.12.99 域名:bjubi.com 二,域名解析到服务器 在阿里云控制台-产品与服务-云解析DNS-找到需要解析的 ...
- 【Linux】Centos下安装ffmpeg
一.准备工作 1.系统环境:CentOS release 6.9 (Final) 2.安装依赖包 yum install -y autoconf automake cmake freetype-dev ...
- mysql alter 添加索引
1.添加主键索引 ALTER TABLE `table_name` ADD PRIMARY KEY (`column`) 2.添加唯一索引 ALTER TABLE `table_name` ADD U ...