概述
一、引言
8种基本数据类型并不是面向对象的,因为他们不是属于类,所以只能对他们做一些简单的操作,如果面对复杂的操作,比如用户都是以字符串形式输入的,如果将年龄转成int类型、考试成绩转成double类型,实现字符串与基本数据类型之间的转换会很不方便。为了解决这个问题,java设计出了基本数据类型对象包装类:将基本数据类型封装成对象。
二、8种基本数据类型对应的包装类
字节型 | 短整型 | 整型 | 长整型 | 字符型 | 布尔型 | 单精度浮点型 | 双精度浮点型 |
byte | short | int | long | char | boolean | float | double |
Byte | Short | Integer | Long | Character | Boolean | Float | Double |
三、java.lang.Number——>java.lang.Object
抽象类Number是BigDecimal、BigInterger、Byte、Double、Float、Integer、Long、Short类的超类。
Number的子类必须提供将表述的数值转换为byte、double、float、int、long、short的方法。
包含以下方法:
byte byteValue() | 以byte形式返回指定的数值 |
short shortValue() | 以short形式返回指定的数值 |
abstract int intValue() | 以int形式返回指定的数值 |
abstract long longValue() | 以long形式返回指定的数值 |
abstract float floatValue() | 以float形式返回指定的数值 |
abstract double doubleValue() | 以double形式返回指定的数值 |
四、java.lang.Boolean——>java.lang.Object
Boolean类将基本类型为boolean的值包装在一个对象中。一个Boolean类型的对象只包含一个类型为boolean的字段。
五、将字符串转成基本类型
static byte parseByte(String s) | 将string参数解析为有符号的十进制byte |
static short parseShort(String s) | 将String参数解析为有符号的十进制short |
static int parseInt(String s) | 将String参数解析为有符号的十进制int |
static long parseLong(String s) | 将String参数解析为有符号的十进制 |
static float parseFloat(String s) | 将String参数解析为float类型 |
static double parseDouble(String s) | 将String参数解析为double类型 |
static Boolean parseBoolean(String s) | 将String参数解析为boolean值 |
如果字符串无法转成基本类型,将会发生数字转换问题:NumberFormatException。
六、包装类,封装基本数据类型,提供大量方法,以Integer类为例
1. 将数字类型的字符串转成int型数字:
Demo:
结果:
需要注意的是:字符串必须是数字格式的,如下Demo,数字110前加了个空格:
结果:
2. 将基本类型int变成字符串
方法一:后面加个“”空字符串
方法二:String的valueOf()方法
方法三:使用int的包装类Integer,在Integer里面用他的toString方法
# 注意:
以上三种方法有效率之间的差异,下面通过一个Demo验证一下:
结果:
由上可以看出,方法一耗时较长,虽然写起来比较简单,但是不建议使用这种降低性能的方法。
方法一耗时较长是因为本质上java会调用StringBuilder或StringBuffer进行拼接实现String化。类似于:
而方法二的执行过程是:
String.valueOf(a)->Integer.toString(a)->IntegralToString.intToString(a)->convertInt(null,a)
方法三的执行过程是:
Integer.toString(a)->IntegralToString.intToString(a)->convertInt(null,a)
综上,推荐使用【Integer.toString(a);】这种方式将基本类型int变成字符串。
# 拓展
重载parseInt()方法:parseInt(String str, int i)。
结果:
以上方法表示:将2进制的字符串形式的“110”转成10进制的int类型。
还要注意一点:前面的String要与后面的进制匹配,要不也会报NumberFormatException异常。比如parseInt(222, 2),就不合适,因为222不是二进制的。
i取值:0-9A-Z 36进制
重载Integer.toString(int i, int j)方法:
结果:
1100
以上方法表示将int类型的12以2进制转换成String类型的“1100”。
3. Integer类构造器
① Integer(intvalue)
② Integer(Strings):将数字格式的字符串传递到Integer类的构造器中,转成Integer类型。
注:Integer类方法intValue(),将Integer(String s)包装后的对象转成基本类型int。引用类型不能进行基本类型运算。
Demo:
4. Integer类的两个静态成员变量和三个静态方法
① 两个静态成员变量
MAX_VALUE 表示int类型能够表示的最大值
MIN_VALUE 表示int类型能够表示的最小值
调用方法:Integer.MAX_VALUE
同理,可以改成Byte、Short、Long、Float、Double。如果使用Character,需要强转一下:
(int)Character.MAX_VALUE,结果为65535
② 三个静态方法
十进制转二进制 String toBinaryString(inti)
十进制转八进制 String toOctalString(int i)
十进制转十六进制 String toHexString(int i)
调用方法:Integer.toBinaryString(100);
七、自动装箱和自动拆箱
① 自动装箱:基本类型直接变成对象;
自动拆箱:对象直接变成基本类型。
② JDK1.5之后的特性,可以直接:
而不用非要:
并且可以直接将引用类型整数与基本类型整数一起运算:
而不用:
③ 好处:基本数据和引用类型可以直接运算
最后
以上就是正直鸡翅为你收集整理的Java常用API—包装类的全部内容,希望文章能够帮你解决Java常用API—包装类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复