持续总结中!2024年面试必问 100 道 Java基础面试题(十八)

上一篇地址:持续总结中!2024年面试必问 100 道 Java基础面试题(十七)-CSDN博客

三十五、什么是包装类型?有什么用?

什么是包装类型?

在Java中,包装类型是指那些用于封装基本数据类型的类。Java为每个基本数据类型提供了对应的包装类型:

  • boolean - Boolean
  • byte - Byte
  • short - Short
  • int - Integer
  • long - Long
  • float - Float
  • double - Double
  • char - Character

包装类型的用途

  1. 对象实例: 基本数据类型是不可变的,并且不是对象。包装类型允许基本数据类型拥有对象的属性,例如可以为它们设置方法和属性。

  2. 集合框架: Java的集合框架(如ArrayListHashMap等)只能接受对象作为元素。包装类型允许基本数据类型作为集合的元素。

  3. 自动装箱与拆箱: Java 5引入了自动装箱(Autoboxing)和自动拆箱(Unboxing)特性,允许在基本数据类型和相应的包装类型之间无缝转换。

    Integer refInt = 5; // 自动装箱,基本类型int转换为Integer对象
    int num = refInt;   // 自动拆箱,Integer对象转换为基本类型int
  4. 使用类特有的方法: 包装类型提供了一些有用的方法,例如IntegertoString()parseInt()valueOf()等。

  5. 资源管理: 在需要对象而不是原始类型的地方,如try-with-resources语句,包装类型非常有用。

  6. 泛型和注解: 泛型和注解通常需要对象类型,包装类型在这些情况下可以满足要求。

  7. 枚举和正则表达式: 枚举类型和正则表达式等特性只能与对象一起使用,包装类型在这些情况下非常有用。

  8. 分布式对象: 在分布式系统中,基本数据类型不能直接在网络上传输,需要使用它们对应的包装类型。

示例代码

public class WrapperExample {
    public static void main(String[] args) {
        Integer integerObject = 100; // 自动装箱
        int primitiveInt = integerObject; // 自动拆箱

        List<Integer> intList = new ArrayList<>();
        intList.add(1);
        intList.add(2);
        intList.add(3);

        for (Integer num : intList) {
            System.out.println(num); // 输出集合中的每个Integer对象
        }
    }
}

在这个示例中,Integerint的基本数据类型对应的包装类型。示例展示了自动装箱和自动拆箱的过程,以及如何将包装类型对象放入集合中。

总结来说,包装类型在Java中非常有用,它们允许基本数据类型在需要对象的地方使用,同时提供了额外的方法和属性,增强了基本数据类型的功能。

三十六、什么是自动装厢、拆厢?

自动装箱(Autoboxing)

自动装箱是Java 5引入的一个特性,它允许将基本数据类型自动转换为对应的包装类类型。这意味着在需要对象的地方,可以直接使用基本数据类型的值,编译器会自动将这个值包装成对应的包装类对象。

例如:

Integer integerObject = 100; // 基本类型int自动装箱为Integer对象

在这个例子中,int类型的值100被自动装箱为Integer对象。

自动拆箱(Unboxing)

自动拆箱是自动装箱的逆过程,它允许将包装类类型的对象自动转换为对应的基本数据类型。这在使用对象的地方,需要基本数据类型值时非常有用。

例如:

int primitiveInt = integerObject; // Integer对象自动拆箱为基本类型int

在这个例子中,Integer对象被自动拆箱为int类型的值。

自动装箱和拆箱的用途

  • 简化代码:在集合框架、泛型、注解等需要对象的地方,自动装箱和拆箱简化了代码编写。
  • 类型转换:允许在基本数据类型和对象之间无缝转换,增强了代码的灵活性。

注意事项

  • 性能:虽然自动装箱和拆箱简化了代码,但过度使用可能会影响性能,因为它们涉及到对象的创建和垃圾收集。
  • null安全性:基本数据类型不能为null,但包装类对象可以。在自动拆箱时,如果尝试将一个null对象拆箱为基本数据类型,会抛出NullPointerException

示例代码

