包装类概述、装箱与拆箱
文章目录
- 包装类
- 概述
- 装箱与拆箱
- 装箱
- 拆箱
- 自动装箱与自动拆箱
- 基本类型与字符串类型之间的相互转换
包装类
概述
基本数据类型使用方便,但是没有对应的方法来使用这些数据,因此我们可以使用一个类,把基本数据类型包装起来,这个类就叫做“包装类”。在包装类中可以定义一些基本的方法,来操作基本类型的数据。
| 基本数据类型 | 对应的包装类(java.lang包) |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
装箱与拆箱
装箱:从基本类型转换为包装类对象
拆箱:从包装类对象转换为对应的基本类型
以Integer类为例:
装箱
构造方法: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);//1 重写了toString方法Integer in2 = new Integer("1");System.out.println(in2);//1//静态方法Integer in3 = Integer.valueOf(1);System.out.println(in3);//Integer in4 = Integer.valueOf("a");//NumberFormatException数字格式化异常Integer in4 = Integer.valueOf("1");System.out.println(in4);//拆箱:在包装类中取出基本类型的数据(包装类->基本类型的数据)int i = in1.intValue();System.out.println(i);}
}
自动装箱与自动拆箱
概念:基本类型的数据和包装类之间可以自动的相互转换
(JDK1.5之后出现的新特性)
-
自动装箱: 直接把int类型的整数赋值包装类
Integer in = 1; 就相当于 Integer in = new Integer(1); -
自动拆箱:in是包装类,无法直接参与运算,可以自动转换为基本数据类型,在进行计算
in+2;就相当于 in.intVale() + 2 = 3
in = in.intVale() + 2 = 3 又是一个自动装箱 -
ArrayList集合无法直接存储整数,可以存储Integer包装类
ArrayList<Integer> list = new ArrayList<>();list.add(1); //-->自动装箱 list.add(new Integer(1));int a = list.get(0); //-->自动拆箱 list.get(0).intValue();
基本类型与字符串类型之间的相互转换
基本类型->字符串(String)
-
1.基本类型的值+"" 最简单的方法(工作中常用)
-
2.包装类的静态方法toString(参数),不是Object类的toString() 重载
static String toString(int i) 返回一个表示指定整数的 String 对象。 -
3.String类的静态方法valueOf(参数)
static String valueOf(int i) 返回 int 参数的字符串表示形式。
int i1 = 100;String s1 = i1+"";System.out.println(s1+200);//100200String s2 = Integer.toString(100);System.out.println(s2+200);//100200String s3 = String.valueOf(100);System.out.println(s3+200);//100200
字符串(String)->基本类型
使用包装类的静态方法parseXXX(“字符串”);
Integer类: static int parseInt(String s)
Double类: static double parseDouble(String s)
int i = Integer.parseInt(s1);System.out.println(i-10);int a = Integer.parseInt("a");//报错NumberFormatExceptionSystem.out.println(a);
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
