您的位置:首页 > 编程语言 > Java开发

Java心得---封装、日期、数学等相关类

2012-04-22 17:35 387 查看
[b] 以下写的常用方法,都是java JDK中定好的,均可以直接调,不用去考虑方法体怎么写。此处只是粗略介绍,详细见JDK方法。[/b]

1. 基本数据类型只能保存单一的值(即真正的信息),不允许调用任何方法,不能封装成员变量,因而不适合保存复杂格式的信息,即不具备面向对象的特性。

为弥补基本数据类型在面向对象方面的欠缺,Java语言中引入了封装类(Wrapper Classes)——针对各种基本数据类型均提供了相应的引用数据类型,它们在JDK API的java.lang包中定义的。

没有任何编程语言为追求面向对象的“纯正性”而取消对基本数据类型的支持,基本数据类型存在的必要性:

ü 它们迎合了人们早已根深蒂固的行为习惯;

ü 基本类型数据无需使用new创建对象,也不需要额外的引用空间保存辅助信息,因此运行开销较小

2.

基本数据类型

封装类

int

Integer

short

Short

long

Long

byte

Byte

float

Float

double

Double

char

Character

boolean

Boolean

封装类均被定义为final,不能被继承;封装类的对象一经创建,其内容便不能改变,即其所封装的基本数据类型数值为只读的(该值在创建对象时由构造方法的参数指定,其后不可改变,直至对象被销毁)两个特殊的int、char;剩下的均首字母大写

3. 每个Integer类的对象可以封装一个int型的整数值,该类中还提供了多个用于处理int型数据的功能方法。

µ 构造方法

public Integer(int value)

public Integer(String s)throwsNumberFormatEcception

例如,Integer i1=newInteger(123);

Integer i2=new Integer(“123”);

µ 其它常用方法

ü public int intValue();返回当前对象封装的int型值

ü public boolean equals(Object obj); 用于比较两个Integer对象中封装的整型值是否相等如果obj所引用的对象也是Integer类型,而且两者所封装的int型值相等,则返回ture(即使两个不同对象也判定为等价)。

ü public String toString();将当前对象所封装的int型数值转换成字符串返回。

ü public static StringtoString(int i);将参数i指定的int型数值以字符串的形式返回。

ü public static String toBinaryString(int i);将i指定的int型数值的二进制无符号整数表示以字符串形式返回。

ü public static String toOctalString(int i);将i指定的int型数值的八进制无符号整数表示以字符串的形式返回。

ü public static String toHexString(int i);将i指定的int型数值的十六进制无符号整数表示以字符串的形式返回。

ü Public static int parseInt(Strings) throws NumberFormatException;将参数s指定的字符串转换成整型数据返回。其参数s除第一个字符可以是用来表示负值的“-”之外,其余字符都必须是十进制数字。

parseInt()方法在实际应用开发中尤为常用,如果该方法所解析的参数字符串中含有非法字符(0~9以外的字符),或者其值是null,或为空字符串会出错。String类中的静态方法valueOf(int i)可以实现和Integer类的静态方法toString(int i)同样的功能,前者在String类中还被重载了多次,可以将任何基本类型和引用数据转换为String类型并返回。

封装类起到了包装相应基本类型数据的作用并提供了相关的处理功能,这也是其名称的由来。其他封装类的性质和用法与Integer一样,也是封装和处理各自相应的基本类型数据。

µ 4. 自动封装/拆封

自动封装/拆封是指在基本数据类型值和其对应的包装类对象之间完成自动转换的过程。而不必再显示调用封装类的构造方法或者相应的解析方法。

例如:

自动封装 Integer obj1; int num1=33; obj1=num1;

自动拆封 Integerobj2=new Integer(22);

int num2; num2=obj2

注意:这种自动封装和自动拆封功能只能发生在基本数据类型和其所对应的包装类型之间。

任何需要封装类型数据的场合,均可使用相应的基本类型数据代替,反之亦然。

实际上自动封装/拆封过程中系统隐含的调用了有关封装类的构造方法和解析方法。例:

Integer obj1 = j ó Integer obj1 = Integer(j);

4. Date类

java.util.Date类用于表示特定的时间点(精确到毫秒),该类是通过记录从基准时间(格林威治标准时间公元1970年1月1日00:00:00)开始到当前时刻的时间差,即所经历的毫秒数,来实现计时。实际上记录的是一个long型的整数,可以认为Date类实际上是对long型数据进行了简单的封装,并提供了时间的换算(基于约定的时间基准点将毫秒数时间差换算为具体的年、月、日、时、分、秒、星期几等)、修改和比较功能。

µ 构造方法

ü public Date(): 创建Date对象,该对象表示/记录当前的系统时间,精确到毫秒。

ü public Date(long date):创建Date对象,表示/记录的是自基准时间点(1970.1.1 00:00:00)以来经历了参数date指定的毫秒数后的时刻,如果该参数为负值,则代表基准点以前的时间。

µ 常用方法

ü public int compareTo(Date anotherDate)

比较两个日期对象所记录的日期的前后顺序(如果是同一时刻返回0;如果当前对象代表的时间在前返回一个负数,通常是-1,否则返回一个正数,通常是1)。


