当前位置: 首页 > article >正文

【Java基础面试题024】Java中包装类型和基本类型的区别是什么?

回答重点

基本类型:

  • Java中有8种基本数据类型(byte、short、int、long、float、double、char、boolean)
  • 他们是直接存储数值的变量,位于栈上(局部变量在栈上、成员变量在堆上,静态字段/类在方法区),性能较高
  • 且不支持null值

包装类型:

  • 每个基本类型都有一个对应的包装类型(Byte、Short、Integer、Long、Float、Double、Character、Boolean)
  • 包装类型是类,存储在堆中,可以用于面向对象编程
  • 支持null值

区别:

1)性能区别:

  • 基本类型:占用内存小,效率高,适合频繁使用的简单操作
  • 包装类型:本质是对象,涉及内存分配和垃圾回收,性能相对较低

2)比较方式不同:

  • 基本类型:比较用==,直接比较数值
  • 包装类型:比较对象的内容用equals(),比较对象的内存地址用==

3)默认值不同:

  • 基本类型:默认值是0,false等
  • 包装类型:默认值为null

4)初始化的方式不同:

  • 基本类型:直接赋值
  • 包装类型:用new

5)存储方式不同:

  • 基本类型:如果是局部变量则保存在栈上,如果是成员变量保存在堆中
  • 包装类型:保存在堆上(成员变量,在不考虑JIT优化的栈上分配时,都是随着对象一起保存在堆上的)

扩展知识

自动装箱和拆箱

因为Java是一种面向对象语言,很多地方都需要使用对象而不是基本数据类型。比如集合类就不能存基本类型

为了让基本类型也具有对象的特征,就出现了包装类型。它相当于将基本类型包装起来,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作

  • 装箱:基本类型自动转换为包装类型对象
  • 拆箱:包装类型对象自动转换为基本数据的值

【Java基础面试题011】什么是Java中的自动装箱和拆箱?-CSDN博客

缓存机制

包装类型中的Byte、Short、Integer和Long对某些范围内的值(例如Integer缓存-128到127)会使用对象缓存来提升性能。因此,统一数值的包装类型对象可能是同一个实例

Integer a = 100;
Integer b = 100;
System.out.println(a == b);  // true
Integer c = 200;
Integer d = 200;
System.out.println(c == d);  // false

缓存机制可以看我另一篇博客:【Java基础面试题024】什么是Java的Integer缓存池?-CSDN博客

基本类型与包装类长度和范围


http://www.kler.cn/a/446108.html

相关文章:

  • [ESP]从零开始的Arduino IDE安装与ESP环境配置教程
  • 【开源免费】基于SpringBoot+Vue.JS房屋租赁管理系统(JAVA毕业设计)
  • 解决docker环境下aspose-words转换word成pdf后乱码问题
  • Pytorch | 利用FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
  • 【HarmonyOS NEXT】Web 组件的基础用法以及 H5 侧与原生侧的双向数据通讯
  • linux-----进程及基本操作
  • Electron -- Electron Fiddle(一)
  • Android学习(七)-Kotlin编程语言-Lambda 编程
  • Springboot访问到Controller中不存在的接口BUG
  • 经典系统重塑(sql层)
  • 免登陆是什么?
  • AI Agent案例全解析:百度营销智能体(8/30)
  • 机动车油耗计算API集成指南
  • 简单工厂模式和策略模式的异同
  • Ubuntu RTSP 客户端和服务器实现
  • JVM中的方法绑定机制
  • 如何使用java来解析一个pdf文件呢?
  • 12_HTML5 Video(视频) --[HTML5 API 学习之旅]
  • 嵌入的律动,科技的心跳
  • 【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis
  • react 项目打包二级目 使用BrowserRouter 解决页面刷新404 找不到路由
  • [Unity Shader]【图形渲染】【游戏开发】 Unity Shader与原始Shader的区别
  • 电脑除尘更换cpu和显卡硅脂过程及安装win11系统中遇到的问题
  • Django 中的 reverse 【反向/逆转/扭转/逆向】使用详解以及使用案例
  • C# 模式匹配
  • C++打小怪游戏