Java – 包装类

简介

在Java中,一些数组类是不可以保存基础数据类型的,比如数组集合类 ArrayList,它的成员不允许是基础数据类型,所以要想把基础数据类型存入ArrayList中,就必须对基础数据类型先转为包装类。

 

包装类

包装类与基础数据类型的区别在于,基础数据类型存在于栈中,而对象数据都存在于堆中,ArrayList的数据只允许存储对象类型的地址值,因此,我们需要把基础数据类型的数据包装成对象,即数据不再存放在栈中,而是保存在堆中,ArrayList 就能成功保存基础数据类型的包装类。在JDK5以前,包装类需要使用 new 方法进行包装,且不允许包装类进行基础运算(因为它们是对象),如果需要直接运算,需要拆箱,即把包装类先转回基础数据类型,再进行基础运算,运算完后再进行重新装箱,这样就非常麻烦,在JDK5之后,Java提供了自动拆装箱功能,我们不需要 new 方法进行包装,也不需要拆箱运算再装箱,允许包装类直接进行运算。

 

包装类类型

基本类型 对应的包装类(位于java.lang包中)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

 

Integer类

包装一个对象中的原始类型 int 的值

方法

方法名 说明
public Integer(int value) 根据 int 值创建 Integer 对象(过时)
public Integer(String s) 根据 String 值创建 Integer 对象(过时)
public static Integer valueOf(int i) 返回表示指定的 int 值的 Integer 实例
public static Integer valueOf(String s) 返回保存指定String值的 Integer 对象
static string tobinarystring(int i) 得到二进制
static string tooctalstring(int i) 得到八进制
static string toHexstring(int i) 得到十六进制
static int parseInt(string s) 将字符串类型的整数转成int类型的整数

 

JDK5之前

//public Integer(int value):根据 int 值创建 Integer 对象(过时)
Integer i1 = new Integer(100);
System.out.println(i1);

//public Integer(String s):根据 String 值创建 Integer 对象(过时)
Integer i2 = new Integer("100");
//Integer i2 = new Integer("abc"); //NumberFormatException
System.out.println(i2);
System.out.println("--------");

//public static Integer valueOf(int i):返回表示指定的 int 值的 Integer 实例
Integer i3 = Integer.valueOf(100);
System.out.println(i3);

//public static Integer valueOf(String s):返回保存指定String值的Integer对象 
Integer i4 = Integer.valueOf("100");
System.out.println(i4);

 

/*
            public static string tobinarystring(int i) 得到二进制
            public static string tooctalstring(int i) 得到八进制
            public static string toHexstring(int i) 得到十六进制
            public static int parseInt(string s) 将字符串类型的整数转成int类型的整数
 */

//1.把整数转成二进制,十六进制
String str1 = Integer.toBinaryString(100);
System.out.println(str1);//1100100

//2.把整数转成八进制
String str2 = Integer.toOctalString(100);
System.out.println(str2);//144

//3.把整数转成十六进制
String str3 = Integer.toHexString(100);
System.out.println(str3);//64

//4.将字符串类型的整数转成int类型的整数
//强类型语言:每种数据在java中都有各自的数据类型
//在计算的时候,如果不是同一种数据类型,是无法直接计算的。
int i = Integer.parseInt("123");
System.out.println(i);
System.out.println(i + 1);//124
//细节1:
//在类型转换的时候,括号中的参数只能是数字不能是其他,否则代码会报错
//细节2:
//8种包装类当中,除了Character都有对应的parseXxx的方法,进行类型转换
String str = "true";
boolean b = Boolean.parseBoolean(str);
System.out.println(b);

 

JDK5之后-自动拆装箱

基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:

装箱:从基本类型转换为对应的包装类对象。

拆箱:从包装类对象转换为对应的基本类型。

 

包装对象

Integer i = new Integer(4);//使用构造函数函数
Integer iii = Integer.valueOf(4);//使用包装类中的valueOf方法

 

拆箱对象

int num = i.intValue();

 

由于我们经常要做基本类型与包装类之间的转换,从Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成。例如:

Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。

 

基本类型与字符串之间的转换

除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型:

public static byte parseByte(String s) :将字符串参数转换为对应的byte基本类型。
public static short parseShort(String s) :将字符串参数转换为对应的short基本类型。
public static int parseInt(String s ) :将字符串参数转换为对应的int基本类型。
public static long parseLong(String s) :将字符串参数转换为对应的long基本类型。
public static float parseFloat(String s) :将字符串参数转换为对应的float基本类型。
public static double parseDouble(String s) :将字符串参数转换为对应的double基本类型。
public static boolean parseBoolean(String s) :将字符串参数转换为对应的boolean基本类型。

 

方式一:先将字符串数字转成Integer,再调用valueOf()方法

String s = "100";
//方式1:String --- Integer --- int
Integer i = Integer.valueOf(s);
//public int intValue()
int x = i.intValue();
ystem.out.println(x);

方式二:通过Integer静态方法parseInt()进行转换

int y = Integer.parseInt(s);
System.out.println(y);

 

注意:如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出java.lang.NumberFormatException 异常。

 

预创建对象

获取Integer对象的时候不要自己new,而是采取直接赋值或者静态方法valueOf的方式

因为在实际开发中,-128~127之间的数据,用的比较多。如果每次使用都是new对象,那么太浪费内存了。

所以,Java 提前把这个范围之内的每一个数据都创建好对象,如果要用到了不会创建新的,而是返回已经创建好的对象。

Integer i6 = Integer.valueOf(127);
Integer i7 = Integer.valueOf(127);
System.out.println(i6 == i7);//true

Integer i8 = Integer.valueOf(128);
Integer i9 = Integer.valueOf(128);
System.out.println(i8 == i9);//false

 

如果您喜欢本站,点击这儿不花一分钱捐赠本站

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

THE END
分享
二维码
打赏
海报
Java – 包装类
简介 在Java中,一些数组类是不可以保存基础数据类型的,比如数组集合类 ArrayList,它的成员不允许是基础数据类型,所以要想把基础数据类型存入ArrayList中,就必须对基础数据类型先转为包装……
<<上一篇
下一篇>>