包装类

包装类概述

什么是包装类

  1. 基本数据类型所对应的引用数据类型
  2. Object可统一所有数据,包装类的默认值是null

包装类对应

基本数据类型 包装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

类型转换:装箱、拆箱

类型转换

  1. 八种包装类提供不同类型间的转换方法:

    • Number父类中提供的6个共性方法
    • parseXXX()静态方法
    • valueOf()静态方法
  2. 注意:需保证类型兼容,否则抛出NumberFormatException异常

装箱

基本数据类型转换为引用数据类型

//类型转换:装箱,基本类型转换为引用类型
//基本类型
int num1=39;
//使用Integer类创建对象
Integer integer1=new Integer(num1);
Integer integer2=Integer.valueOf(num1);
System.out.println("装箱");
System.out.println(integer2);
System.out.println(integer1);

 //jdk1.5之后,Java提供自动装箱的功能
 int age=49;
 //自动装箱
 Integer integer4=age;
 System.out.println("自动装箱");
 System.out.println(age);

拆箱

引用类型转换为基本类型

//类型转换:拆箱,引用类型转换为基本类型
Integer integer3=new Integer(100);
int num2=integer3.intValue();
System.out.println("拆箱");
System.out.println(num2);

 //jdk1.5之后,Java提供自动拆箱的功能
 int age=49;
 //自动拆箱
 int age2=integer4;
 System.out.println("自动拆箱");
 System.out.println(integer4);

基本类型和字符串转换

//基本类型和字符串之间转换
//1.基本类型转换为字符串
int n1=255;
//1.1使用"+"
String s1=n1+"";
//1.2使用Integer中的toString()方法
String s2=Integer.toString(n1);
System.out.println(s1);
System.out.println(s2);


//2.字符串转换成基本类型
String str="135";
//使用Integer提供的parseXXX()
int n2=Integer.parseInt(str);
System.out.println(n2);

//boolean字符串形式转成基本类型。"true"--->true   非"true"--->false
String str2="tru1";
boolean b1=Boolean.parseBoolean(str2);
System.out.println(b1);

整数缓冲区

  1. Java预先创建了256个常用的整数包装类型对象

  2. 在实际应用中,对已创建的对象进行复用

    public class Integer{
         public static Integer valueOf(int i) {
            if (i >= IntegerCache.low && i <= IntegerCache.high)
                return IntegerCache.cache[i + (-IntegerCache.low)];
            return new Integer(i);
        }
    }
    
    
     private static class IntegerCache {
            static final int low = -128;
            static final int high;//127
            static final Integer cache[];
    }
    
    
    
    public class Demo02 {
        public static void main(String[] args) {
            //面试题
            Integer integer=new Integer(100);
            Integer integer2=new Integer(100);
            System.out.println(integer==integer2);//false
    
            Integer integer3=100;//自动装箱
            Integer integer4=100;
            System.out.println(integer3==integer4);//true,因为100在-128~127之间,所以返回的就是Integer缓冲区里的对象 
    
            Integer integer5=200;//自动装箱
            Integer integer6=200;
            System.out.println(integer5==integer6);//fasle,因为200不在-128~127之间,所以返回的是在堆里开出来的新的空间,new Integer(i)
        }
    }