Byte、Character、Boolean、Long、Short、Integer、Double、Float
这里拿Integer作举例说明,其他几种包装类类似。
为什么使用包装类?
某些方法的参数必须是对象,为了让基本数据类型的数据能作为参数,提供了包装类!
包装类可以提供更多的功能 Integer.MAX_VALUE
可以实现字符串和基本类型之间的转换
如:int i = Integer.parseInt("12");
double d = Double.parseDouble("33.5");
缺点:包装类的对象需要占用栈内存和堆内存,而基本数据类型只占用栈内存
自动装箱和自动拆箱
Integer i = new Integer(100); //手动装箱
Integer i2 = 40; //自动装箱
int i3 = i.intValue(); //手动拆箱
int i4 = i2; //自动拆箱
Integer i5 = 5;
Integer i6 = 5;
System.out.println(i5.equals(i6)); //true
System.out.println(i5==i6); //true
Integer i5 = 5000;
Integer i6 = 5000;
System.out.println(i5.equals(i6)); //true
System.out.println(i5==i6); //flase
这是由于自动装箱时,会调用Integer的valueOf()方法,该方法中的代码功能,当i5>127时,Integer i5 = 5000实际上会new一个对象,即相当于Integer i5 = new Integer(5000),所以i5==i6比较的是对象引用。
原文:https://www.cnblogs.com/lrc778/p/14811576.html