Format类及其子类功能和使用方法具体解释
Format类及其子类功能和使用方法具体解释
1. Format类结构:
· java.lang.Object
· java.text.Format
· All
Implemented Interfaces:
Serializable, Cloneable
Direct Known Subclasses:
DateFormat, MessageFormat, NumberFormat
public abstract class
Format
extends
Object
implements
Serializable,
Cloneable
2.Format类概述:
Format
是一个用于格式化语言环境敏感的信息(如日期、消息和数字)的抽象基类。
Format 定义了编程接口,用于将语言环境敏感的对象格式化为String(使用 format
方法)和将 String
又一次解析为对象(使用 parseObject
方法)。
通常。一个 format
的 parseObject方法必须能解析不论什么由其 format
方法格式化的字符串。
只是,也可能存在不能解析的异常情况。
比如。format
方法可能创建中间无分隔符的两个相邻整数,在这样的情况下,parseObject
无法推断哪个数字属于哪个数。
Java
平台为格式化日期、消息和数字分别提供了三个特殊的Format
的子类:DateFormat、MessageFormat
和
NumberFormat。
详细的子类必须实现三个方法:
format(Object obj, StringBuffertoAppendTo, FieldPosition pos)
formatToCharacterIterator(Object obj)
parseObject(String source,ParsePosition pos)
这些常规方法同意对对象进行多态解析和格式化。还能够被使用(如被 MessageFormat
使用)。子类通常也为特定的输入类型提供了另外的 format
方法,也为特定的结果类型提供了parse
方法。当在输入文本的開始没有不论什么所需格式的文本时,则不论什么不带 ParsePosition
參数的 parse 方法都应该抛出 ParseException。
大多数子类还将实现下面工厂方法:
getInstance
获取一个适合于当前语言环境的实用的格式对象
getInstance(Locale)获取一个适合于指定语言环境的实用的格式对象。
此外,某些子类还可能为了更特殊的控制实现其他 getXxxxInstance
方法。比如,NumberFormat
类提供了 getPercentInstance
和 getCurrencyInstance
方法来获取特殊的数字格式器。
Format
的子类假设同意程序猿能为不同语言环境(比方用 getInstance(Locale)
)创建对象,必须实现下面类方法:
public staticLocale[] getAvailableLocales()
最后子类定义一个常量集合来标识格式输出中的不同字段。这些常量用于创建一个 FieldPosition
对象。该对象标识字段中所包括的信息及其在格式化结果中的位置。这些常量应当命名为item _FIELD,当中item
标识了该字段。
有关这些常量的样例,请參阅 ERA_FIELD
及其在 DateFormat
中的同类。
3.创建Format类的实例
由于Format是抽象类,所以我们无法通过Format
的构造方法(非公有的)来实例化Format类的对象。如以下的写法是错误的:
Format format=new
Format();
那么我们怎样实例化Format类的实例呢?
我们能够利用Java面向对象语言的多态性来解决问题:
通过父类型的引用能够指向子类型的对象。说白了就是用子类去实例化父类的对象。如以下的做法:
Format format;
//通过子类直接实例化Format类的对象(适用于子类不是抽象类的情况)
format=new
MessageFormat("hh");
//通过子类的getXxxxInstance()来实例化Format类的对象(适用于子类是抽象类的情况)
format=NumberFormat.getCurrencyInstance();
format=DateFormat.getDateInstance();
4. DateFormat类
DateFormat
是Format类的抽象子类,
有一些static的getXxxxInstance()方法来获得实例。通过设置结果的长度和地区,来获得日期,时间等的格式。
DateFormat不太经常使用。
通常会使用SimpleDateFormat子类。newSimpleDateFormat("yyyy-MM-dd")或newSimpleDateFormat("yyyy-MM-dd
HH:mm:ss")等。来获得经常使用的时间格式。
能够通过设置的getXxxxInstance()方法来实例化DateFormat类的对象。
DateFormat类中另一些static的字段,如WEEK_OF_MONTH_FIELD,WEEK_OF_YEAR_FIELD。
api上说在FieldPosition中使用,用于对齐。
java.util.Calendar也是日期操作相关的类,实现类为GregorianCalendar。
主要对日期进行操作。注意add方法和roll方法的差别。roll方法不更改更大的字段。另一些静态的变量DAY_OF_MONTH,DAY_OF_WEEK等。在get/set/add/roll方法中使用。
4.1DateFormat的使用方法举例:
|
Date d = String s; /** Date类的格式: System.out.println(d); System.out.println("******************************************"); /** s = DateFormat.getDateInstance().format(d); System.out.println(s); /** s = DateFormat.getDateInstance(DateFormat.DEFAULT).format(d); System.out.println(s); /** s = DateFormat.getDateInstance(DateFormat.FULL).format(d); System.out.println(s); /** s = DateFormat.getDateInstance(DateFormat.MEDIUM).format(d); System.out.println(s); /** s = DateFormat.getDateInstance(DateFormat.SHORT).format(d); System.out.println(s); /** DateFormat format1 = "yyyy-MM-dd hh:mm:ss"); s = format1.format(new System.out.println(s); |
5. NumberFormat类:
NumberFormat
是全部数值格式的抽象基类。此类提供格式化和解析数值的接口。NumberFormat
还提供了一些方法来确定哪些语言环境具有数值格式,以及它们的名称是什么。
NumberFormat
可用于格式化和解析不论什么语言环境的数值。使代码可以全然独立于小数点、千位分隔符甚至所用特定小数位数的语言环境约定,并与数值格式是否为偶小数无关。
5.1NumberFormat的使用方法举例:
|
double num=868326.81472676; double //返回当前缺省语言环境的缺省数值格式。 /*输出结果:868,326.815*/ String myString = NumberFormat.getInstance().format(num); System.out.println(myString); //getCurrencyInstance()返回当前缺省语言环境的通用货币格式/*输出结果:¥868,326.81*/ myString = NumberFormat.getCurrencyInstance().format(num); System.out.println(myString); //getNumberInstance() myString = NumberFormat.getNumberInstance().format(num); System.out.println(myString); //getPercentInstance() myString = NumberFormat.getPercentInstance().format(test); System.out.println(myString); NumberFormat format = NumberFormat.getInstance(); // /*输出结果:868,326.815 */ format.setMaximumFractionDigits( 3 ); System.out.println(format.format(num)); // format.setMaximumIntegerDigits(2); System.out.println(format.format(num)); // format.setMinimumFractionDigits(2); System.out.println(format.format(num)); // /*输出结果:26.815 */ format.setMinimumIntegerDigits(2); System.out.println(format.format(num)); |
6. MessageFormat类:
MessageFormat
提供了以与语言无关方式生成连接消息的方式。使用此方法构造向终端用户显示的消息。
MessageFormat
获取一组对象。格式化这些对象。然后将格式化后的字符串插入到模式中的适当位置。
注:MessageFormat
不同于其它Format
类,由于MessageFormat
对象是用其构造方法之中的一个创建的(而不是使用getInstance
样式的工厂方法创建的)。
工厂方法没必要的,由于MessageFormat
本身不实现特定于语言环境的行为。
特定于语言环境的行为是由所提供的模式和用于已插入參数的子格式来定义的。
Format类及其子类功能和使用方法具体解释的更多相关文章
- Android开发之DatePickerDialog与TimePickerDialog的功能和使用方法具体解释
DatePickerDialog与TimePickerDialog的功能比較简单,使用方法也非常easy.仅仅要以下两步就可以. Ø 通过newkeyword创建DatePickerDialog.T ...
- swift新建类和子类方法的重写与重载
1.首先什么是重写与重载? 一.重写(override) override是重写(覆盖)了一个方法,以实现不同的功能.一般是用于子类在继承父类时,重写(重新实现)父类中的方法. 重写(覆盖)的规则: ...
- 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。
22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...
- Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。
#29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类T ...
- 类的继承和多态性-编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount()。定义Fish类,是Animal类的子类,
编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 ...
- 创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S
题目补充: 创建一个接口Shape,其中有抽象方法area,类Circle .Rectangle实现area方法计算其面积并返回. 又有Star实现Shape的area方法,其返回值是0,Star类另 ...
- 实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一个方法add用于涨工资,普通员工一次能涨10%,经理能涨20%。
1.实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一个方法add用于涨工资,普通员工一次能涨10%,经理能涨20%.具体要求如下:(1)Perso ...
- python获取父类的子类(遍历,递归),并循环执行所有子类的某一方法
前言 换了新工作,踏足于python语言的开发,也把自己的学习过程记录下来. 一,递归获取某一父类的所有子类 all_subclasses = {'0': '0'} def get_all_class ...
- 子类重载父类的方法“parent::方法名”转于 恩聪PHP学习教程
在PHP中不能定义重名的函数,也包括不能再同一个类中定义重名的方法,所以也就没有方法重载.单在子类中可以定义和父类重名的方法,因为父类的方法已经在子类中存在,这样在子类中就可以把从父类中继承过来的方法 ...
随机推荐
- PHP MySQL Order By 关键词 之 Order By
ORDER BY 关键词 ORDER BY 关键词用于对记录集中的数据进行排序. 语法 SELECT column_name(s) FROM table_name ORDER BY column_na ...
- poj 2356 Find a multiple(鸽巢原理)
Description The input contains N natural (i.e. positive integer) numbers ( N <= ). Each of that n ...
- 所闻所获6:meditashayne项目总结
项目源码下载地址: https://github.com/ShayneYeorg/Meditashayne 1.首先一开始设计这个App的时候,我就希望它能比系统自带的备忘录更方便:比如备忘录需要手动 ...
- VC2010 Working Directory
VC project setting --〉debug中的working directory指的是工作文件夹在哪里? project属性下,Debug以下的 Working Directory 是为了 ...
- Android Studio代码自己主动提示无效(not available in Power Save mode)
针对一位博友提的问题,我这边写出来,预计还是非常多人会碰到这个问题,可是不知道怎样解决的. 就是在设置了代码自己主动提示功能后,发现不生效的,怎样设置代码自己主动提示请戳这:Android Studi ...
- Zjnu Stadium(hdu3047带权并查集)
题意:一个300列的无限行的循环场地,a b d代表a,b顺时针相距d的距离,现在给你一些距离,判断是否有冲突,如果有冲突计算冲突的次数 思路:带权并查集 a,b的距离等于b到根节点的距离 - a到根 ...
- 【小知识+小细节】不断更新ing...
1.printf printf("%.0lf",k) 输出的不是floor(k) 而是k四舍五入 ..才发现.xlf 都是四舍五入取x位 2.cin char buff[300] ...
- onvif规范的实现:成功实现ONVIF协议RTSP-Video-Stream与OnvifDeviceManager的视频对接
有了前几篇的基础,现在可以正式开始onvif的实现工作,其中一项非常重要的部分就是视频流的对接,即能够在符合onvif标准的监控客户端软件里接收到设备端NVT发来的RTSP视频流.这里,我所用的客户端 ...
- Java学习——继承
将学生工人的共性描述提取出来,单独进行描述,只要让学生和工人与单独描述的这个类有关系,就可以了. 继承:1,提高了代码的复用性.2,让类与类之间产生了关系.有了这个关系,才有了多态的特性. 注意:千万 ...
- SQL-LINQ-Lambda 语法对照
SQL LINQ Lambda SELECT *FROM Employees from e in Employees select e Employees .Select (e => e) ...