自动装箱与自动拆箱
Integer a=3;//这是自动装箱
其实编译器调用的是static Integer valueOf(int i)这个方法,valueOf(int i)返回一个表示指定int值的Integer对象,那么就变成这样:
Integer a=3; => Integer a=Integer.valueOf(3);
(2)拆箱:跟自动装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为基本类型的数据。
如下:
int i = new Integer(2);//这是拆箱
编译器内部会调用int intValue()返回该Integer对象的int值
Integer a =-129;
Integer a1 =-129;
System.out.println(a==a1);//false
Integer integer1 = 100;
Integer integer2 = 100;
System.out.println( integer1 == integer2);//true
Integer integer3 = 200;
Integer integer4 = 200;
System.out.println(integer3 == integer4);//false
Integer a1 =-129;
System.out.println(a==a1);//false
Integer integer1 = 100;
Integer integer2 = 100;
System.out.println( integer1 == integer2);//true
Integer integer3 = 200;
Integer integer4 = 200;
System.out.println(integer3 == integer4);//false
两个
Integer
对象最好不要用
==
比较。
因为:
-128~127
范围
(
一般是这个范围
)
内是取缓存内对象
用,所以相等,该范围外是两个不同对象引用比较,所以不等。
Integer a = new Integer(1);
Integer b = new Integer(1);
int c=1;
Integer e = 1;
System.out.println("a==b:"+(a==b));//false
System.out.println("a==c:"+(a==c));//true
System.out.println("a==e:"+(a==e));//false
System.out.println("c==e:"+(c==e));true
(1)
Integer
和
int
之间可以进行各种比较;
Integer
对象将自动拆箱后与
int
值比较
(2)两个Integer对象之间也可以用>、<等符号比较大小;两个Integer对象都拆箱后,再比较大小
Integer e=1; 这个比较特殊,直接赋值 它有独立的内存,每次赋值时将检查内存中是否有值跟他匹配的,若有则把此内存地址付给e,若没有,开辟新的内存 你可以尝试下面的例子: Integer t = 1; Integer t1 = 1; t==t1 为true,如上所说,此时t与t1指向的是同一块内存 new 一定是开辟新的内存,直接赋值则不一定开辟新的内存 因为a的引用指向堆,而e指向专门存放他的内存,所以他们的内存地址不一样 所以a==e为false c==e等同于 a==c,一个引用类型一个值类型
-------------------------------------------------------------------------------------------------
Date类型format() parse()方法
Date date=new Date(); System.out.println(System.currentTimeMillis()); SimpleDateFormat date1=new SimpleDateFormat("yyyy-MM-dd hh.mm.ss"); System.out.println(date1.format(date)); String s="1999-9-9"; SimpleDateFormat date2=new SimpleDateFormat("yyyy-MM-dd"); try { System.out.println(date2.parse(s)); } catch (ParseException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }