首页 > 编程语言 >Java 包装类(Wrapper)

Java 包装类(Wrapper)

时间:2024-09-09 18:04:11浏览次数:4  
标签:拆箱 Java String 包装 Wrapper int 自动 Integer 装箱

Java 包装类(Wrapper)

目录

1 包装类Wrapper概述

  • 作用: 用于将原始类型(int,char,float等)转换为相应的对象。

  • 8个基本类型中的每一个都有对应的包装器类。

    基本数据类型 包装类
    byte Byte
    boolean Boolean
    char Character
    double Double
    float Float
    int Integer
    long Long
    short Short

2 Integer 类

Constructor Description
Integer(int value) 构造一个新分配的 Integer对象,该对象表示指定的 int值。
Integer(String s) 构造一个新分配 Integer对象,表示 int由指示值 String参数。
static Integer valueOf(int i) 返回一个 Integer指定的 int值的 Integer实例。 返回表示指定的 int 值的 Integer 实例
static Integer valueOf(String s) 返回一个 Integer对象,保存指定的值为 String
package com.fcarey.wrapper;

public class IntegerDemo {
    public static void main(String[] args) {
        Integer i1 = new Integer(1);
        System.out.println(i1);
        Integer i2 = new Integer("2");
        System.out.println(i2);

        Integer i3 = Integer.valueOf(3);
        System.out.println(i3);
        Integer i4 = Integer.valueOf("4");
        System.out.println(i4);
    }
}

3 自动装箱和拆箱

自动装箱和拆箱就是 Java 编译器自动处理基本数据类型与包装类之间的转换,使程序员无需手动编写繁琐的代码。

  • 自动装箱(Autoboxing): 是指将基本数据类型自动转换为相应的包装类对象。即:将一个 int 类型的值直接赋值给 Integer 类型的变量,而无需显式创建 Integer 对象。

  • 自动拆箱(Unboxing): 自动拆箱是指将包装类对象自动转换为相应的基本数据类型。这意味着,你可以直接将一个 Integer 对象赋值给 int 类型的变量,而无需显式调用 .intValue() 方法。

  • package com.fcarey.wrapper;
    
    public class IntegerDemo2 {
        public static void main(String[] args) {
            Integer i1 = 1; // 自动装箱
            Integer i2 = i1 + 2; // i1 + 2 自动拆箱;i2 = i1 + 2; 是自动装箱
            System.out.println(i2);
        }
    }
    
    
    • 1 是一个基本数据类型的整型常量;
    • i1 是一个 Integer 类型的变量。通过自动装箱,i1 的值被自动封装为 Integer 对象。
    • i1 是一个 Integer 类型的对象,通过自动拆箱,它的值被自动提取为一个基本数据类型的 int,并与 2值进行相加得到一个基本数据类型的整形常量。
    • i2 是一个 Integer 类型的变量。通过自动装箱,i1 + 2 的值被自动封装为 Integer 对象。
  • 自动装箱和拆箱的好处

    1. 提高可读性: 自动装箱和拆箱使得代码更加清晰和简洁,不需要频繁地进行类型转换。
    2. 减少错误: 自动装箱和拆箱减少了因类型转换错误而引发的 bug,因为编译器可以在编译时进行类型检查。
    3. 更容易使用集合类: 自动装箱和拆箱使得将基本数据类型放入集合类(如 ArrayList<Integer>)变得更加容易,而无需手动转换。
    4. 提高性能: Java 的新版本中对自动装箱和拆箱进行了性能优化,使得它们的性能更好。
  • 自动装箱和拆箱的注意事项

    1. 性能考虑: 尽管 Java 的性能优化有所改进,但在高性能要求的场景中,频繁的自动装箱和拆箱操作可能会导致性能下降。在这种情况下,建议手动管理类型转换。
    2. 空指针异常: 自动拆箱可能会引发 NullPointerException,因为包装类对象可能为 null。在拆箱之前,最好进行空值检查。

4 int 和 String 类型的相互转换

4.1 int 转换为 String