ü public boolean equals(Object obj)

比较两个日期的等价性(同一时刻等价)


ü public long getTime()

返回自基准时间点到当前时刻(当前对象表示的时间点)所经历的毫秒数


ü public String toString()

将当前时刻转换为字符串形式返回,其格式为:“星期 月份 日期 小时:分钟:秒 时区年份”


Date类使用起来相对容易,但是它并不支持日期的国际化和分时区显示,该类的大量方法以过时,不再提倡使用,引入了Calender类、Timezoo等。

5. Calendar类

java.util.Calendar类是Date类的一个增强版,该类提供了常规的日期修改功能和国际化支持,以及对日历操作提供方便。将Calendar比喻为墙上挂着的带日历功能的电子时钟

注意:Calendar类是一个抽象类,可以调用其静态方法getInstance()来获得该类的实例(实际上是其子类的实例):Calendar c=Calendar.getInstance();基于当前时刻,使用默认(当前操作系统的)时区和语言环境获得的一个Calendar对象。

获取和设置时间域的值则是通过其get()和set()方法实现的,另外还有一个提供日期/时间转换功能的方法add()也比较有用。

µ public void set(int field,int value)

将参数field指定的时间域(年、月、日、时、分、秒等)设置为参数value指定的值。field可为:Calendar.YEAR、Calendar.MONTH、Calendar.HOUR等


µ public final void set(intyear,int month,int date)

设置当前日历的“年、月、日”三个时间域的值。


µ public final void set(intyear,int month,int date,int hourOfDay,int minute,int second)

设置日历的“年、月、日、时、分、秒”等时间域的值。


µ public abcstract voidadd(int field,int amount)

为当前日历的指定时间域添加或减去指定的时间量。


需注意:

ü 属性Calender.HOUR标记的时间域“小时”是12小时制的,要想获得24小时制的数值,则必须使用Calender.HOUR_OF_DAY来标记。

ü 从Calender获取的月份信息值是从0开始的,即一月份的时间域获取值为0,因此display方法中将该字段的值加1已以得到实际的月份数。

6. DateFormat类

java.text.DateFormat类提供了将日期/时间信息进行格式化处理的功能,主要是将日期/时间信息(Date类型数据)转换成人们所习惯的格式字符串以及反向转换的功能。

美国常见的日期的表示法:月/日/年,中国:年/月/日。

DateFormt类的主要目标就是将日期/时间信息转换成能够适合各个国家和地区习惯的格式化字符串。

µ public static finalDateFormat getDateInstance()

获得一个具有默认语言环境、默认格式化风格的DateFormat对象。


µ public static finalDateFormat getDateInstance(int style):获得一个具有默认语言环境、给定格式化风格的DateFormat对象

µ public static finalDateFormat getDateInstance(int style,Locale aLocale)获得具有给定语言环境、给定格式化风格的DateFormat对象。

µ public static finalDateFormat getTimeInstance()

获取具有默认语言环境、默认格式化风格的日期/时间DateFormat对象。


µ public static finalDateFormat getTimeInstance(int style):获得一个具有默认语言环境、给定格式化风格的DateFormat对象

µ public static finalDateFormat getTimeInstance(int style,Locale aLocale)获得具有给定语言环境、给定格式化风格的DateFormat对象。

µ public static finalDateFormat getDateTimeInstance():获得一个具有默认语言环境、给定格式化风格的DateFormat对象

µ public static finalDateFormat getDateTime Instance(int dateStyle,int timeStyle)获得具有给定语言环境、给定格式化风格的DateFormat对象。

µ public static finalDateFormat getDateTime Instance(int dateStyle,int timeStyle,Locale alocale)获得具有给定语言环境、给定格式化风格的DateFormat对象。

µ public final Stringformat(Date date)

将一个Date对象格式化为日期/时间字符串。


µ DateFormat类中定义了相应的整型常量来标识各种转换风格,包括:DateFormat.SHORT、DateFormat.MEDIUM、DateFormat.LONG、DateFormat.FULL。

语言

代码

国家/地区

代码

Chinese

zh

China

CN

English

en

Taiwan

TW

French

fr

Germany

DE

German

de

Great Britain

GB

Italian

it

Italy

IT

Japanese

ja

Japan

JP

Spanish

sp

Span

SP

United States

US

7. SimpleDateFormat类

java.text.SimpleDateFormat类是DateFormat类的子类,它方便用户自己定义日期、时间表示格式,并提供更灵活的日期和字符串信息转换和解析的功能。

注意:

ü 模式串中可以包含模式符以外的字符或字符串,如“年”、“月”、“日”等字符,这些字符或字符串在转换过程中将被原样保留;

ü 如果要在模式串中包含字母(a~z,A~Z)且不希望其被当做模式符转换掉,则可以将其用半角单引号“‘”括起来;

ü 由于单引号已被用作分隔标记,如果在模式串中要作为普通字符来包含它,就需要使用两个连续的半角单引号(“''”,注意这不同于一个双引号)来代替。例如,"'On'yyyy-MM-dd HH 'o''clock,We tesed it.'"

