【Java】(十七)包装类;类型转换与装箱、拆箱;整数缓冲区

包装类

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的。基本类型的数据不具备"对象"的特性,只能进行简单的加减运算,不能调用方法。因此,java为每种数据类型分别设计了对应的类,即包装类。

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

在这里插入图片描述

类型转换与装箱、拆箱

  1. 装箱:将基本数据类型转换为包装类
    拆箱:将包装类转换为基本数据类型
    在JDK1.5以前,需要手动装箱和拆箱;在JDK1.5及以后,支持自动装箱和拆箱。只需要包装类型 变量名=数据类型变量/数据值;即可自动转换。
  2. 8种包装类提供不同类型间的转换方式:
    (1)Number父类中提供的6个共性方法。
    java.lang.Number提供直接对byte、double、float、int、long和short实现类型转换的方法。
    数值给定的基本数据类型转换为包装类型:Integer integer = new Integer(10); ;
    包装类型转换为数据类型:int a = integer.intValue();
    (2)parseXXX()静态方法拆箱。
    (3)valueOf()静态方法装箱。
    (4)自动装箱;自动拆箱。
    注意:需保证类型兼容,否则抛出NumberFormatException异常。
package study.pack;

public class Demo01 {
    public static void main(String[] args) {
        System.out.println("基本类型和字符串之间转换");

        //1基本类型转成字符串
        int n1=255;
        String s1 = n1+"";      //1.1使用+号
        String s2=Integer.toString(n1); //1.2使用Integer中的toString()方法
        System.out.println(s1);
        System.out.println(s2);
        //2字符串转成基本类型
        String str="150" ;
        int n2=Integer.parseInt(str);   //使用Integer.parseXXX();
        System.out.println(n2);

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

    }
}
/*
基本类型和字符串之间转换
255
255
150
true
 */

整数缓冲区

package study.pack;

public class Demo02 {
    public static void main(String[] args) {

        Integer integer1 = new Integer(100);
        Integer integer2 = new Integer(100);
        System.out.println(integer1 == integer2);   //F,因为new出的地址不一样

        Integer integer3 = 100;//自动装箱,相当于调用valueOf()方法
        //Integer integer4 = 100;   
        Integer integer4 = Integer.valueOf(100);
        System.out.println(integer3 == integer4);   //T,在缓冲区内

        Integer integer5 = 200;
        Integer integer6 = 200;
        System.out.println(integer5 == integer6);   //F,不在缓冲区内,相当于新建地址
    }

}

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

通过查看valueOf的源代码【按住Ctrl然后点击】:
在这里插入图片描述
当传入的数值在-128与127之间时,会被缓存在一个对象数组中,这样设计的原因是出于高并发时需要处理大量的数据,提前创建一个数组储存常用整数以备使用,可以用以缓冲,而当传入的数值不在这个范围之内,程序便会创建一个新的对象,因此这也是导致地址不同的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值