包装类
基本数据类型,使用起来非常方便,但是没有对应的方法来操作这些基本数据类型的数据
可以使用一个类,把基本类型的数据装起来,在类中定义一些方法,这个类叫做包装类,我们呢可以调用类当中的方法来操作这些基本类型的数据
包装类有8种,包装类位于 java.lang.
文件下
基本类型 | 对应的包装类(位于java.lang包中) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
1.装箱与拆箱
1.1装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)
1.1.1构造方法:
- Integer(int value) 构造一个新分配的Integer对象,他表示指定的int值。
- Integer(String s) 构造一个新分配的Integer对象,他表示String参数所指示的int值。传递的字符串必须是基本类型的字符串,否则会出现抛出异常 例:“100”正确,“a"抛出异常
1.1.2静态方法:
-
static Integer valueOf(int i)返回一个表示指定的int值得Integer实例
-
static Integer valueOf(String s)返回保存指定的String的值得Integer对象
1.2 拆箱:在包装类中取出基本数据类型的数据(包装类->基本数据类型)
1.2.1成员方法:
-
int intValue() 以int类型返回该 Integer的值
package package17BaoZhuanggLei.Demo01;
/*
* 装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)
* 构造方法:
* Integer(int value) 构造一个新分配的Integer对象,他表示指定的int值。
* Integer(String s) 构造一个新分配的Integer对象,他表示String参数所指示的int值。
* 传递的字符串必须是基本类型的字符串,否则会出现抛出异常 例:“100”正确,“a"抛出异常
*
* 静态方法:
* static Integer valueOf(int i)返回一个表示指定的int值得Integer实例
* static Integer valueOf(String s)返回保存指定的String的值得Integer对象
* 拆箱:在包装类中取出基本数据类型的数据(包装类->基本数据类型)
* 成员方法:
* int intValue() 以int类型返回该 Integer的值
* */
public class Demo01Integer {
public static void main(String[] args) {
//装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)
//构造方法
Integer in1 = new Integer(1);
System.out.println(in1);//重写了toString()方法
Integer in2 = new Integer("2");
System.out.println(in2);
//静态方法:
Integer in3 = Integer.valueOf(1);
System.out.println(in3);
// Integer in4 = Integer.valueOf("a");//NumberFormatException数字格式化错误
Integer in4 = Integer.valueOf("2");
System.out.println(in4);
//拆箱:在包装类中取出基本数据类型的数据(包装类->基本数据类型)
int i = in1.intValue();
System.out.println(i);
}
}
2.自动拆箱与装箱
自动拆箱与自动装箱:基本类型的数据和包装类之间可以互相转换,jdk1.5之后出现的新特性
package package17BaoZhuanggLei.Demo01;
import java.util.ArrayList;
/*
* 自动拆箱与自动装箱:基本类型的数据和包装类之间可以互相转换
* jdk1.5之后出现的新特性
* */
public class Demo02Integer {
public static void main(String[] args) {
/*
* 自动装箱:直接把int类型的整数赋值给包装类
* Integer in = 1; 就相当于Integer in = new Integer(1);
* */
Integer in = 1;
/*
* 自动拆箱:in 是包装类,无法直接参与运算,可以自动转换为基本数据雷兴国,在进行计算
* in+2;相当于in.intValue()+2
* in = in.inValue()+2 = 3;又是一个自动装箱
* */
in = in+2;
ArrayList<Integer> list = new ArrayList<>();
/*
* ArrayList集合无法直接存储整数,可以存储Integer包装类
* */
list.add(1);//-->隐含了一个自动装箱,list.add(new Integer(1));
Integer a = list.get(0);//-->隐含了一个自动拆箱,list.get(o).intValue();
}
}
3.基本类型与字符串之间的相互转换
3.1基本类型–>字符串(String)
基本类型的值+""
,最简单的方法(工作常用)
包装类的静态方法toString(参数)不是Osbject类的toString() 重载关系
- static String toString(int i) 返回一个表示指定整数的String对象
String类的静态方法valueOf(参数)
- static String valueOf(int i) 返回int(与参数的类型有关)参数的字符串表示形式
3.2字符串(String)–>基本类型
使用包装类的静态方法parseXXX(“字符串”)
-
Integer类: static int parseInt(String s)
-
Double类: static double parseDouble(String s)
package package17BaoZhuanggLei.Demo01;
/*
* 基本类型与字符串类型的相互转换
* 基本类型-->字符串(String)
* 1.基本类型的值+"",最简单的方法(工作常用)
* 2.包装类的静态方法toString(参数)不是Object类的toString() 重载关系
* static String toString(int i) 返回一个表示指定整数的String对象
* 3.String类的静态方法valueOf(参数)
* static String valueOf(int i) 返回int(与参数的类型有关)参数的字符串表示形式
* 字符串(String)-->基本类型
* 使用包装类的静态方法parseXXX("字符串")
* Integer类: static int parseInt(String s)
* Double类: static double parseDouble(String s)
* */
public class Demo03Integer {
public static void main(String[] args) {
//基本类型-->字符串(String)
int i1 = 100;
String s1 = i1 + "";
System.out.println(s1 + 200);//100200:字符串拼接
String s2 = Integer.toString(100);
System.out.println(s2+200);
String s3 = String.valueOf(100);
System.out.println(s3);
//字符串(String)-->基本类型
int i = Integer.parseInt(s1);
System.out.println(i-10);
/*int a = Integer.parseInt("a");//NumberFormatException数据格式转换错误
System.out.println(a);*/
}
}