/* 包装类
* 18/11/20
*
*1.基本类型(全是小写) 包装类型(引用类型)
* byte java.long.Byte
* short java.long.Short
* int java.long.Integer
* long java.long.Long
*
* float java.long.Float
* double java.long.Double
*
* char java.long.Character
* boolean java.long.Boolean
*
* 注意:BigInteger BigDecmail (没有对应的基本类型,主要用于高精度计算)
*
*2.自动装箱和自动拆箱:自动装箱和拆箱是由编译器来完成的,编译器会在编译期根据语法决定是否进行装箱和拆箱动作。
*/
public class WrapClassTest03 {
public static void main(String[] args){
//例一(自动装箱)
m1(1); // int---->Integer 自动装箱
Integer i1=1; //自动装箱 被编译为:Integer i1=Integer.valueOf(i1);
int i11=i1; //自动拆箱
/*
* 特别注意:自动装箱拆箱是在jdk1.5之后出现的
*/
//重点:例二(手动装箱)
//int--->Integer
Integer b2=123;//编译器解析为:Integer b2=new Integer(123);
Integer i2=new Integer(123);
//int,double--->String
String s1=1+"";
String s2=String.valueOf(1);
String s3=Integer.toString(10); //将int类型转换为对应的String类型。
String s4=Double.toString(10.1); //注意两个toString方法都不相同
//String--->int,double
int a1=Integer.parseInt("123");
double a2=Double.parseDouble("123a"); //注意:运行报错(自己体会)
//String--->Integer
Integer i3=Integer.valueOf("123");
//Integer--->int
Integer i4=1;
int i5=i4.intValue();
//Integer--->String
Integer i6=1;
String s6=String.valueOf(i6);
String m6=Integer.toString(i6);
//练习:
Integer integer1 = 100;
Integer integer2 = 100;
System.out.println("integer1==integer2: " + (integer1 == integer2));// true 自动装箱的两个缓存中的 Integer对象的引用比较
Integer integer3 = 200;
Integer integer4 = 200;
System.out.println("integer3==integer4: " + (integer3 == integer4));// false 自动装箱的两个new Integer的引用比较
Integer integer5 = new Integer(100);
Integer integer6 = new Integer(100);
System.out.println("integer5==integer6: " + (integer5 == integer6)); // false 两个不同的Integer对象引用的比较
int int1 = 100;
System.out.println("integer1==int1: " + (integer1 == int1));// true Integer缓存对象拆箱后与int比较
int int2 = 200;
System.out.println("integer3==int2: " + (integer3 == int2));// true Integer对象拆箱后与int比较
/*解析:重点说明integer 1~4,
integer 1~2:-127-128已经被预先存放在常量池中等待调用,因此没有创建新对象
integer 3~4:其余数字,将在堆中new出新对象。*/
}
public static void m1(Object o){
}
}