基本数据类型和包装类
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
基本数据类型和对应的包装类类型是两种不同的类型,包装类更体现面向对象的思想,也保护了该类型的操作方法,拿Integer和int来说,Integer可以表示0和null两种状态,而int只能表示0.
包装类的常量和构造器
- 常量
Boolean的:Boolean.FALSE和Boolean.TRUE
其他包装类的:MAX_VALUE和MIN_VALUE以及SIZE
- 构造器
所有包装类都可以使用其本身对应的基本数据类型数据作为参数.
除了Character外,所有包装类都可以使用String数据作为参数.
public static void main(String[] args){
Integer i1 = new Integer(123);
Integer i1 = new Integer("123");
Character c = new Character('A');
Integer i1 = new Integer("123A");//有异常
}
包装类的常用方法
除了继承自Object和部分继承Number类的方法外。
所有包装类都有public static Xxx valueOf(xx str)方法,可以把String(Character用'A')转成包装类对象
public static void main(String[] args){
Integer i1 = Integer.valueOf("123");
Boolean b = Boolean.valueOf("true");
Character c = Character.valueOf('A');
}
包装类的valueOf方法里都调用了对应的构造器,在开发中一般使用valueOf方法。这样可以少new一次对象。
除了Character之外,所有包装类都能把String转成其对应的基本数据类型
public static void main(String[] args){
int i = Integer.parseInt("123");
boolean b = Boolean.parseBoolean("false");
}
Integer类
- public static String toBinaryString(int i):把i值转成二进制形式的字符串.
- public static String toHexString(int i):把i值转成十六进制形式的字符串.
- public static String toOctalString(int i):把i值转成八进制形式的字符串.
自动/手动装箱和自动/手动拆箱
- 手动装箱:把基本数据类型转成对应的包装类对象
Integer i1 = new Integer(123);
Integer i2 = Integer.valueOf(123);//推荐
- 手动拆箱:把包装类对象转成对应的基本数据类型数据
Integer i1 = Integer.valueOf(123);
int i2 = i1.intValue();
- 自动拆箱/装箱(Java5开始)
Integer i1 = 123;
int i2 = i1;
包装对象的值缓存
- Integer、Byte、Short、Integer、Long:缓存[-128,127]区间的数据
- Character:缓存[0,127]间的数据
- 对于包装类型的值比较,一般使用拆箱后的简单值做==比较
包装对象和基本数据类型的区别
- 包装类型是基本类型的一种对象的表示方式,在包装类中其实都持有一个对应基本类型变量来保存值,还提供了一些常用的方法
- 存储的数据的内存区域不一样,基本数据类型值存在栈内存,而对象都存在堆内存
- Java的集合框架里存储的只能是对象,不能是基本数据类型
- 包装类对象不仅可以表示一个对应的基本类型的值,还能表示null,此时刚好能描述一种“空”的状态
- float和double可以接收整数,但是Float和Double不行。