包装类
包装类的来源:
-
java讲究"万物皆对象",
-
但是八大基本类型却不能.出任何东西
-
官方为了自圆其说,就给这八大基本类型,创建了对应的引用类型(包装类)
自动拆箱和装箱
- 1.5以后官方在底层自动做了"拆箱(引用变基本)"和"装箱(基本变引用)"
- 也就是从堆内存数据变成栈内存数据,和从栈内存数据变成堆内存数据
- 可以通过反编译看到底层还是调用了intValue()和valueOf()方法
原先的
反编译后,可以看到调用了intValue()方法
数据型的包装类实现了总父类Number的数据转换方法
package com.li.changGe.commonlyusedClass;
public class PackageClass {
public static void main(String[] args) {
int ints = new Integer("120");
Integer integer = ints;
//-------------------------------------------------
/**
* 数据型的包装类实现了总父类Number的数据转换方法
*/
ints = Integer.valueOf(integer);
ints = integer.intValue();
System.out.println(integer+"-"+ints);//120-120
//------------------------------------------------
ints = Integer.parseInt("200");
/**
* toString有很多进制的重载方法
*/
String s = Integer.toString(ints, 16);//转换成16进制
System.out.println(s);//200 --> c8
/**
* 字符串变成包装类时,遇到boolean类型,
* 除了"true"外都是false
*/
boolean result = Boolean.parseBoolean("truee");
System.out.println(result);//false
//---------------------------------------------------------------
/**
* 包装类底层默认有一个存储了-128~127的数组,
* 构建对象时会优先从这里面拿数据,超出了再new 新对象
*/
Integer integer1 = 120;
System.out.println(integer == integer1);//true
integer = 128;
integer1 = 128;
System.out.println(integer == integer1);//false
}
}
包装类底层默认有一个存储了-128~127的数组
构建对象时会优先从这里面拿数据,超出了再new 新对象
low和high的范围是从-128~127
创建了一个cache数组,存储了-128~127共256个对象