我们知道,JAVA中的数据类型分为基本数据类型和引用数据类型,而相比基本数据类型,引用数据类型的功能更加强大,更加便捷。
而且,JAVA号称完全面向对象语言,所以,JAVA中的基本数据类型也有自己相应的类,功能更加强大,便捷。而这些,就叫做基本数据类型的包装类。
包装类
- 基本类型有八种,都是非常简单的数据类型,不能创建对象
- 在这些基本数据类型中,只能表示非常简单的数据,不能包含一些数据的操作,没有办法存储描述这些数据的内容。需要一个引用数据类型对将基本数据类型进行包装,提供一些操作基本数据的方法,定义一些描述数据的操作。
基本数据类型的包装类
- byte Byte
- short Short
- int Integer
- long Long
- float Float
- double Double
- char Character
- boolean Boolean
因为这些包装类的方法众多,不可能一一演示,所以选出最常用的Integer类来进行介绍。其他的通过类比和API文档,也都可以很容易的理解。
Integer类
第一步,打开API搜索Integer..
第二步,查看常量:
代码示例:
public class IInteger {
public static void main(String[] args) {
//表示一个int值在内存中占多少字节数
System.out.println(Integer.BYTES);
//表示int类型最大能表示多大的值
System.out.println(Integer.MAX_VALUE);
//表示int类型最小能表示多小的值
System.out.println(Integer.MIN_VALUE);
//表示int值最多能有多少位,比如100是到百位一共三位。
System.out.println(Integer.SIZE);
//表示Integer类型的源类型是什么:int类型
System.out.println(Integer.TYPE);
}
}
输出结果:
4
2147483647
-2147483648
32
int
第三步查看构造方法:
代码示例:
public class IInteger {
public static void main(String[] args) {
//直接用int类型的常量或者变量赋值
Integer i = new Integer(30);
System.out.println(i);
int ii = 33;
Integer iii = new Integer(ii);
System.out.println(iii);
//用全是数字的字符串来进行赋值。相当于String转化为Integer的一种形式。
Integer j = new Integer("23324");
System.out.println(j);
}
}
输出结果:
30
33
23324
第四步查看成员方法:
。。。。。。。太多了,截取不完。抽出其中比较常用的演示一下。
public class IInteger {
public static void main(String[] args) {
//compare方法,如果前面的大返回1,如果后面的大返回-1,相等则返回0
System.out.println(Integer.compare(45, 40));
//compareTo方法,如果调用者大返回1,如果参数大返回-1,相等则返回0
Integer a = new Integer(40);
Integer b = new Integer(30);
System.out.println(a.compareTo(b));
//compareUnsigned方法,忽略符号:如果前面的大返回1,如果后面的大返回-1,相等则返回0
System.out.println(Integer.compareUnsigned(-90, 80));
//decode方法,和构造方法类似,将字符串类型转化为Integer类型
System.out.println(Integer.decode("1232323"));
//doubleValue方法,进行Integer类型和基本数据类型double的转化,与此类似的还有byteValue、shortValue、intValue、floatValue、longValue
Integer c = new Integer(40);
System.out.println(c.doubleValue());
//hashCode方法,在Object类中应该是获取对象内存地址的10进制编码,这里重写之后,直接输出调用者的int值
System.out.println(c.hashCode());
//max、min方法,返回其中的较大值或者较小值
System.out.println(Integer.max(40, 30));
System.out.println(Integer.min(30, 39));
//parseInt方法,把字符串转化为带符号的int型数值
System.out.println(Integer.parseInt("-23242"));
//分别为将int型数据转化为相应的2进制、十六进制、八进制的字符串形式
System.out.println(Integer.toBinaryString(20));
System.out.println(Integer.toHexString(220));
System.out.println(Integer.toOctalString(3333));
//将int型基础数据类型和字符串转化为Integer型
System.out.println(Integer.valueOf(300));
System.out.println(Integer.valueOf("123232"));
}
}
输出结果:
1
1
1
1232323
40.0
40
40
30
-23242
10100
dc
6405
300
123232
Integer、int、String类型互相转换总结
Integer转成int类型: intValue()
int转成Integer类型: 构造方法
valueOf()
Integer转String类型: toString()
String转Integer类型: 构造方法
valueOf()
int转成String: 拼接成一个空串
String Integer.toString(int i)
String转成int类型 Integer.parseInt(String str);
自动装箱和拆箱
在JDK1.5以后,JAVA加入了新特性,就是自动装箱和拆箱,其实意思就是:我们的包装类和所对应的基本数据类型可以互通。
- 装箱:将基本数据类型进行包装变成引用数据类型
- 拆箱:将引用数据类型变成基本数据类型。
- 自动
代码示例:
public class 自动装箱和拆箱 {
public static void main(String[] args) {
Integer i = 30; //不用构造方法,自动装箱 如果是字符串还是要用的
int j = 50;
int k = i + j;//自动拆箱,可以直接和int型变量互相加减
System.out.println(k);
}
}
结果输出:
80