包装类
包装类概念
- 包装类
基本数据类型,使用起来非常方便,但是没有对应的方法来操作这些基本类型的数据,可以使用一个类,把基本类型的数据装起来,在类中定义一些方法,这个类叫做包装类,我们可以使用类中方法来操作这些基本类型的数据
- Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:
基本类型 | 对应的包装类(位于java.lang 包中) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
装箱与拆箱
- 装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)
- 构造方法:
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
的值。
演示
package com.idayuanshuai.www.Demo6;
public class IntegerClassDemo1 {
public static void main(String[] args) {
demo1();
}
public static void demo1(){
// 基本类型转化为包装类
Integer integer = Integer.valueOf("100");
System.out.println(integer);
Integer integer1 = Integer.valueOf(20);
System.out.println(integer1);
// 报装类变为基本类型
int i = integer1.intValue();
System.out.println(i);
}
}
- 输出结果
100
20
20
自动拆箱与自动装箱
-
基本类型与包装类之间可以自动相互转换
-
jdk1.5
之后出现的新特性
演示
- 主类
package com.idayuanshuai.www.Demo6;
import java.util.ArrayList;
import java.util.Date;
public class IntegerClassDemo2 {
public static void main(String[] args) {
Demo();
}
public static void Demo(){
// 基本类型自动转化为 包装类
Integer in = 3;
System.out.println(in);
// in先拆箱为基本类型 int 与 4 相加得7 然后再装箱为integer
in = in + 4;
System.out.println(in);
ArrayList<Integer> list = new ArrayList<>();
// 将基本类型23转化为integer类型装入list里面
list.add(23);
System.out.println(list.get(0));
}
}
- 输出结果
3
7
23
基本类型与字符串类型之间转换
- 基本类型与字符串类型之间的相互转换
- 基本类型->字符串
(String)
- 基本类型的值+"" 最简单的方法(工作中常用)
- 包装类的静态方法
toString
(参数),不是Object
类的toString()
,是重载方法static String toString(int i)
返回一个表示指定整数的 String 对象。
String
类的静态方法valueOf(参数)
static String valueOf(int i)
返回int
参数的字符串表示形式。
- 字符串
(String)
->基本类型- 使用包装类的静态方法
parseXXX("字符串")
; Integer
类:static int parseInt(String s)
Double
类:static double parseDouble(String s)
- 使用包装类的静态方法
演示
- 主类
package com.idayuanshuai.www.Demo6;
public class IntegerClassDemo3 {
public static void main(String[] args) {
demo();
}
public static void demo(){
// 数字类型转化为字符串
int n =40;
String s1 = n + "";
// 验证是否为字符类型
System.out.println(s1+1234);
String s = Integer.toString(100);
// 验证是否为字符类型
System.out.println(s+23);
String s2 = String.valueOf(100);
// 验证是否为字符类型
System.out.println(s2+34);
// 字符串类型转化为数字类型
int i = Integer.parseInt(s1);
System.out.println(i +10);
double aDouble = Double.parseDouble(s2);
System.out.println(aDouble+100);
}
}
- 输出结果
401234
10023
10034
50
200.0