我是靠谱客的博主 饱满小蜜蜂,最近开发中收集的这篇文章主要介绍包装类介绍(Wrapper Class)包装类介绍(Wrapper Class),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 包装类介绍(Wrapper Class)
        • 包装类的分类
        • 包装类与基本数据类型的转换
        • 包装类和String类型的相互转换
        • Integer类和Character类的常用方法

包装类介绍(Wrapper Class)

前言为什么需要包装类呢?因为相比于基本数据类型我们的包装类拥有了类的特点,我们就可以调用类中的方法来简化我们的开发,以后在应用中会大量的使用包装类的

包装类的分类

  1. 八种基本的数据类型都有相应的包装类
基本数据类型包装类
booleanBoolena
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
  1. 包装类的类图
    boolean类类图
    character类类图
    数字类类图

其中的Serializable接口,简单的理解是用于实现类的序列化和反序列化,序列化即将我们的实体转换为字节流输出到文件中去,反序列化正相反。想要详细了解可以看Java对象为啥要实现Serializable接口?

其中的Comparable接口,简单理解就是对实现它的每个类的对象进行整体排序,实现此接口的对象列表(和数组)可以通过**Collections.sort(和Arrays.sort)**进行自动排序。实现此接口的目的就是为了对我们用到的所有对象进行整体的排序。详细了解可以看Comparable接口和Comparator接口

其中数字型包装类的父类Number,源码中的注解是抽象类Number是代表数字值的包装类的超类,这些数字值可以转换为原始类型byte、double、float、int、long和short。从一个特定的Number实现的数字值转换到一个给定的原始类型的具体语义由有关的Number实现定义。

如:public abstract int intValue();用于把Integer包装类转换为基本类型int

如:public abstract double doubleValue();

包装类与基本数据类型的转换

这里我们使用int和Integer的转换为例,其它也基本相同

  1. 手动装箱与拆箱

jdk5以前只有手动装箱和拆箱方式,装箱:基本类型->包装类,拆箱:包装类->基本类型

//演示 int <--> Integer 的装箱和拆箱
//jdk5 前是手动装箱和拆箱
//手动装箱 int->Integer
int n1 = 100;
Integer integer = new Integer(n1);
Integer integer1 = Integer.valueOf(n1);
//手动拆箱
//Integer -> int
int i = integer.intValue();

可以看到intValue()方法就是实现了Number接口中的抽象方法

  1. 自动装箱与拆箱

jdk5及之后实现了自动装箱和拆箱

//jdk5 后,就可以自动装箱和自动拆箱
int n2 = 200;
//自动装箱 int->Integer
Integer integer2 = n2; //底层使用的是 Integer.valueOf(n2)
//自动拆箱 Integer->int
int n3 = integer2; //底层仍然使用的是 intValue()方法

如果我们查看Integer.valueof()方法的源码,我们会发现其实对于不同的参数,处理是不同的,源码如下

public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}

可以查询出IntegerCache.low = -128,IntegerCache.high = 127,那么如果 i 在 IntegerCache.low(-128)~IntegerCache.high(127),就直接从数组返回, 如果不在 -128~127,就直接 new Integer(i),

这两种方式有什么区别呢?

  • 若是直接new的话,那么我们的变量就是指向一个对象的地址,在进行比较时要用equals()
  • 若是IntegerCache的数组赋值的话,我们的变量就是被常量直接赋值,比较的时候就是直接比较常量值

包装类和String类型的相互转换

直接上代码

//包装类(Integer)->String
Integer i = 100;//自动装箱
String str1 = i + "";
String str2 = i.toString();
String str3 = String.valueOf(i);
//String -> 包装类(Integer)
String str4 = "12345";
Integer i2 = Integer.parseInt(str4);//使用到自动装箱
Integer i3 = new Integer(str4);//构造器
Integer i4 = Integer.valueOf(str4);//valueof()方法

Integer类和Character类的常用方法

仅提供几个常用的方法,详情可以查看包装类的源码,最好用到的时候直接面向CSDN编程

System.out.println(Integer.MIN_VALUE); //返回最小值
System.out.println(Integer.MAX_VALUE);//返回最大值
System.out.println(Character.isDigit('a'));//判断是不是数字
System.out.println(Character.isLetter('a'));//判断是不是字母
System.out.println(Character.isUpperCase('a'));//判断是不是大写
System.out.println(Character.isLowerCase('a'));//判断是不是小写
System.out.println(Character.isWhitespace('a'));//判断是不是空格
System.out.println(Character.toUpperCase('a'));//转成大写
System.out.println(Character.toLowerCase('A'));//转成小

最后

以上就是饱满小蜜蜂为你收集整理的包装类介绍(Wrapper Class)包装类介绍(Wrapper Class)的全部内容,希望文章能够帮你解决包装类介绍(Wrapper Class)包装类介绍(Wrapper Class)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(24)

评论列表共有 0 条评论

立即
投稿
返回
顶部