public class BoxingUnboxingExample {
    public static void main(String[] args) {
        // 自动装箱
        Integer integerWrapper = 123;
        Double doubleWrapper = 4.56;

        // 自动拆箱
        int intPrimitive = integerWrapper;
        double doublePrimitive = doubleWrapper;

        System.out.println("Integer wrapper to primitive: " + intPrimitive);
        System.out.println("Double wrapper to primitive: " + doublePrimitive);
    }
}

在这个示例中,1234.56是基本数据类型的值,它们被自动装箱为IntegerDouble对象。然后,这些包装类对象被自动拆箱为基本数据类型的变量。

总结来说,自动装箱和拆箱是Java中提高代码可读性和简化类型转换的有用特性,但在性能敏感的应用中应该谨慎使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/583344.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python学习笔记B-11:序列结构之列表--二维列表的遍历和生成式

二维列表的遍历方式&#xff0c;使用双层for循环&#xff0c;遍历索引号。 二维列表的生成式&#xff0c;也是使用类似双层循环的形式生成。 print("##初始化二维列表&#xff0c;每个元素就是1个列表") lst [["东方延续","太空军自然选择号舰长&qu…

【AI心理咨询应用】继Woebot之后,国内诞生的“LLM+CBT”应用:白小喵

导言 AI认知行为疗法&#xff08;Cognitive Behavioral Therapy&#xff0c;CBT&#xff09;早在2017年便有了首例&#xff0c;即美国知名CBT治疗机器人Woebot。 然而&#xff0c;Woebot在CBT的完整落地上仍有缺陷问题&#xff0c;LLM的出现促进了对该问题的解决&#xff0c;…

typeScript 安装

1、安装typescript 安装npm i -g typescript 查看是否安装成功 tsc -v 2、使用ts // 浏览器不支持ts 需要编译成 es5 let str: string ts 在终端输入 tsc index.ts 会将其生成一个对应的index.js文件 在电脑上首次使用TS的时候&#xff0c;执行TS 的命令的时候报错 打开PowerS…

RustGUI学习(iced)之小部件(三):如何使用下拉列表pick_list?

前言 本专栏是学习Rust的GUI库iced的合集&#xff0c;将介绍iced涉及的各个小部件分别介绍&#xff0c;最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个&#xff0c;目前处于发展中&#xff08;即版本可能会改变&#xff09;&#xff0c;本专栏基于版本0.12.1. 概述…

2024年,新手做抖音小店想要赚钱,必须明白三件事!

大家好&#xff0c;我是电商糖果 有不少小店的商家都说过&#xff0c;现在的抖音小店比三四年前复杂了。 三四年前抖音小店刚刚出现&#xff0c;平台规则还没有那么多&#xff0c;很多机制也不太成熟。 那个时期的抖店说是捡钱的&#xff0c;一点儿都不假。 但是如果说你现…

Linux详解:进程等待

文章目录 进程等待等待的必要性进程等待的方法waitwaitpid获取子进程status阻塞等待 与 非阻塞等待 进程等待 等待的必要性 子进程退出&#xff0c;父进程不进行回收的话&#xff0c;就可能造成僵尸进程&#xff0c;进而造成内存泄露 如果进程进入了僵尸状态&#xff0c;kill…

机器学习:驱动现代交通运输革命的AI智慧引擎

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

玄子Share-引导过程与服务控制

玄子Share-引导过程与服务控制 Linux操作系统引导过程 系统初始化进程 init 进程 由 Linux 内核加载运行 /sbin/init 程序init 进程是系统中第一个进程init 进程的 PID&#xff08;进程标记&#xff09;号永远为 1 Systemd Systemd是Linux操作系统的一种init软件CentOS7中采用…

【Linux开发 第十二篇】搭建JavaEE环境

搭建开发环境 搭建javaEE环境 搭建javaEE环境 在Linux下开发JavaEE需要安装软件包&#xff1a; 安装jdk 安装步骤&#xff1a; 在opt目录下创建jdk目录通过xftp上床到jdk目录中进入到jdk目录中&#xff0c;解压jdk压缩包在/usr/local下创建java目录将解压完成的jdk文件移动…

