第4章_包装类与日期类_第1页
第4章_包装类与日期类_第2页
第4章_包装类与日期类_第3页
第4章_包装类与日期类_第4页
第4章_包装类与日期类_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第4章包装类与日期类章包装类与日期类JSP基础知识基础知识 Java的基本数据类型可以放入寄存器,正因如此,基本数据类型的存取、运算比各种类类型速度要快。所以为了兼顾运算的效率,java当中当然要有基本数据类型。 包装类包装类 Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class), 除了int(Integer)和char(Character),其余类型首字母大写即成封装类类型名。包装类 原始

2、数据类型包装类byte(字节)Byte char(字符)Character int(整型)Integerlong(长整型)Long float(浮点型)Floatdouble(双精度)Double boolean(布尔)Booleanshort(短整型)Short 对于包装类说,这些类的用途主要包含两种: 作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。包装类 包装类 抽象类抽象类Number定义了一个由包装数字类型定义了一个由包装数字类型的类实现的超类。是的类实现的超类。是 Byte、Double、Float、

3、Integer、Long 和和 Short 类的超类。类的超类。 包装类 Number类方法摘要bytebyteValue() 以 byte 形式返回指定的数值。abstract doubledoubleValue() 以 double 形式返回指定的数值。abstract floatfloatValue() 以 float 形式返回指定的数值。abstract intintValue() 以 int 形式返回指定的数值。abstract longlongValue() 以 long 形式返回指定的数值。 shortshortValue() 以 short 形式返回指定的数值。包装类 Doub

4、le a=3.14;Integer b=Value();System.out.println(b);示例:示例:从类 java.lang.Object 继承的方法:equalstoString包装类 10包装类 示例:示例:Double a=3.14;String b=a.toString();System.out.println(b);String s = Integer.toString(123);System.out.println(s);基本类型与包装类型的相互转换:包装类 int n = 10;Integer in = new Integer(100);/ 将将int类型转

5、换为类型转换为Integer类型类型Integer in1 = new Integer(n);/ 将将Integer类型的对象转换为类型的对象转换为int类型类型int m = Value();JDK自从1.5(5.0)版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。使用示例代码如下: / int类型会自动转换为类型会自动转换为Integer类型类型int m = 12;Integer in = m;/ Integer类型会自动转换为类型会自动转换为int类型类型int n = in;自动装箱与拆箱自动

6、装箱与拆箱自动装箱与拆箱的功能事实上是编译器来帮忙,编译器在编译时期根据语法,决定是否进行装箱或拆箱动作。例如: Integer i = 100;相当于编译器自动做以下的语法编译: Integer i = new Integer(100);所以自动装箱与拆箱的功能是所谓的“编译器蜜糖”(Compiler Sugar)自动装箱、拆箱的功能提供了方便性,但隐藏了一些细节,所以必须小心 :自动装箱与拆箱public class AutoBoxDemo public static void main(String args) Integer i1 = 100; Integer i2 = 100; if

7、 (i1 = i2) System.out.println(i1 = i2); else System.out.println(i1 != i2); 结果:结果:i1 = i2将i1和i2的值改为200:自动装箱与拆箱public class AutoBoxDemo public static void main(String args) Integer i1 = 200; Integer i2 = 200; if (i1 = i2) System.out.println(i1 = i2); else System.out.println(i1 != i2); 结果:结果:i1 != i2说明

8、:当我们在利用=比较基本类型时,比较的是值。但是=运算符用于比较包装器对象时,是检测对象是否值向同一个存储区域在自动装箱时对于值从128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,所以范例1中使用=进行比较时,i1 与 i2实际上参考至同一个对象。如果超过了从128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个Integer对象,所以范例2使用=进行比较时,i1与i2参考的是不同的对象。 自动装箱与拆箱为避免此类问题,建议使用equals方法比较对象是否相等,而不是用=运算符比较对象是否相同 public class Aut

