Java字符串的格式化与输出_java打印输出字符串_jack-zhu的博客-程序员宅基地

技术标签: java  Java字符串的格式化与输出  

Java字符串的格式化与输出

在C语言中格式化输出可以通过printf()函数实现,在Java中无需借助第三方工具同样可以实现此功能,自Java SE5后,java也提供了C语言中printf()风格的格式化输出方法。目前,有三种方法实现格式化输出,参考如下:

一、格式化输出的三种方法

1.System.out.format()

Java SE5引入的format方法可以用于PrintStream或PrintWriter对象,其中也包括System.out对象。format()方法模仿自C的printf()。如果你比较怀旧的话,也可以使用printf(),下面是一个简单的示例:

	/**System.out.format()和System.out.printf()方法使用示例
	 * System.out.format()和System.out.printf()两个方法是等价的
	 * */
	public void method_1() {
		int x = 5;
		double y = 5.332542;
		// 大家都会用的比较原始的方法:
		System.out.println("Row 1: [" + x + " " + y + "]");
		// 通过System.out.format()方式格式化输出
		System.out.format("Row 1: [%d %f]\n", x, y);
		// 或者通过System.out.printf()方式格式化输出
		System.out.printf("Row 1: [%d %f]\n", x, y);
	}/*输出:
		Row 1: [5 5.332542]
		Row 1: [5 5.332542]
		Row 1: [5 5.332542]
	 */// :~
可以看到,format()和 printf()是等价的,它们只需要一个简单的格式化字符串,加上一串参数即可,每个参数对应一个格式化修饰符。

2.使用Formatter类:

在Java中,所有新的格式化功能都由java.util.Formatter类处理。可以将Formatter看做一个翻译器,它将你的格式化字符串与数据翻译成需要的结果。当你创建一个Formatter对象的时候,需要向其构造器传递一些信息,告诉它最终的结果将向哪里输出:

	/**通过Formater类实现格式化输出*/
	public void method_2(){
		//设置输出目的地为屏幕(System.out返回的是一个打印流对象"PrintStream")
		Formatter  f= new Formatter(System.out);
		String name = "jack zhu";
		int age = 100;
		double stature = 178.536;//cm
		f.format("name:%s 、age:%d、stature: %.2f)\n", name, age, stature);//.2表示浮点数精度(2位)
	}/*输出:
	name:jack zhu 、age:100、stature: 178.54)
 */// :~

结果result将被输出到System.out(屏幕),Formatter的构造器经过重载可以接受多种输出目的地,不过最常用的还是PrintStream(System.out属于PrintStream)、OutputStream和File。


3.String.format()

String.format()是一个static方法,他接受与Formatter.format()方法一样的参数,但返回一个String对象。当你只需使用format()方法一次的时候,String.format()用起来很方便,例如:

	/**String.format()方法实现格式化输出:*/
	public void method_3(){
		int x = 5;
		double y = 5.332542;
		String result = String.format("Row 1: [%d %f]\n", x, y);
		System.out.println(result);
	}/*输出:
		Row 1: [5 5.332542]
	 */// :~


二、常用格式化修饰符参考:

像上面的几种格式化方法参数中控制格式的由%d 、%s等修饰符控制,修饰符可以看做是特殊的占位符,使用占位符来表示插入数据的位置和插入数据的类型。具体参考如下:

占位符 表示的数据类型
d
整数(十进制)
c
Unicode字符
b
Boolean值
s
String
f
浮点数(十进制)
e
浮点数(科学计数)
x
整数(十六进制)
h
散列码(十六进制)
%
占位说明符




http://www.ctosclub.com/forum.php?mod=viewthread&tid=22





http://www.ctosclub.com






版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012875880/article/details/38417647

智能推荐

诺贝尔文学奖得主吉卜林写给12岁儿子的赠言-程序员宅基地

.这是诺贝尔文学奖得主吉卜林写给12岁儿子的赠言 牛顿的万有引力定律告诉我们:只有先充实自己,才能吸引别人;牛顿第三定律告诉我们:只有自己先对别人好,才能让别人对自己好。  如果在众人六神无主之时,你能镇定自若而不是人云亦云;  如果被众人猜忌怀疑时,你能自信如常而不去妄加辩论;  如果你有梦想又能不迷失自我,有神思又不至于走火入魔;  如果在成功之时能不喜形于色,灾难之后...