转换方式

  • 方式一:直接在数字后加一个空字符串
  • 方式二:通过String类静态方法 valueOf()
package com.fcarey.wrapper;

public class IntegerDemo3 {
    public static void main(String[] args) {
        int i = 1;
        System.out.println(i + " " + 2);
        System.out.println(String.valueOf(i) + 2);
    }
}

4.2 String 转换为 int

转换方式

  • 方式一:先将字符串数字转成Integer,再调用valueOf()方法
  • 方式二:通过Integer静态方法parseInt()进行转换
package com.fcarey.wrapper;

public class IntegerDemo4 {
    public static void main(String[] args) {
        String s = "1";
        //方式1:String --- Integer --- int
        Integer i1 = Integer.valueOf(s);
        int i2 = i1.intValue();
        System.out.println(i2 + 2);

        // 方式2: 通过Integer静态方法parseInt()进行转换
        int i3 = Integer.parseInt(s);
        System.out.println(i3 + 2);
    }
}

标签:拆箱,Java,String,包装,Wrapper,int,自动,Integer,装箱
From: https://www.cnblogs.com/f-carey/p/18405025

相关文章

  • java高级:单元测试
    单元测试:针对最小的功能单元(方法),编写测试代码对其进行正确性测试。Junit单元测试框架步骤: publicclassStringUtil{publicstaticvoidprintNumber(Stringname){if(name==null){System.out.println(0);return;//退出方法......
  • 数据库学习笔记(黑马-Javaweb课程)
    概述P80.课程介绍:数据库:存储和管理数据的仓库SQL:操纵做关系型数据库的编程语言数据库管理系统:DBMS,操纵和管理数据库的大型软件课程介绍:数据的的设计,数据库的操作,数据库的优化-索引P81.MySQL-概述-安装配置图文详述:MySQL的下载、安装、配置、使用_mysql下载-CSDN博客语......
  • Java入门:07.Java中的面向对象03
    11this关键字this关键字有两个作用第一个作用,用来调用重载的构造方法publicclassTest3{publicstaticvoidmain(String[]args){newUser();newUser("ls");newUser("ls","女");}}​classUser{Stringname;St......
  • 2-4Java重写与重载
    Java重写与重载重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比......
  • java连接MySQL
    一.下载驱动包java通过JDBC(JavaDatabaseConnectivity)包连接数据库<dependency>  <groupId>com.mysql</groupId>  <artifactId>mysql-connector-j</artifactId>  <version>9.0.0</version></dependency>二.配置数据源(数据库的信息) ......
  • java 关键字
    关键字说明private私有的protected受保护的public公共的default默认abstract声明抽象class类extends扩充,继承final最终值,不可改变的implements实现(接口)interface接口native本地,原生方法(非Java实现)new新,创建static静态strictfp严格,精准synchron......
  • 使用java对栅格数据的处理,对栅格文件进行导入导出
    需求背景:对栅格文件进行导入导出(使用代码的方式,非命令方式);当然也可以使用代码和GDAL的方式进行,但是GDAL配置部署不便捷,故选用GeoTools方式来实现。ps:若是使用命令方式,首先打开PostgreSQL的安装目录【\PostgreSQL\14\bin】,然后使用如下命令即可实现把栅格文件导入到数据库中......
  • 【Java】若依(ruoyi)——5.代码生成
    参考地址:http://doc.ruoyi.vip/ruoyi/document/htsc.html#%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90仔细关注,发现若依真的太好用了。主要是使用的人数众多,文档齐全。而且里面的技术齐全,就算不使用该框架,也可以以此为例,学习学习。这里,最有效的功能算是代码生成了,(这里使用的是前后端......
  • Java基础-学习笔记17
    17IO流1.IO流文件文件在程序中是以流的形式来操作的。流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存)的路径输出流:数据从程序(内存)到数据源(文件)的路径常用的文件操作获取文件的相关信息IO流原理及流的分类I/O(Input/Output......
  • 2-3Java继承
    Java继承继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。生活中的继承:兔子和羊属于食草动物类,狮子和豹属于食肉......