SpringBoot框架学习笔记(一):依赖管理和自动配置

本文为个人笔记&#xff0c;仅供学习参考之用&#xff0c;如有不当之处请指出。 本文基于springboot2.5.3版本&#xff0c;开发环境需要是 jdk 8 或以上&#xff0c;maven 在 3.5 1 SpringBoot 基本介绍 1.1 官方文档 &#xff08;1&#xff09; 官网 : https://spring.io/pr…

张朝阳对话华为Fellow陈海波:万物智联时代,鸿蒙如何实现“换道超车”?

随着智能终端设备的普及和万物智联时代的加速到来&#xff0c;鸿蒙生态的高速发展正引发全行业的关注。 搜狐创始人、董事局主席兼CEO、物理学博士张朝阳与华为Fellow、基础软件首席科学家陈海波带来了一场关于鸿蒙生态的公开课。鸿蒙技术架构有哪些领先性?HarmonyOS发布5年来…

compose调用系统分享功能分享图片文件

compose调用系统分享功能图片文件 简介UI界面提供给外部程序的文件访问权限创建FileProvider设置共享文件夹 通用分享工具虚拟机验证结果参考 本系列用于新人安卓基础入门学习笔记&#xff0c;有任何不同的见解欢迎留言 运行环境 jdk17 andriod 34 compose material3 简介 本案…

Hadoop3:集群搭建及常用命令与shell脚本整理(入门篇,从零开始搭建)

一、集群环境说明 1、用VMware安装3台Centos7.9虚拟机 2、虚拟机配置&#xff1a;2C&#xff0c;2G内存&#xff0c;50G存储 3、集群架构 从表格中&#xff0c;可以看出&#xff0c;Hadoop集群&#xff0c;主要有2部分&#xff0c;一个是HDFS服务&#xff0c;一个是YARN服务 …

[系统安全] 六十.威胁狩猎 (1)APT攻击检测及防御与常见APT组织的攻击案例分析

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系…

四、管道与重定向

四、管道与重定向 1 重定向 0,标准输入(键盘) 1,标准输出 2,标准错误&#xff0c; 3,进程在执行过程中打开的其他文件。 &:表示正确错误混合输出1.1 输出重定向 (覆盖&#xff0c;追加) > ----覆盖 >> ----追加 正确输出&#xff1a; 1> 1>> 等价…

Git 仓库内容操作

Git 仓库内容操作 | CoderMast编程桅杆Git 仓库内容操作 添加文件到暂存区 使用如下指令将工作区的文件添加到暂存区&#xff0c;告诉 Git 在下次 commit 时哪些文件做出了修改。 commit 指令详看后续 添加一个或多个文件到暂存区&#xff1a; 添加指定目录到暂存区 添加当前目…

ffmpeg与sdl的个人笔记

说明 这里的ffmpeg基础知识和sdl基础知识仅提及与示例代码相关的知识点, 进阶可学习雷神的博客。 https://blog.csdn.net/leixiaohua1020 当然&#xff0c;如代码写的有问题或有更好的见解&#xff0c;欢迎指正&#xff01; 音视频基础知识 在学习音视频理论知识时&#xff…

CSS中设置透明度的2个属性:opacity,RGBA以及它们的区别

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

试用了三个Ai音乐工具,我的偶像河图要完蛋了

试了三个生成音乐的ai工具&#xff0c;分别是爆火的suno,后期新秀udio&#xff0c;还有我们国内的天工。 先说感受&#xff0c;suno和天工我觉得稍微靠前&#xff0c;udio可能我的配置风格有问题&#xff0c;啪啪啪连选了好几个风格&#xff0c;生成的东西有点怪。 我随手写了…

【机器学习基础1】什么是机器学习、预测模型解决问题的步骤、机器学习的Python生态圈

文章目录 一. 什么是机器学习1. 概念2. 机器学习算法分类 二. 利用预测模型解决问题的步骤三. 机器学习的Python生态圈 一. 什么是机器学习 1. 概念 机器学习&#xff08;Machine Learning&#xff0c;ML&#xff09;是一门多领域的交叉学科&#xff0c;涉及概率论、统计学、…