包装类(wrapper class)
--基本数据类型对应的类统称为包装类(Wrapper Class)。包装类均位于java.lang包,包装类和基本数据类型的对应关系如下表所示:
基本数据类型 | 包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
包装类的用途
--作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
--包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法(这些操作方法的作用是在基本类型数据、包装类对象、字符串之间提供转化!)。
自动的装箱(autoboxing)和拆箱(unboxing)
--将基本类型和包装类进行自动的互相转换。
自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。
自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法。
自动装箱与拆箱的功能事实上是编译器来帮您的忙,编译器在编译时期依您所编写的语法,决定是否进行装箱或拆箱动作。
1 //自动装箱 2 Integer i = 100; 3 相当于编译器自动为您作以下的语法编译: 4 Integer i = new Integer(100); 5 6 7 //自动拆箱 8 int a = new Integer(100); 9 int a = new Integer(100).intValue();
虽然使用这个功能很方便,但在程序运行阶段您得了解Java的语义。例如下面的程序是可以通过编译的:
1 Integer i = null; 2 int j = i;
这样的语法在编译时期是合法的,但是在运行时期会有错误的。
写法相当于:
1 Integer i = null; 2 int j = i.intValue();
null表示i没有参考至任何的对象实体,它可以合法地指定给对象参考名称。由于实际上i并没有参考至任何的对象,所以也就不可能操作intValue()方法,这样上面的写法在运行时会出现NullPointerException错误。
注意:自动装箱拆箱时,对于-128-127之间的值,编译器仍然会把它当做基本类型处理。
1 Integer h = 100; 2 Integer u = 100; 3 Integer h2 = 200; 4 Integer u2 = 200; 5 if(h==u){ 6 System.out.println("100等于"); 7 } 8 if(h2==u2){ 9 System.out.println("200等于"); 10 }
时间处理相关类
Date时间类(java.util.Date)
--Data的对象表示一个特定的瞬间,精确到毫秒。
查看API文档大家可以看到很多方法过时了,JDK1.1之前的Date包含了:日期操作、字符串转化成时间对象,时间对象。 1.1之后,日期操作使用:Canlendar类来。 字符串转化:DateFormat。
DateFormat和SimpleDateFormat类
作用:把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。
DateFormat是一个抽象类。一般使用SimpleDateFormat类。
Calendar 日历类
GregorianCalendar 是 Calendar 的一个具体子类。
月份的表示,一月是0,二月是1,以此类推,是12月是11。星期的表示,星期日是1,星期一是2,以此类推。因为大多数人习惯于使用单词而不是使用数字来表示月份,这样程序也许更易读,父类Calendar使用常量来表示月份:JANUARY, FEBRUARY,等等