共计 903 个字符,预计需要花费 3 分钟才能阅读完成。
1. 有了根本数据类型,为什么还须要包装类型
1.1 有些场合不适宜应用根本类型。比方汇合能承受的类型为 Object, 泛型中也必须应用包装类。比方要定义一个分数。分数为空示意没参加考试。根本类型就不适合了,根本类型默认值为 0,而包装类型 Integer 类型默认为空。1.2 包装类型是一个援用类型,是一个类,有属性和办法。比方想把 String 类型的数据转换为整型,``
String num1="123";
int num2=Integer.parseInt(num1);
parseInt 是 Integer 包装类型提供的一个把字符串转换成 int 类型的办法。1.3 包装类还有一个重要个性:数据缓存
还是拿 Integer 来举例,在 -128~127 区间的数会被缓存,当类加载的时候就创立这 256 个数对应的对象,并放到名为 cache 的数组中,调用 valueOf() 办法时会先判断该数是否在 -128~127 的区间,如果在则间接获取数组中该对象的援用,如果不在则创立该对象
在主动装箱的时候调用的就是 valueOf 办法。咱们来看上面这段代码:public static void main(String[] args) {
Integer num1 = 4;
Integer num2 = 4;
System.out.println(num1==num2); //true
Integer num1 = 4,这里产生了主动装箱,调用了 ValueOf() 办法,因为 4 在 -128~127 之间所以 num1 和 num2 都指向了缓存中的同一地址,所以用 == 比拟和 equls 比拟返回的都是 true.
System.out.println(num1.equals(num2)); //true
Integer num3 = 145;
Integer num4 = 145;
System.out.println(num3==num4);//false 因为 145 不在 -128---127 区间内
System.out.println(num3.equals(num4));}//true
因为 145 不在这个范畴区间,所以会在堆中生成对象 num3 和 num4 别离指向两个不同地址的对象
pojo 类中用包装类型,定义局部变量用根本类型
正文完