java8增强的包装类

小编 2026-07-01 阅读:1892 评论:0
为了解决8种基本类型的变量不能当成Object类型变量使用的问题,Java提供了包装类(Wrapper Class)的概念,为8种基本类型分别定义了相应的引用类型,并称之为基本类型的包装类。...

为了解决8种基本类型的变量不能当成Object类型变量使用的问题,Java提供了包装类(Wrapper Class)的概念,为8种基本类型分别定义了相应的引用类型,并称之为基本类型的包装类。
\"在这里插入图片描述\"
除int和char有点例外,其他的基本数据类型对应的包装类都是将其首字母大写即可。
包装类的两个功能
1自动装箱和自动拆箱
JDK1.5之后提供了自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能。

  • 自动装箱:把一个基本类型变量直接赋值给对应的包装类变量,或者赋给Object变量(Object类是所有类的父类,子类对象可以直接赋值给父类变量)。
  • 自动拆箱:允许直接把一个包装类直接赋给对应的基本类型变量。
    进行自动装箱和拆箱时要注意类型匹配问题。例如int类型变量只能装箱为integer类(即使赋给Object类型变量,那也只是利用了Java向上自动转换类型特性)
    借助于包装类的使用,再加上JDK1.5提供的自动装箱,自动拆箱功能,开发者可以将基本类型变量近似的当作对象来用。
    开发者也可以将包装类的实例近似的当成基本类型来使用。
public class AutoBoxingUnboxing
{
   public static void main(String[] args)
   {
      Integer inObj = 5;
       Object boolObj = true;
       int it = inObj;
      if (boolObj instanceof Boolean)
      {
      boolean b = (Boolean)boolObj;
        System.out.println(b);
      }
   }
}

2基本类型和字符串间的转换
(1)字符串类型转化为基本类型
利用包装类提供的parseXxx(String str)静态方法(除了character类,其他包装类都提供了该方法)
利用包装类提供的valueOf(String str)静态方法
1)基本类型转化为字符串类型
String也提供了多个重载valueOf()方法,将基本类型变量转换为字符串类型
直接将基本类型与基本类型相加也会使基本类型自动转换为字符串类型

public class Primitive2String
{
   public static void main(String[] args)
   {
      String intStr = \"123\";
      //把一个字符串转化为int类型
      int it1 = Integer.parseInt(intStr);
      int it2 = Integer.valueOf(intStr);
      System.out.println(it2);
      String floatStr = \"4.56\";
      //把一个字符串转化为float类型
      float ft1 = Float.parseFloat(floatStr);
      float ft2 = Float.valueOf(floatStr);
      System.out.println(ft2);
      //把一个float类型转化为字符串类型
      String ftStr = String.valueOf(2.345f);
      System.out.println(ftStr);
       //把一个double类型转化为字符串类型
      String dbStr = String.valueOf(3.344);
      System.out.println(dbStr);
       //把一个boolean类型转化为字符串类型
      String boolStr = String.valueOf(true);
      System.out.println(boolStr.toUpperCase());
   }
}

3比较
(1)包装类的实例与数值进行比较
直接取出包装类实例所包装的数值来进行比较
(2)包装类实例(引用类型)间的比较
只有两个包装类实例引用同一个对象时才会返回ture
可能会出现下面特别情况:

//通过自动装箱,允许把一个基本数据类型赋值给包装类
Integer ina = 2;
Integer inb = 2;
System.out.println(\"两个2自动装箱后是否相等:\" + (ina == inb));//输出true
Integer biga = 128;
Integer bigb = 128;
System.out.println(\"两个2自动装箱后是否相等:\" + (biga == bigb));//输出false

可能很让人费解,同样是两个int类型装箱后,结果出现不同的结果。
其实这与java的Integer类的设计有关。

系统把一个-128~127之间的整数自动装箱成Integer实例,并放入了一个名为catch数组中缓存起来。如果以后把一个-128–127之间的整数自动装箱成一个Integer时,实际上是直接指向对应的数组元素,因此-128–127之间的同一个整数自动装箱成Integer时永远都是引用catch数组中的同一个元素,因此他们相等。但每次把一个不在-128–127范围内的数装箱时,总是新建一个Integer实例。

Java7增强了包装类的功能,为所有包装类提供了一个静态放方法
compare(xxx val1 , xxx val2)用于比较两个基本类型变量的大小(布尔类型 ture>false)
Java8为Integer , Long增强了功能如下:

  1. static String toUnsignedString(int / long i)将指定的int/long转化为无符号整数对应的字符串
  2. static String toUnsignedString(int / long i , int radix)将指定的int/long转化为指定进制的无符号整数对应的字符串
  3. static xxx parseUnsignedXxx(String s)将指定字符串解析为无符号整数(当调用类为Integer时,xxx为int 当调用类为Long时,xxx为long)
  4. static xxx parseUnsignedXxx(String s ,int radix)将指定的字符串按指定进制解析成无符号整数
  5. static int compareUnsigned(xxx x , xxx y)将两个整数类型转化为无符号整形后比较大小。
版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表