基本数据类型包装类
在开始分享今天的内容之前,我们需要知道:在实际程序使用中,程序界面上用户输入的数据都是以字符型进行存储的,但是我们知道,Java中有8种基本数据类型,而我们使用非字符类型的数据类型的频率也是相当高的,也就是说,程序开发种,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,而成绩需要转换成double类型等,这显然是非常麻烦的事情。不过,在Java中,为我们提供了相应的对象来解决该问题:基本数据类型对象包装类,即Java将基本数据类型封装成了对象。八种基本类型对应的包装类如下:
类型 | 英文 | 对应的包装类 |
---|---|---|
字节型 | byte | Byte |
短整型 | short | Short |
整型 | int | Integer |
长整型 | long | Long |
字符型 | char | Character |
布尔型 | boolean | Boolean |
浮点型 | float | Float |
浮点型 | double | Double |
考虑到基本数据类型包装类的用法大多数都是一致的关系,这里就选取Integer为例,分享基本数据类型包装类的用法。
基本数据类型封装类
将字符串转换成基本类型(parseXXX(String s))
parseXXX(String s);这里的XXX表示的是基本数据类型,参数为可以转换成基本数据类型的字符串。注:如果字符串无法转换成基本数据类型,将会发生数字转换的问题 NumberFormatException
例子1:
package demo;
public class IntegerDemo {
public static void main(String[] args) {
function();
}
/*
* Interger类中的静态方法parseInt(String s),返回基本数据类型
* 要求:字符串必须是数字格式的
*/
public static void function() {
int i = Integer.parseInt("16");
System.out.println(i/2);
}
}
这个例子中,把字符串"16"转换成了数字16,然后进行运算输出8,需要注意的是这里的"16"不能输入" 16"这类的非数字类型的字符串,否则会报错。
例子2:
package demo;
public class IntegerDemo {
public static void main(String[] args) {
function();
}
/*
* Interger类中的静态方法parseInt(String s,int radix)
*
*/
public static void function() {
int i = Integer.parseInt("110",2);
System.out.println(i);
}
}
上面这个例子中的方法是parseInt(String s)的重载方法,作用是把二进制转换成十进制,方法中的radix参数代表的是基数(进制),这里这个参数是可以换成八进制或者十六进制这些的,但是改变了radix后前面的String s 参数就必须符合相应的进制规则,比如radix = 2,String s = " 112",这里的String s 参数是不符合二进制的。
将基本数据类型转换为字符串的三种方法
(1)基本数据类型 + “”;
例子:
package demo;
public class IntegerDemo {
public static void main(String[] args) {
function();
}
public static void function() {
int i = 10;
String s = i +"";
System.out.println(i+1);
}
}
(2)Interger类中的静态方法toString();
例子:
package demo;
public class IntegerDemo {
public static void main(String[] args) {
function();
}
public static void function() {
int i = 10;
String s = Integer.toString(i);
System.out.println(s);
}
}
(3)Interger类中的静态方法toString(int a, int radix);
例子:
package demo;
public class IntegerDemo {
public static void main(String[] args) {
function();
}
public static void function() {
int i = 5;
String s = Integer.toString(i,2);
System.out.println(s);
}
}
例子2中的方法的的意思是把i转换成二进制的字符串,和上面parseInt(String s,index)方法的含义不同
Integer构造方法
例子:
package demo;
public class IntegerDemo {
public static void main(String[] args) {
function();
}
public static void function() {
Integer in = new Integer("100");
int i = in.intValue();
System.out.println(i);
}
}
这个例子的意思是调用Integer类的构造方法,将数字格式的字符出串,传递到Integer类的构造方法中,创建Integer类的对象,包装这个字符串,需要将这个字符串转成基本数据类型还需要调用inValue()方法;
Integer类中的其他方法
(1)两个静态成员变量
MAX_VALUE
MIN_VALUE
这两个变量表示该类型的最大和最小值,如果需要知道其余的基本类型的取值范围,只需要用相应的包装类调用就可以,比如long类型的是:Long.MAX_VALUE Long.MIN_VALUE
(2)静态方法toBinarString(int )
十进制转二进制
(3)静态方法toOctalString(int)
十进制转八进制
(4)静态方法toHexString(int)
十进制转十六进制
自动装箱和自动拆箱
自动装箱:基本数据类型直接变成对象
自动拆箱:对象中的数据变回基本数据类型
Integer in = 1;//自动装箱 相当于Integer in = new Integer(1);
in = in +1;//等号右边:将in对象转换成基本数值(自动拆箱)in.intValue() + 1;加法运算后,再次装箱,把基本数值转换成对象
自动装箱与拆箱的好处:节省代码,基本类型和引用类型可以直接计算,方便操作
自动装箱与拆箱的缺点:容易出现Integer in = null;的代码,会报空指针异常