9、oBoxDemo public static void main(String args) Integer i1 = 200; Integer i2 = 200; if (i1.equals(i2) System.out.println(i1 = i2); else System.out.println(i1 != i2); 自动装箱与拆箱Double和Float双精度(Double)和浮点(Float)分别是对类型double和类型float的浮点值的包装器。class DoubleDemo public static void main(String args) Double d1 = n

10、ew Double(3.14159); Double d2 = new Double(314159E-5); System.out.println(d1 + = + d2 + - + d1.equals(d2); 3.14159 = 3.14159 - true浮点(浮点(Float)和双精度()和双精度(Double)提供了)提供了isInfinite()和和isNaN()方法,用于操作两个特殊的双精度(方法,用于操作两个特殊的双精度(double)和浮点(和浮点(float)值:)值:Infinity(无穷无穷)和和NaN(非具体数(非具体数字)。字)。NaN用于处理计算中出现的错误情况,

11、比如用于处理计算中出现的错误情况,比如0.0除以除以0.0,或者求负数的平方根。,或者求负数的平方根。 Infinity表示无穷大,表示无穷大,Java中小数除以中小数除以0值为无穷大,值为无穷大,比如比如1f/0f结果为正无穷大,结果为正无穷大,1f/-0f结果为负无穷大结果为负无穷大 。Double和和Float在下面的例子中构造了两个在下面的例子中构造了两个Double对象;一个是无穷,另一个是对象;一个是无穷,另一个是非数字:非数字:class InfNaN public static void main(String args) Double d1 = new Double(1.0f

12、/0.0f); Double d2 = new Double(0.0f/0.0f); System.out.println(d1 + : + d1.isInfinite() + , + d1.isNaN(); System.out.println(d2 + : + d2.isInfinite() + , + d2.isNaN(); 程序运行产生如下的输出:程序运行产生如下的输出:Infinity:true,falseNaN:false,trueByte, Short, Integer 和 LongByte,Short,Integer,和Long类分别是字节型(byte),短整型(short),

13、整型(int)和长整型(long)整数类型的包装器。具体的用法请参考相关文档。Character类类字符(Character)是围绕字符型(char)的一个简单的包装器。lCharacter包装类的方法方法说明isDigit()确定字符是否为 0 至 9 之间的数字isLetter()确定字符是否为字母isLowerCase()确定字符是否为小写形式isUpperCase()确定字符是否为大写形式isSpace()确定字符是否为空格或换行符isWhitespace() 确定字符是否为空白字符class IsDemo public static void main(String args) ch

14、ar a = a, b, 5, ?, A, ; for (int i = 0; i a.length; i+) if (Character.isDigit(ai) System.out.println(ai + is a digit.); if (Character.isLetter(ai) System.out.println(ai + is a letter.); if (Character.isWhitespace(ai) System.out.println(ai + is whitespace.); if (Character.isUpperCase(ai) System.out.p

15、rintln(ai + is uppercase.); if (Character.isLowerCase(ai) System.out.println(ai + is lowercase.); Character类类程序的输出结果如下所示:程序的输出结果如下所示:aisaletter.aislowercase.bisaletter.bislowercase.5isadigit.Aisaletter.Aisuppercase.iswhitespace.Character类类Date 类Date 类表示日期和时间提供操纵日期和时间各组成部分的方法Date 类位于java.util包,因此在源程序

16、开始位置需要写如下语句: import java.util.Date;Date类封装当前的日期和时间。Date类中的大部分方法已经被废弃了。现在一般情况下Date类只用来生成当前日期。如下:Date date = new Date();System.out.println(date);显示为:显示为:Mon Jun 28 10:58:50 CST 2010也可以如下:也可以如下:System.out.println(date.toLocaleString();显示为:显示为:2010-6-28 11:03:56Date 类CST代表中国标准时间,也就是北京时间(东八区)。代表中国标准时间,也就

17、是北京时间(东八区)。 Java的日期范围大约是 1970 年 1 月 1 日午夜的前后各 285616 年。Date类的getTime()方法可以返回一个长整数,这个整数代表了从 1970 年 1 月 1 日开始计算到 Date 对象中的时间之间的毫秒数。这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间:Date 类import java.util.Date;public class DateDemo public static void main(String args) Date now = new Date(); long nowLong = now.getTime();

18、 System.out.println(Value is + nowLong); 在进行各种日期和时间换算的时候,可以定义一些变量来表示一天、一个小时或一分钟中包含的毫秒数。这样做通常是很有帮助的。例如:Date 类import java.util.Date;public class DateDemo public static void main(String args) int MinMilli = 1000 * 60; int HrMilli = MinMilli * 60; int DyMilli = HrMilli * 24; Date d = new Date(); long t

19、= d.getTime(); String s = It is been; /round方法返回与数值表达式最接近的整数方法返回与数值表达式最接近的整数 s += Math.round(t / DyMilli) + days since 1/1/70; System.out.println(s); DateFormat类在java.util.Date类中实际上取得的时间是一个非常正确的时间。但是因为其显示的格式不理想,所以无法符合中国人的习惯要求,那么实际上此时就可以为此类进行格式化操作,变为符合于中国人习惯的日期格式。java.text.DateFormat类专门用于格式化日期。DateFo

20、rmat类是一个抽象类,所以肯定无法直接实例化,但是在此抽象类中提供了一些静态方法,可以直接取得本类的实例(Locale 对象表示了特定的地理、政治和文化地区) :DateFormat类方 法类 型描 述public static final DateFormat getDateInstance()普通得到默认的对象public static final DateFormat getDateInstance(int style, Locale aLocale)普通根据Locale得到对象public static final DateFormat getDateTimeInstance()普通

21、得到日期时间对象public static final DateFormat getDateTimeInstance(int dateStyle,int timeStyle,Locale aLocale)普通根据Locale得到日期时间对象import java.util.Date;import java.text.*;public class DateFormatDemo1 public static void main(String args) DateFormat df1 = null; / 声明声明DateFormat类对象类对象 DateFormat df2 = null; / 声明

22、声明DateFormat类对象类对象 df1 = DateFormat.getDateInstance(); / 取得日期取得日期 df2 = DateFormat.getDateTimeInstance(); / 取得日期时间取得日期时间 System.out.println(DATE: + df1.format(new Date();/ 格式格式化日期化日期 System.out.println(DATETIME: + df2.format(new Date(); DateFormat类DateFormat类import java.text.DateFormat;import java.u

23、til.Date;public class DateFormatDemo2 public static void main(String args) Date date = new Date(); DateFormat shortFormat = DateFormat.getDateInstance(DateFormat.SHORT); DateFormat mediumFormat = DateFormat.getDateInstance(DateFormat.MEDIUM); DateFormat longFormat = DateFormat.getDateInstance(DateFo

24、rmat.LONG); DateFormat fullFormat = DateFormat.getDateInstance(DateFormat.FULL); System.out.println(shortFormat.format(date); System.out.println(mediumFormat.format(date); System.out.println(longFormat.format(date); System.out.println(fullFormat.format(date); DateFormat类import java.text.DateFormat;i

25、mport java.util.Date;public class DateFormatDemo2 public static void main(String args) Date date = new Date(); DateFormat shortFormat = DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.SHORT); DateFormat mediumFormat = DateFormat.getDateTimeInstance( DateFormat.MEDIUM, DateFormat.MEDIUM)

26、; DateFormat longFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); DateFormat fullFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); System.out.println(shortFormat.format(date); System.out.println(mediumFormat.format(date); System.out.println(longForm

27、at.format(date); System.out.println(fullFormat.format(date); Java.util.Locale类Locale 对象表示了特定的地理、政治和文化地区。Locale确定了一种专门的语言和区域,通过使用java.util.Locale对象来为那些区域敏感型的对象定制格式化数据以及向用户的展示。使用此类中的构造方法来创建 Locale: Locale(String language) Locale(String language, String country) Locale(String language, String country,

28、String variant) DateFormat类语言参数是一个有效的 ISO 语言代码。这些代码是由 ISO-639 定义的小写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:/standards/iso639-2/englangn.html。 国家/地区参数是一个有效的 ISO 国家/地区代码。这些代码是由 ISO-3166 定义的大写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:http:/www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-

29、en1.html。 变量参数是特定于供应商或浏览器的代码。例如,用 WIN 代表 Windows、MAC 代表 Macintosh 和 POSIX 代表 POSIX。DateFormat类import java.text.DateFormat;import java.util.Date;import java.util.Locale;public class DateFormatDemo2 public static void main(String args) Date date = new Date(); Locale locale = new Locale(en, US); DateFo

30、rmat shortFormat = DateFormat.getDateInstance(DateFormat.SHORT,locale); DateFormat mediumFormat = DateFormat.getDateInstance(DateFormat.MEDIUM,locale); DateFormat longFormat = DateFormat.getDateInstance(DateFormat.LONG,locale); DateFormat fullFormat = DateFormat.getDateInstance(DateFormat.FULL,local

31、e); System.out.println(shortFormat.format(date); System.out.println(mediumFormat.format(date); System.out.println(longFormat.format(date); System.out.println(fullFormat.format(date); DateFormat类注意:DateFormat类的日期时间已经被格式化,格式是其默认的时间显示格式,但是如果现在要想得到用户自己需要的日期显示格式,则必须通过DateFormat的子类SimpleDateFormat类完成。Date

32、Format类SimpleDateFormat 是一个以与语言环境相关的方式来格式化日期的具体类。它允许进行格式化日期 。 使得可以选择任何用户定义的日期-时间格式的模式。SimpleDateFormat位于java.text包,因此需要在源程序开始位置写如下语句: import java.text.*;SimpleDateformat类日期和时间模式日期和时间格式由日期和时间模式 字符串指定。SimpleDateformat类字母 日期或时间元素 表示 示例 y 年 Year 1996; 96 M 年中的月份 Month July; Jul; 07 w 年中的周数 Number 27 W 月

33、份中的周数 Number 2 D 一年中的第几天Number 189 d 月份中的天数 Number 10 F 月份中的星期 Number 2 E 星期中的天数 Text Tuesday; Tue SimpleDateformat类a 上午/下午标记 Text PM H 一天中的小时数(0-23) Number 0 k 一天中的小时数(1-24) Number 24 K 上午/下午中的小时数(0-11) Number 0 h 上午/下午中的小时数(1-12) Number 12 m 小时中的分钟数 Number 30 s 分钟中的秒数 Number 55 S 毫秒数 Number 978 z

34、时区 General time zone Pacific Standard Time; PST; GMT-08:00 Z 时区 RFC 822 time zone -0800 SimpleDateformat类方 法类 型描 述public SimpleDateFormat(String pattern)构造通过一个指定的模板构造对象public Date parse(String source) throws ParseException普通将一个包含日期的字符串变为Date类型public final String format(Date date)普通将一个Date类型按照指定格式变为String类型SimpleDateFormat类中的常用方法类中的常用方法示例:示例:import java.text.DateFo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论