Formatter

java.util.Formatter 详解

一、java.util.Formatter

java.util.Formatter 是JDK1.5新增的类库,功能很强大,但是不好掌握,就像下棋一样,知道如何走棋子,和熟练应用完全是两码事。

格式化主要用在文本输出方面,比如,数字、日期、金额等,还有类似超市的购物单小票等等,都会用到格式化输出的工具。在此类没出现之前,只能通过空格缩进或这个制表符来对单据等格式做一些控制,现在只要掌握java.util.Formatter,一切问题就解决了。

shut!有关这个类javadoc文档太难看懂了,通过猜测、尝试、查看源码、对文档断章取义基本搞明白了,写了下面的例子:

import java.util.Calendar; 
import java.util.Formatter; 
import java.util.GregorianCalendar;

/** 
* Formatter测试 

* @author leizhimin 2009-7-16 16:31:02 
*/ 
public class TestFormatter {

public static void main(String[] args) { 
                //%[argument_index$][flags][width][.precision]conversion 
                Formatter f1 = new Formatter(System.out); 
                //格式化输出字符串和数字 
                f1.format("格式化输出:%s %d", "a", 1235); 
                System.out.println("\n--------"); 
                //日期的格式化 
                Calendar c = new GregorianCalendar(); 
                f1.format("当前日期:%1$tY-%1$tm-%1$te", c); 
                System.out.println("\n--------"); 
                //日期的格式化,并将格式化结果存储到一个字符串变量中 
                String s = String.format("当前日期:%1$tY-%1$tm-%1$te", c); 
                System.out.println(s); 
                //2$:取第二个参数 
                //-: 指定为左对齐,默认右对齐 
                //5:最大输出宽度为20,不够会补空格,实际若超过则全部输出 
                //.2:在此表示输出参数2的最大字符数量,如果是浮点数字,则表示小数部分显示的位数 
                //s :表示输入参数是字符串 
                f1.format("%2$-5.2s %1$2s", "123", "456");

//将格式化的结果存储到字符串 
                System.out.println("\n--------"); 
                String fs = String.format("身高体重(%.2f , %d)", 173.2, 65); 
                System.out.println(fs);

//printf()本质上也是用System.out作为输出目标构造Formatter对象 
                //调用format方法,并将printf的参数传给format方法而得。 
                System.out.println("\n--------"); 
                System.out.printf("身高体重(%.2f , %d)", 180.2, 65);


}

运行结果:

格式化输出:a 1235 
-------- 
当前日期:2009-07-16 
-------- 
当前日期:2009-07-16 
45        123 
-------- 
身高体重(173.20 , 65)

-------- 
身高体重(180.20 , 65) 
Process finished with exit code 0

总结:

1、java.util.Formatter功能强大,主要用于自由格式的制定,也可以指定金额、日期等格式。但以使用方便为原则。

2、其他格式化类:

java.text.DateFormatSymbols 
java.text.DecimalFormatSymbols 
java.text.FieldPosition 
java.text.Format 
                java.text.DateFormat 
                        java.text.SimpleDateFormat 
                java.text.MessageFormat 
                java.text.NumberFormat 
                        java.text.ChoiceFormat 
                        java.text.DecimalFormat

3、String.format()、System.out.printf()方法底层也是通过此类方法调用实现的。

4、Calendar类用来表示系统抽象时间,是日期格式化等操作中最重要的一个类,这个类的实例化方式是:

Calendar rightNow = Calendar.getInstance();

并且可以通过下面的方法改变实例所表示的抽象时间:

void setTime(Date date) 
          使用给定的 Date 设置此 Calendar 的时间。 
 void setTimeInMillis(long millis) 
          用给定的 long 值设置此 Calendar 的当前时间值。

有关日期的格式化还比较复杂,不光与现实方式有关,其实还与时区、国家习惯等等有关,因此在处理日期格式化问题上一定要慎重对待,没有理由不用专门的类做处理。

二、java.text.Format

Format 是一个用于格式化语言环境敏感的信息(如日期、消息和数字)的抽象基类。

光从类的层次结构上看,Java对格式的处理也算费了大劲了,但还是不怎么好用。

消息格式化类比较让人郁闷,SUN的API文档看起来好像翻译的有毛病。

import java.text.MessageFormat; 
import java.util.Date;

/** 
* 消息格式化类的使用 

* @author leizhimin 2009-7-29 23:09:41 
*/ 
public class TestMsgFormat { 
        public static void main(String[] args) { 
                String msg = "欢迎光临,当前({0})等待的业务受理的顾客有{1}位,请排号办理业务!"; 
                MessageFormat mf = new MessageFormat(msg); 
                String fmsg = mf.format(new Object[]{new Date(), 35}); 
                System.out.println(fmsg); 
        } 
}

欢迎光临,当前(09-7-29 下午11:17)等待的业务受理的顾客有35位,请排号办理业务!

Process finished with exit code 0

时间: 2024-11-05 12:35:50

Formatter的相关文章

datagrid 里面的formatter方法

A.{field:'station_staus',title:'工位状态',width:250,align:'center',formatter: function(value,row,index){ if (row.station_staus==0){ return "现实"; } if(row.station_staus==1){ return "虚拟"; } }}, B.function(value, row, index) { return "&l

easyUI dategrid field 用formatter显示子属性

dategrid: <body class="easyui-layout" data-options="fit:true,border:false"> <table id="dg" class="easyui-datagrid" data-options="fit:true,border:false" url="book/listBookForUser" toolbar

SpringMVC同时使用&lt;mvc:resources … /&gt;和日期转换Formatter时出现问题的解决方法

很久没更新博文了,不是没有学习,而是很多东西记在OneNote里面,收获很多啊,因为各种杂事,所以对于博客很久没更新了. 个人觉得:博客比起OneNote或者为知笔记之类的云笔不同在于博客应该记载的是比较成体系的东西,所以很多东西我准备统一回顾我学到的东西后,再成体系的更新在这里来. 废话说多了,先处理RT的问题. 一.问题由来 在学习SpringMVC的过程中,对于URL的拦截,我使用了RESTful,这是一种在形式上没有动词没有后缀结尾的URL表现形式,利用PUT/POST/DELETE/G

jQuery EasyUI, datagrid, treegrid formatter 参数比较 row index

如题: datagrid中,见官方文档: formatter function The cell formatter function, take three parameter:value: the field value.rowData: the row record data.rowIndex: the row index. undefined 例子: {field:'id',title:'id',width:100,align:'center',formatter:function(va

formatter学习

{field:'id',title:'id',width:100,align:'center',formatter:function(value, row, index){return '<span style="color;red" >' + value + row.id + index + '</span>';}} value:字段值.rowData:行记录数据.rowIndex: 行索引. $('#dg').datagrid({ columns:[[ {f

EasyUI DataGrid 中字段 formatter 格式化不起作用

今天用 EasyUI datagrid 来做列表,要对一些数据进行格式化,推断某字段状态时,发现 formatter 格式化相应的函数不起作用. <table id="list_data" title="未审核报表" class="easyui-datagrid" style="width: auto;height:350px;" url="" toolbar="#toolbar"

vscode 中使用php-cs-fixer和PHP Formatter 插件规范化PHP代码

什么是PHP-CS-Fixer? 它是php-fig组织定义的PHP代码规范,良好的代码规范可以提高代码可读性,团队沟通维护成本 使用它可以按照指定的规范格式化您的PHP代码,此工具不仅可以检测有不符合规范的代码,而且还可以修复它们 1.使用php-cs-fixer.phar格式化php文件 1.下载php-cs-fixer.phar到任意目录,尽量放到php目录下) 2.在VScode里手动调用php-cs-fixer.phar进行格式化 2.在Vscode里PHP Formatter 插件

在easyui datagrid中formatter数据后使用linkbutton

http://ntzrj513.blog.163.com/blog/static/2794561220139245411997/ formatter:function(value,rowData,rowIndex){ if(value==""||value==null){ return "未知"; return rowData.cname+"<a class='easyui-linkbutton' data-options=\"iconCl

easyui datagrid 表格组件列属性formatter和styler使用方法

明确单元格DOM结构 要想弄清楚formatter和styler属性是怎么工作的,首先要弄清楚datagrid组件内容单元格的DOM接口,注意,这里指的是内容单元格,不包括标题单元格,标题单元格的结构有所区别.我们所有内容单元格的默认DOM结构如下: 1 2 3 4 5 <td field="code">     <div style="text-align:left" class="datagrid-cell datagrid-cell

EasyUI DataGrid formatter 格式化增加链接

function fLoadTable() { $('#tt').datagrid({ title: '', url: location.href, pagination: true, pageSize: 20, pagePosition: 'top', striped: true, singleSelect: true, rownumbers: true, columns: [[ { field: 'ID', title: 'ID', align: 'center', formatter: f