Java常用类之基本数据类型的包装类

目录

一:基本数据类型的包装类

 二:包装类的作用

 三:自动装箱和拆箱

四:包装类的缓存问题

五:自定义一个包装类

六:修改后的自定义包装类


一:基本数据类型的包装类

 二:包装类的作用

●把基本数据类型转化为对象(这是最根本的作用),或者把包装类的对象转化为基本数据类型

包装类可以使包装类对象,基本数据类型,字符串这三者之间进行转化

 三:自动装箱和拆箱

自动装箱和拆箱使编译器帮你干的

 错误示范:

就是引用所指向的对象的空间是空的,不能使用该引用调用空的对象的方法

四:包装类的缓存问题

当在包装类中的数字是-128-127的时候,每个包装类的引用指向的对象都是同一个

五:自定义一个包装类

看下面代码

●我们需要一个缓存数组用来存放-128---127的数字,这个数组只需要一分,所以用static修饰

●用final定义两个常量

●对数组进行静态初始化

●实现valueOf方法

package com.changYongLei;

public class MyInteger {
    private int value;
    private static MyInteger[] cash;
    public static final int LOW=-128;
    public static final int HIGH=127;
    static{//静态初始化块
        for(int i=LOW;i<=HIGH;i++){
            cash[i+128]=MyInteger.valueOf(i);//下标从零开始
        }//下面实现valueOf函数
    }
    public static  MyInteger valueOf(int i){
        if(i>=LOW&&i<=HIGH){
            return cash[i+128];
        }else{
            return new MyInteger(i);//带参构造器在下面实现
        }
    }
private MyInteger(int i){
        this.value=i;
    }

}

 上面这个代码是错误的

1:产生了空指针,一般产生空指针的原因是你调用的那个对象的属性或者方法是空的,而这个是因为你压根就没有产生对象,所以要产生一个对象

2:在创建数组的时候没有给数组分配空间

六:修改后的自定义包装类

 

package com.changYongLei;

public class MyInteger {
    private int value;
    private static MyInteger[] cash=new MyInteger[256];
    public static final int LOW=-128;
    public static final int HIGH=127;
    static{//静态初始化块
        for(int i=LOW;i<=HIGH;i++){
            cash[i+128]=new MyInteger(i);//下标从零开始
        }//下面实现valueOf函数
    }
    public static  MyInteger valueOf(int  i){
        if(i>=LOW&&i<=HIGH){
            return cash[i+128];
        }else{
            return new MyInteger(i);//带参构造器在下面实现
        }
    }
private MyInteger(int i){
        this.value=i;
    }

    @Override
    public String toString() {
        return "MyInteger{" +
                "value=" + this.value +
                '}';
    }

    public static void main(String[] args) {
        MyInteger i=new MyInteger(22);
        MyInteger ii=new MyInteger(2222);
        System.out.println(i);
        System.out.println(ii);
    }

}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值