包装类介绍

基本数据类型


 

  • Java语言提供了八种基本类型:
    • 六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型

在这里插入图片描述

  • 基本数据类型不具有对象特征,没有属性、方法、无法对象化交互

 
 

包装类


 

  • 通过包装类,可以让基本数据类型获取对象一样的特征,行使对象的相关权益
  • Java中的包装类包括:
    • Integer、Long、Short、Byte、Character、Double、Float、Boolean、BigInteger、BigDecimal
    • 其中 BigInteger、BigDecimal 没有相对应的基本类型,主要应用于高精度的运算
      • BigInteger 支持任意精度的整数
      • BigDecimal 支持任意精度带小数点的运算

 
 

基本数据类型与包装类型的异同


 

  • 在Java中,一切皆对象,但八大基本类型却不是对象
  • 声明方式的不同
    • 基本类型无需通过 new 关键字来创建
    • 包装类型需 new 关键字
  • 存储方式及位置不同
    • 基本类型是直接存储变量的值保存在栈中能高效的存取
    • 包装类型需要通过引用指向实例,具体的实例保存在堆中
  • 初始值的不同
    • 包装类型的初始值为 null
    • 基本类型的初始值视具体的类型而定,比如 int 类型的初始值为0,boolean 类型为 false
  • 使用方式的不同
    • 与集合类合作使用时只能使用包装类型

 
 

包装类常用方法


 

  • JAVA 是一种面向对象语言,JAVA 中的类把方法与数据连接在一起,构成了自包含式的处理单元
  • 在 JAVA 中不能定义基本类型(primitive type)对象,为了能将基本类型视为对象进行处理,并能连接相关的方法,JAVA 为每个基本类型都提供了包装类
  • 如:
    • int 型数值的包装类 Integer
    • boolean 型数值的包装类 Boolean 等
  • 这样便可以把这些基本类型转换为对象来处理了

  • Integer
    • Integer 类在对象中包装了一个基本类型 int 的值
    • 该类的对象包含一个 int 类型的字段。
    • 该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,同时还提供了处理 int 类型时非常有用的其他一些常量和方法
    • 构造方法:
      • int 型变量作为参数创建 Integer 对象,实例代码如下:
      • Integer number=new Integer(7);
      • 以 String 型变量作为参数创建 Integer 对象,实例代码如下:
      • Integer number=new Integer(“7”);
    • 常用方法:

在这里插入图片描述

  • 常用的常量:
    • MAX_VALUE: 表示 int 型可取的最大值
    • int maxint = Integer.MAX_VALUE;
    • MIN_VALUE: 表示 int 型可取的最小值
    • int minint = Integer.MIN_VALUE;
    • SIZE:表示以二进制补码形式表示 int 值的位数
    • int intsize = Integer.SIZE;
    • TYPE: 表示基本类型 Class 实例

  • Boolean
    • Boolean 类将基本类型为 boolean 的值包装在一个对象中
    • 一个 Boolean 类型的对象只包含一个类型为 boolean 的字段
    • 此类还为 boolean 和 String 的相互转换提供了许多方法,并提供了处理 boolean 时非常有用的其他一些常量和方法
    • 构造方法:
      • 创建一个表示 value 参数的 boolean 对象,实例如下:
      • Boolean b = new Boolean(true);
      • String 变量作为参数,创建 boolean 对象。此时,如果传入的字符串不为 null,且忽略大小写后的内容等于”true”,则生成 Boolean 对象值为 true,反之为 false
      • Boolean b1 = new Boolean("ok");
      • System.out.println(b1);
      • Boolean b2=new Boolean("TRUE");
      • System.out.println(b2);
    • 常用方法:

在这里插入图片描述

  • 常用的常量:
    • TRUE:对应基值 true 的 Boolean 对象
    • FALSR:对应基值 false 的 Boolean 对象
    • TYPE:表示基本类型 Class 实例

  • Byte
    • Byte 类将基本类型为 byte 的值包装在一个对象中
    • 一个 byte 类型的对象只包含一个类型为 byte 的对象
    • Byte 类提供了两种构造方法的重载形式来创建 BYTE 类对象:
      • Byte(byte value)
      • 通过这种方法创建的 byte 对象,可表示指定的 byte 值
      • 例:
        • byte mybyte=45;
        • Byte b = new Byte(mybyte);
      • Byte(String str)
      • 通过这种方法创建的 byte 对象,可表示 String 参数指定的 byte 值
      • 例:
        • Byte mybyte = new Byte("12")
    • 常用方法:

在这里插入图片描述

  • 常用的常量:
    • MIN_VALUE: 最小值
    • MAX_VALUE: 最大值
    • SIZE: 二进制
    • TYPE: 表示基本类型 byte 的 class 实例

  • Character
    • Character 类在对象中包装一个基本类型为 char 的值
    • 一个 Character 对象包含类型为 char 的单个字段
    • 构造方法:
      • Character(char value)
    • 构造方法:

在这里插入图片描述


  • Double/Float
    • Double 和 Float 包装类是对 double、float 基本类型的封装
    • 都是 Number 类的子类,又都是对小数进行操作,所以常用基本方法相同
    • Double 类在对象中包装一个基本类型为 double 的值,每个 double 类都包含一个 double 类型的字段
    • 构造方法:
      • Double(double value):
      • 基于 double 参数创建 Double 类对象
      • Double(String str)
      • 构造一个新分配的 Double 对象,表示用字符串表示的 Double 类型的浮点值
    • 常用方法:

在这里插入图片描述


  • Number
    • 抽象类 Number 是父类
    • Number 的子类必须提供将表示的数值转换成 byte/double/float/long/int/short 的方法
    • Number 类的方法被 Number 的各子类所实现
    • 常用方法:

在这里插入图片描述

 
 

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


 

  • 装箱:把基本数据类型转换成包装类
    • 自动装箱
    • 手动装箱
  • 拆箱:把包装类转换成基本数据类型
    • 自动拆箱
    • 手动拆箱
  • 案例:
public class HelloWorld {
    public static void main(String[] args) {
// 定义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("score对应的int类型结果为:"+score4);
         
    }
}

 
 

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


 

  • 基本数据类型转换为字符串
    • 使用包装类的 toString() 方法
  • 字符串转换为基本数据类型
    • 自动拆箱调用包装类的 parseXxx() 静态方法
    • 调用包装类的 valueOf() 方法转换为基本类型的包装类,自动拆箱
  • 案例:
public class StringUse {
    public static void main(String[] args) {
        double a = 12.5;
        //将基本类型转换为字符串
        String str1 = Double.toString(a);   
        System.out.println("a 转换为String型后+10的结果为: "+ (str1+10));             
        String str = "2.8";
        // 将字符串转换为基本类型
        //double b = Double.valueOf(str);
        double b = Double.parseDouble(str);
                System.out.println("str 转换为double型后+10的结果为: "+ (b+10)); 
    }
}

 
 

对象常量池


 

  • 案例:
public class WrapperTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Integer one=new Integer(100);
		Integer two=new Integer(100);
		System.out.println("one==two的结果:"+(one==two));//1
		
		Integer three=100;//自动装箱
		//Integer three=Integer.valueOf(100);
		System.out.println("three==100的结果:"+(three==100));//2 自动拆箱
		
		//Integer four=100;
		Integer four=Integer.valueOf(100);
		System.out.println("three==four的结果:"+(three==four));//3
		
		Integer five=200;
		System.out.println("five==200的结果:"+(five==200));//4
		
		Integer six=200;
		System.out.println("five==six的结果:"+(five==six));//5
		
		Double d1=Double.valueOf(100);
		System.out.println("d1==100的结果:"+(d1==100));
		
		Double d2=Double.valueOf(100);
		System.out.println("d1==d2的结果:"+(d1==d2));
	}

}
  • 当方法 valueOf() 在执行的过程中,如果传进来的参数范围大于等于 -128 且小于等于 127 时,会直接从对象池中查找是否存在这样一个对象
    • 如果有这样的一个对象,将会直接产生
    • 如果没有这样的一个对象,将会隐式调用 new 关键字,实例化一个对象
  • Java 中八种基本面数据类型及其对应包装类,除了 float 和 double,其他的都可以应用对象常量池概念

 
 

总结案例


 

public class HelloWorld {

    public static void main(String[] args) {

        //定义float类型变量,赋值为88.99

		float f1 =88.99f ;

		//将基本类型转换为字符串

		String s=Float.toString(f1)+20;                            

		//打印输出

		System.out.println("f1转换为String型后与整数20的求和结果为:"+s);

		//定义String类型变量,赋值为"188.55"

		String str ="188.55";

	    // 将字符串转换为基本类型double

		double d=Double.valueOf(str)+20;             

		//打印输出

		System.out.println("str转换为double型后与整数20的求和结果为:"+d);

	}

}

 
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值