模式字符

说明

A

上午/下午(AM/PM)标志

D

一年中的第几天

D

一月中的第几天

E

星期中的第几天

F

一月中的第几个星期几

G

年代标志

H

小时(0~23)

H

小时(0~11),使用AM/PM区分上、下午

K

小时(1~24)

K

小时(1~12),使用AM/PM区分上、下午

M

月份

M

分钟

S

毫秒

S



W

一个月中的第几星期

W

一年中的第几星期

Y



Z

太平洋标准时间(PST)时区

Z

RFC822时区

8. 基本数学功能类Math

java.lang.Math类提供了常用的数学运算功能和数学常量,其中的属性和方法均被定义为public和static的,因此不需要创建Math的实例即可直接访问或调用。

(0) public staticdouble random():生成double型随机数,其取值区间为[0.0,1.0)

(1)数据截断操作:

public static double ceil(double a):向上取整,返回最小的double值,该值大于等于参数,并等于某个值。

public static double floor(double a):向下取整,返回最大的double值,该值小于等于参数,并等于某个值。

public static long round(double a)和public static int round(float a):四舍五入。

(2)取最大、最小、绝对值

public static int max(min、abs) (int(float、long、double) a,int b(float、long、double))返回两个数中的最大、小值;或绝对值。

(3)三角函数

sin() 、cos()、tan():返回角的正弦值、余弦值、正切值。

asin()、acos()、atan():返回角的反正弦值、反余弦值、反正切值。

public static double
toDegrees(doubleangrad):将用弧度表示的角转化为近似相等的用角度表示的角。


public static double
toRadians(doubleangdeg):将用角度表示的角转化为近似相等的用弧度表示的角。


(4)幂运算和对数运算

public static double pow(double a,double b):幂运算,返回a的b次方。

public static double exp(double a):对欧拉数e进行指定次数的幂运算。

public static double sqrt(double a):返回a的正平方根。

public static double log(double a):自然对数运算。

public static double log10(double a):以10为底的对数运算。

(5)常量

public static double PI:圆周率常量。

public static double E:欧拉数常量(自然对数的底)。

9. 数据格式化工具类

µ java.text.NumberFormat:所有数据格式的抽象基类

功能:提供了将数字(包括整型和浮点型)格式化为符合特定语言环境(Locale)表示习惯的字符串以及逆向解析字符串为数字的功能。


ü public static final NumberFormat getInstance()

返回当前默认语言环境的通用数字格式对象。


ü public static NumberFormat getInstance(Locale intLocale)

返回指定语言环境的通用数字格式对象。


ü public final String format(double number)

格式化指定的数据,返回格式化字符串。


ü public static final NumberFormat getCurrencyInstance()

返回默认语言环境的货币格式对象。


ü public static final NumberFormat getCurrencyInstance(LocaleinLocale)

返回默认语言环境的货币格式对象。


ü public static final NumberFormat getPercentInstance()

返回当前默认语音那环境的百分比格式对象。


ü public static NumberFormat getPercentInstance(Locale inLocale)返回指定语言环境的百分比格式对象。

注意:实际上货币数值输出时不大可能随便改变其货币符号,除非同时进行相应的汇率转换,否则后果会很严重,而小数表示为百分比形式各语言环境中没什么分别

10. java.text.DecimalFormat:是NumberFormat的子类

功能:用于格式化各种形式的十进制数据(整数、浮点数、科学记数法表示的数据、百分数和金额(如$20)等 )为当前语言环境相关的字符串表示形式以及反向的解析操作。


ü public DecimalFormat()

使用默认模式语言环境创建DecimalFormat对象


ü public DecimalFormat(String pattern)

给定模式和默认语言环境创建DecimalFormat对象


ü public final String format(double number):格式化指定的数据,返回格式化字符串。

ü public Number parse(String source)throws ParseException:将指定的字符串解析为Number对象。

符号

出现位置

含义

0

数字

阿拉伯数字

#

数字

阿拉伯数字,如果不存在则显示为0

.

数字

小数分隔符或货币小数分隔符

-

数字

减号

,

数字

分组分隔符

E

数字

分隔科学计数法中的尾数和指数,在前缀或后缀中无需加引号

;

子模式边界

分隔正数和负数子模式

%

前缀或后缀

乘以100并显示为百分数

‰(\u2030)

前缀或后缀

乘以1000并显示为千分数

¤(\u00A4)

前缀或后缀

货币符号,由货币符号替换



前缀或后缀

转义符,用于在前缀或后缀中为特殊字符加引号,例如“’#’#”,将123格式化为“#123”。要创建单引号本身,连续使用两个单引号,“# o’’clock”

模式符中的千分号和货币符号在多数的纯文本文件编译器中无法输入和显示,可以使用相应的Unicode编码方式来表示,这也是java语言字符常量的一种表示方法。

相比之下,DecimalFormat常量在本地(默认)的语言环境下有更好的格式控制,虽然也可以设置为不同于本地的语言环境,但实现起来不方便且不可靠;而NumberFormat常量则常被用于指定不同于本地的语言环境,两者的共同点是均使用于国际化/本地化的应用程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: