包装类概述

  1. 什么是包装类?
    1. 基本数据类型所对应的引用数据类型。
    2. 0bject可统一所有数据,包装类的默认值是null。
  1. 包装类对应

  1. 类型转换与装箱、拆箱
    1. 装箱是将基本类型转换成引用类型。
    2. 拆箱是将引用类型转换成基本类型。
public class Demo1{
    int num = 10;
    //装箱
    int num1 = 18;
    Integer integer1 = new Integer(num1);//法1
    Integer integer2 = Integer.valueOf(num1);//法2

    //拆箱
    Integer integer3 = new Integer(100);
    int num2 = integer3.intValue();
    //Jdk1.5之前采用这个方法装箱与拆箱
    //===================================
    //Jdk1,5之后,提供自动装箱拆箱
    int age = 30;
    //自动装箱
    Integer  integer4 =age;
    //自动拆箱
    int age2 = integer4;
       
}
    1. 8种包装类提供不同的类型间的转换方式:
      1. Nunber父类种提供了6个共性方法(具体查看JavaAPI)。
      2. parseXXX()静态方法(xxx表示一种类型),可以实现基本类型和字符串之间的转换。
public class Demo1{
    //基本类型转成字符串
   int n = 100;
    //使用+号
    String s1 = n1+"";
    //使用Integer中的toString()方法
    String s2 = Integer.toString(n1);
    System.out.println(s1);
    System.out.pringln(s2);       
}

 
public class Demo1{
    //字符串转成基本类型
    String str ="150";
    int n2 = Integer.parseInt(str);//如果字符串转数字,字符串中就不能出现非数字字符
    System.out.println(n2);

}
//boolean字符串形式转成基本类型,"true"----->true || "true" ----->false
//只要非true,就都是转成fasle
public class Demo1{
   	String str2 = "true";
	boolean b1 = Boolean.parseBoolean(str2);
    System.out.println(b1);
}
 

      1. valueOf()静态方法,可以把引用类型转换成基本类型。

注:需要保证类型兼容,否则抛出NumFormatException异常。

  1. 整数缓冲区(Integer):
    1. Java预先创建了256个常用的整数包装类型对象。
    2. 在实际应用当中,对已创建的对象进行复用,节省内存的消耗。

public class Demo2{
    public static void main(String[] args){
    	Integer integer1 = new Integer(100);
    	Integer integer2 = new Integer(100);
    	System.out.println(integer1 == integer2)//false

        Integer integer3 = 100;//自动装箱
        Integer integer4 = 100;
        System.out.println(integer3 == integer4)//true

            
        Integer integer5 = 200;//自动装箱
        Integer integer6 = 200;
        System.out.println(integer5 == integer6)//false
 	}
}

integ1与integer2都是引用类型,引用类型的数据存放于堆中,此时integer1==integer2比较的它们的地址。

自动装箱实际上调用了Integer.valueOf(100)方法,即Integer integer3 = Integer.valueIOf(100),integer3和integer4是引用堆空间中已经一块空间用于存放cache数组的数据(-127~128),所以结果为true;如果数据范围不在-127~128中,就会在堆中开辟一个空间,存放该数据,所以integer5==integer6,结果为false 。(查看Integer.valueOf的源码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值