栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【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);

    }
}

整数缓冲区
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之间时,会被缓存在一个对象数组中,这样设计的原因是出于高并发时需要处理大量的数据,提前创建一个数组储存常用整数以备使用,可以用以缓冲,而当传入的数值不在这个范围之内,程序便会创建一个新的对象,因此这也是导致地址不同的原因。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322335.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号