这一节我们来介绍一下包装类。
包装类:
什么是包装类,java为什么要提供包装类。
因为java编程的特点是面向对象的,而基本数据类型不能实现这一功能,使得程序开发存在一定的弊端。虽然java可以处理基本数据类型,但是有些情况下是需要作为对象来处理,这时候就需要转换成包装类了。
数据类型与对象之间转换:
数据类型并不是一个对象,它在内存中存储的方式不同。我们无法像操作一个对象来操作数据类型,比如我们无法计算一个整型的哈希值。这样就导致程序中有很多的比较运算无法进行下去了。解决这种问题最好的方式就是将数据类型封装到一个类中,然后再创建这个类的对象。而封装数据类型的这个类就是包装类。
包装类及其对应的基本数据类型:
左边是类名,右边对应的是基本数据类型
包装类使用方法大致一致,本节以Integer类来介绍:
Integer类:
Integer类用于封装int类型数据,它的构造方法如下:
Integer(int number)
Integer(String str)
我们可以用int型的数字作为参数,也可以用String字符串来作为参数,然后创建一个等于参数字面值的一个Integer对象。
包装类提供了更多强大的功能,如下:
//常量
MIN_VALUE //最小值
MAX_VALUE //最大值
SIZE //比特长度
TYPE //类型
//提供的几个方法
parseInt() //转换为int值
toString() //返回Integer对象的字符串表现形式
toBinargString() //二进制
toHexString() //十六进制
toDctalString() //八进制
这里有四个常量,也就是前四个,分别是int类型的最小值,最大值,比特长度(多少位),类型(返回了int是哪一种类型)。
然后又列出了几种方法,分别是字符串转换为int值,返回Integer对象的字符串表现形式,返回二进制,返回十六进制,返回八进制。
首先我们来看一下Integer四个常量是什么样子的。
import static java.lang.System.out;
/**
* 演示类
* @author Lrn
*/
public class Demo {
public static void main(String[] args) {
out.println("int类型的最大值为:"+Integer.MAX_VALUE);
out.println("int类型的最小值为:"+Integer.MIN_VALUE);
out.println("int类型的长度:"+Integer.SIZE);
out.println("int类型的类型:"+Integer.TYPE);
}
}
运行结果:
int类型的最大值为:2147483647
int类型的最小值为:-2147483648
int类型的长度:32
int类型的类型:int
我们演示完这四个常量后,我们来看一下如何创建Integer对象
import static java.lang.System.out;
/**
* 演示类
* @author Lrn
*/
public class Demo {
public static void main(String[] args) {
//使用构造方法来创建
Integer integer1 = new Integer(123);
out.println(integer1);
out.println("--------分割线--------");
//使用构造方法的字符串参数创建
Integer integer2 = new Integer("123456789");
out.println(integer2);
out.println("--------分割线--------");
//另一种创建Integer对象的方式
Integer integer3 = Integer.valueOf(123);
Integer integer4 = Integer.valueOf("123456789");
out.println(integer3);
out.println(integer4);
out.println("--------分割线--------");
//将字符串转换为int值并运算
int num1 = Integer.parseInt("876");
out.println(num1+2);
int num2 = integer2 - 10;
out.println(num2);
out.println("--------分割线--------");
//将数字转换为其他进制数字,保存的结果需要在一个字符串当中
String str1 = Integer.toBinaryString(11); //十进制转换为二进制
out.println("11的二进制表示为:"+str1);
String str2 = Integer.toHexString(11); //十进制转换为十六进制
out.println("11的十六进制表示为:"+str2);
String str3 = Integer.toOctalString(11); //10进制转换为八进制
out.println("11的八进制表示为:"+str3);
//以上为Integer提供的转换进制的方法,我们也可以自定义转换
String str4 = Integer.toString(11,15); //第一个参数为需要转换的十进制数字,第二个参数为需要转换成几进制,这里为15进制
out.println("11的十五进制表示为:"+str4);
}
}
运行结果:
123
--------分割线--------
123456789
--------分割线--------
123
123456789
--------分割线--------
878
123456779
--------分割线--------
11的二进制表示为:1011
11的十六进制表示为:b
11的八进制表示为:13
11的十五进制表示为:b