-
包装类
为了能快速使用基本类型的数据,提供了基本类型对应的类(包装类)----创建出这些包装类的对象就能使用java提供的功能,便捷的操作基本类型的数据。
byte | short | char | int | long | float | double | boolean | void |
Byte | Short | Character | Integer | Long | Float | Double | Boolean | Void |
- Void
Void-----返回值一定是null
- 基本类型
由基本类型构建的包装类对象-----封箱
int i =5_424_455;
//创建Integer对象
//包装类对象由基本类型数据而来----封箱
Integer in = new Integer(i);
基本类型数据直接赋值给包装类对象-----自动封箱----jdk1.5新特性,底层依赖包装类.valueOf()生成包装类对象。
int i =5;
//基本类型数据直接赋值给包装类对象 ----自动封箱 -----jdk1.5新特性
//底层是由包装类.valueOf()把基本类型数据转成包装类的对象 Integer.valueOf(i)
Integer in =i;
System.out.println(in);
//封箱
System.out.println(new Character('a'));
包装类对象直接赋值给基本类型诗句-----自动拆箱----jdk1.5新特性,底层依赖包装类.xxxValue()生成基本类型数据。
//包装类对象
Integer in = new Integer(232);
//包装类对象直接赋值给基本类型数据-----自动拆箱
//底层依赖包装类对象调用xxxValue()生成基本类型数据 in.intValue() xxx---基本类型
int i = in;
System.out.println(i);
- Integer
public class IntegerDemo2 {
public static void main(String[] args) {
//底层Integer.valueOf()
//-128--127 一个共享范围,超过这个范围就每次返回一个新对象
Integer.valueOf(8);
Integer in1=127;
Integer in2=127;
System.out.println(in1==in2);//-128--127都为true 范围外为false
}
}
Byte,Short,Long共享范围都为-128--127
底层范围是0--127
- Character
public static Character valueOf(char c) {
if (c <= 127) { // must cache
return CharacterCache.cache[(int)c];
}
return new Character(c);
}
由上发现,整数类型有共享范围(-128~127),在这个范围之内不同对象给定相同的基本类型值,返回的是同一个数组的元素,超过这个范围每次返回的都是新对象
包装类对象和基本类型数据进行操作时,会进行自动拆箱。
包装类对象的哈希码值都是固定的。 (null 0)