Spring Boot中拦截器的使用_secureregistry.excludepathpatterns-程序员宅基地

一、使用方法对于在Spring Boot2.0中使用拦截器来说,其使用方法与Spring Boot1.0并无很大区别 。我的需求是实现登录拦截,通过在session中判断有没有登录用户名来实现拦截首先就是建立一个实现了HandlerInterceptor的拦截器类。如下:public class LoginInterceptor implements HandlerInterc..._secureregistry.excludepathpatterns

SICP第四章阅读心得 - Lisp解释器的实现-程序员宅基地

经过近两个月的苦战,笔者终于将SICP(Structure and Interpretation of Computer Programs(计算机程序的构造和解释))一书读到了第四章过半,开始接触书中关于语言级抽象(metalinguistic abstraction)的介绍。在这个时点,我打算分享一下自己阅读本书的一部分心得,重点是第四章的第一小节,毕竟语言的解析、编译等方面的知识是我自己最感兴..._lisp解释器

ThreadPoolTaskExecutor多线程使用-程序员宅基地

首先准备几个配置,复制粘贴即可.1.线程池package com.futuredata.cloud.cube.async;import lombok.extern.slf4j.Slf4j;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import org.springframework.util.concurrent.ListenableFuture;import java.util.concu_threadpooltaskexecutor

C#实现Stream与byte[]之间的转换实例教程_c# byte[] stream-程序员宅基地

一、二进制转换成图片MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream(ms); ms.Close(); this.pictureBox1.Image二、C#中byte[]与string的转换代码1.System.Text.UnicodeEnc..._c# byte[] stream

安装Maven后提示找不到JDK的错误 。The Maven Integration requires that Eclipse be running in a JDK_mac mavn找不到jdk-程序员宅基地

在eclipse中安装了m2eclipse(maven插件)在安装后,出现下列警告:The Maven Integration requires that Eclipse be running in a JDK, because a number of Maven core plugins are using jars from the JDK.Please make sure the_mac mavn找不到jdk

随便推点

mysql表设计关于时间字段的注意事项_表设计时间(10:00)字段-程序员宅基地

mysql表设计关于时间字段的注意事项:_表设计时间(10:00)字段

ARM的体系结构-程序员宅基地

一、可编程器件的编程原理1、电子器件的发展方向信号:模拟器件 -> 数字器件 芯片:ASIC -> 可编程器件很多年前的电视机都是模拟信号,比较好的是日本松下等。后来美国发明了数字信号。 ASIC(Application Specific Intergrated Circuits)即专用集成电路,ASIC是专用的,在出厂时已经确定了功能,不可编程。后来发...

记修改ElementUI的时间控件DateTimePicker样式踩坑日记_el-time-spinner-程序员宅基地

前言需求是这样的,时间只能选择之后的时间,并且日期时间只要求精确到小时,也就是不用选分钟和小时。根据ElementUI的代码复制粘贴过来。 <el-date-picker v-model="value2" type="datetime" placeholder="选择日期时间" align="right" format="yyyy-MM-dd HH" value-format="yyyy-MM-dd HH"> </el-date-pi_el-time-spinner

Hive安装部署-程序员宅基地

1.首先安装jdk和Hadoop环境,参考Hadoop单机安装_letterss的博客-程序员宅基地2.下载Hive安装包,下载地址:https://www.apache.org/dyn/closer.cgi/hive/将下载的安装包上传到/data/hive目录,并解压tar -zxvfapache-hive-2.3.9-bin.tar.gz配置hive环境vi /etc/profileexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-.._hive安装部署

LeetCode #745 - Prefix and Suffix Search_leetcode 745 python-程序员宅基地

题目描述:Given many words, words[i] has weight i.Design a class WordFilter that supports one function, WordFilter.f(String prefix, String suffix). It will return the word with given prefix and suffix ..._leetcode 745 python

使用大数据时,别忘了关注Linux内存管理器-程序员宅基地

原文:http://blog.jobbole.com/52898/本文由伯乐在线-高磊翻译自Metin Doslu。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。声明:我们常常以为,一旦我们(的代码)出了什么状况,那肯定是操作系统在作祟,而在99%的情况下,结果都会是别的原因。因此我们会谨慎地作出是操作系统导致了某个问题这样的假设,除非你遇到了与下面的例子类似的情况。一切...