Java包装类

包装类与基本数据类型

包装类:可以让基本数据类型获取跟对象一样的属性和特征,行使对象的相关权益
命名:大部分包装类的命名是它的基本类型的名称首字母大写(如float-Float,byte-Byte),但有两个特例,int对应的包装类Integer,以及char对应的包装类Character

包装类常用方法

包装类都是final修饰的,不能被继承。
所有的数值型包装类(Integer Byte Short Long Float Double )直接父类都是Number类;
字符型和布尔型(Character Boolean)直接父类为Object类;
每个包装类有很多方法,去甲骨文官网去看API

基本数据类型和包装类之间的转换

​ 1、每一种基本数据类型都应该有对应的对象类型,方便对基本类型进行操作。包装类型可以解决一些 基本类型解决不了的问题,如有时候需要传递一个Object变量 而你想传递int类型的进去显然不行, 这就要用到包装类。
​ 2、集合不允许存放基本类型数据,只能存放包装类型。

  1. 装箱:把基本数据类型转换成包装类
    (1)自动装箱:不用实例化,直接赋值;
    int t1=2;
    Integer t2=t1;
    (2)手动装箱:实例化,构造函数的方法
    int t1=2;
    Integer t3=new Integer(t1);
  2. 拆箱:把包装类转换成基本数据类型
    (1)自动拆箱:
    int t4=t2;
    (2)手动拆箱
    int t5=t2.intValue();

编程练习1

请按照编辑器中的注释,在对应的空白区域填写对应的代码,完成基本数据类型和包装类之间的转换。

程序运行参考效果图如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package me.feihong.wrap;

public class test {

public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义int类型变量,值为100
int score = 100;
// 创建Integer包装类对象,表示变量score1的值
Integer score1=score;

// 将Integer包装类转换为double类型
double score2=score1.doubleValue();

// 将Integer包装类转换为long类型
long score3=score1.longValue();

// 将Integer包装类转换为int类型
int score4=score1.intValue();

//打印输出
System.out.println("score对应的Integer类型结果为:"+score1);
System.out.println("score对应的double类型结果为:"+score2);
System.out.println("score对应的long类型结果为:"+score3);
System.out.println("重新由Integer转换为int类型的结果为:"+score4);

}

}

基本数据类型和字符串之间的转换

1
2
3
4
5
6
7
1. 基本数据类型转换为字符串:
int t1 = 2;
String t2 = Integer.toString(t1);
2. 字符串转化为基本数据类型
int t3 = Integer.parseInt(t2);
或者:
int t4 = Integer.valueOf(t2);

编程练习2

请按照编辑器中的注释,在对应的空白区域填写对应的代码,完成基本数据类型和包装类之间的转换。

程序运行参考效果图如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package me.feihong.wrap;

public class TestTwo {

public static void main(String[] args) {
// TODO Auto-generated method stub
double a = 12.5;
//将基本类型转换为字符串
String str1 =Double.toString(a)+10;
System.out.println("a 转换为String型后+10的结果为: "+str1);
String str = "2.8";
// 将字符串转换为基本类型
double b =Double.valueOf(str)+10;
System.out.println("str 转换为double型后+10的结果为: "+b);

}

}

需要知道的几点知识

1.包装类的默认值是null

在包装类当中实现自动拆装箱背后的秘密:
我们直接给包装类赋值实现自动装箱,实际上编译器是做了这些工作:
1.调用valueOf();方法,在这个方法执行时Java中提供了对象池,如果数据大小在-128–+127之间就可以装进这个池子(很明显这个是个8位缓存器)。
2.当你给包装类赋值时,它会在对象池里先查找存不存在这样的一个对象,如果有,就让现在这个对象也指向这个内存空间,直接产生
3.如果超出范围,或者池子里原来没有相同的对象,编译器就会new开辟一个空间

8种基本数据类型对应的包装类中,Double和Float不具备常量池概念。

编程练习3

请按照编辑器中的注释,在对应的空白区域填写对应的代码,完成基本数据类型和字符串之间的转换。

程序运行参考效果图如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package me.feihong.wrap;

public class TestTwo {

public static void main(String[] args) {
// TODO Auto-generated method stub
//定义float类型变量,赋值为88.99
float f1 = (float)88.99;
//将基本类型转换为字符串
String str1=Float.toString(f1)+20;
//打印输出
System.out.println("f1转换为String型后与整数20求和的结果为:"+str1);
//定义String类型变量,赋值为"188.55"
String str = "188.55";
// 将字符串转换为基本类型double
double t1=Double.valueOf(str)+20;
//打印输出
System.out.println("str转换为double型后与整数20的求和结果为:"+t1);

}

}
-------------本文结束感谢您的阅读-------------