java中的自动拆箱和装箱

1.回顾知识点

java中的8种基本数据类型,可以分为三类

  • 字符类型

char

  • 布尔类型

boolean

  • 整数类型

byte , short , int , long

  • 浮点数类型

float , double

2.基本数据类型的优点

这种数据的变量不需要使用new创建,他们不会在堆上创建,而是直接在栈内存中存储,因此会更加高效。

3.基本类型对应的包装类型

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

3.为什么使用包装类型

(1)在集合类中,我们是无法将int 、double等类型放进去的。因为集合的容器要求元素是Object类型。

(2) java是面向对象的语言

4.自动拆箱和自动装箱

自动装箱: 就是将基本数据类型自动转换成对应的包装类。

自动拆箱:就是将包装类自动转换成对应的基本数据类型。

Integer i =10;  //自动装箱
int b= i;     //自动拆箱

5.自动装箱与自动拆箱的实现原理

  • 实际代码
public static  void main(String[]args){Integer integer=1; //装箱int i=integer; //拆箱
}
  • 反编译后的代码
public static  void main(String[]args){Integer integer=Integer.valueOf(1); int i=integer.intValue();
}

6.java中==和equals的坑

结论:

在Java中,==比较的是对象应用,而equals比较的是值。

示例代码

public static void main(String... strings) {Integer integer1 = 3;Integer integer2 = 3;if (integer1 == integer2)System.out.println("integer1 == integer2");elseSystem.out.println("integer1 != integer2");Integer integer3 = 300;Integer integer4 = 300;if (integer3 == integer4)System.out.println("integer3 == integer4");elseSystem.out.println("integer3 != integer4");}

打印结果:

integer1 == integer2
integer3 != integer4

原因:

**原因就和Integer中的缓存机制有关。**在Java 5中,在Integer的操作上引入了一个新功能来节省内存和提高性能。整型对象通过使用相同的对象引用实现了缓存和重用。

适用于整数值区间-128 至 +127。

7.自动拆箱带来的问题

NEP问题

  • 示例代码
@Testpublic void testNEP1() {Integer i = null;System.out.println(i);}

控制台打印: null

 @Testpublic void testNEP2() {Integer i = null;int ii = i;System.out.println(ii);}

空指针异常NullPointerException

说明:

有些场景会进行自动拆装箱,同时也说过,由于自动拆箱,如果包装类对象为null,那么自动拆箱时就有可能抛出NPE。

如果一个for循环中有大量拆装箱操作,会浪费很多资源。

如何选择

摘自阿里java开发手册

关于基本数据类型与包装数据类型的使用标准如下:
1) 【强制】所有的 POJO 类属性必须使用包装数据类型。
2) 【强制】RPC 方法的返回值和参数必须使用包装数据类型。
3) 【推荐】所有的局部变量使用基本数据类型。

java中的自动拆箱和装箱(以及NEP问题)相关推荐

  1. 如何理解Java中的自动拆箱和自动装箱?

    小伟刚毕业时面的第一家公司就被面试官给问住了,记忆尤深啊- 如何理解Java中的自动拆箱和自动装箱? 自动拆箱?自动装箱?什么鬼,听都没听过啊,这-这-知识盲区- 回到家后小伟赶紧查资料,我透,这不就 ...

  2. 如何理解Java自动装箱_如何理解Java中的自动拆箱和自动装箱?

    如何理解Java中的自动拆箱和自动装箱? 自动拆箱?自动装箱?什么鬼,听都没听过啊,这...这..知识盲区... 回到家后小伟赶紧查资料,我透,这不就是问基本类型跟封装类型吗,面试官整啥名词呢... ...

  3. Java中的自动拆箱装箱(AutoboxingUnboxing)

    一.基本类型打包器 1.基本类型:long.int.double.float.boolean 2.类类型:Long.Integer.Double.Float.Boolean 区别:基本类型效率更高,类 ...

  4. 一文读懂什么是Java中的自动拆装箱

    本文主要介绍Java中的自动拆箱与自动装箱的有关知识. 基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型 ...

  5. java integer valueof_一文读懂什么是Java中的自动拆装箱

    本文主要介绍Java中的自动拆箱与自动装箱的有关知识. 基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型 ...

  6. [转载] 什么是Java中的自动拆装箱 integer

    参考链接: Java中autoboxing自动装箱整数对象的比较 本文主要介绍Java中的自动拆箱与自动装箱的有关知识. 1.基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class ...

  7. Java进阶之自动拆箱与自动装箱

    序. java基本类型介绍 java中,基本数据类型一共有8种,详细信息如下表: 类型 大小 范围 默认值 byte 8 -128 - 127 0 short 16 -32768 - 32768 0 ...

  8. java装箱和拆箱的意义_java的自动拆箱和装箱是每个程序员都要知道的

    自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西. 自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动 ...

  9. java double 装箱_Java自动拆箱和装箱

    一.什么是装箱/拆箱 在讲之前,得先提一下为什么两个概念:基本数据类型及其包装类,我们都知道Java是一种面向对象的语言,但是Java中的基本数据类型是不面向对象的,这时在使用中便会存在诸多的不便,为 ...

最新文章

  1. MySQL主从(MySQL proxy Lua读写分离设置,一主多从同步配置,分库分表方案)
  2. mysql workbench中删除数据表记录提示出错的问题
  3. android webview tel:,Android WebView“tel:”和“mailto:”链接显示未找到网页
  4. mysql大规模读写性能_十招搞定 MySQL 大规模数据库的性能和伸缩性优化
  5. vue json 导出 excel
  6. jena 学习思路(转)
  7. Problem - 6111迷宫出逃
  8. 模块开发卷宗(GB8567——88)
  9. go将服务器图片响应给客户端,Go中来自客户端和服务器的RPC
  10. 刷recovery工具apk_红米note4X刷lineage,不喜欢miui10广告臃肿的可以试一试
  11. selenium2 webdriver要点理解
  12. [Spring实战系列](8)Spring注入方式之setter注入
  13. IDEA→编码设置、JDK设置、快捷方式、运行项目、debug、关联git、关联maven、mybatis跳转plugin
  14. 因为链接服务器 IP 的 OLE DB 访问接口 SQLNCLI 无法启动分布式事务
  15. JavaScript上传文件,不打断点就上传失败
  16. 服装打版软件ET2019淘宝100RMB买的
  17. 使用 mongorestore恢复数据以及使用 Studio 3T GUI 管理数据库
  18. 下班之后,回个毛线的工作消息!
  19. 用Java实现I am a student逆序输出为student a am I,不借助split方法和StringBuffer!
  20. Javaweb项目报告

热门文章

  1. 2023最新51单片机毕设选题推荐
  2. html5 自建工作流,flowable可视化工作流设计器,html5工作流设计器,vue版本工作流...
  3. linux上的社交软件下载,探探交友app免费版-探探交友真实app下载v4.2.9.2-Linux公社...
  4. POJ - 1376 Robot
  5. 2021年BATJ30套大厂Android经典高频面试题,使用指南
  6. 丢失的牛AcWing
  7. 6360: 词韵(字典树,DP)
  8. 清华山维eps提示计算机内存不足,系统提示“内存不足”的原因及解决方法
  9. CoreAnimation余下的链接
  10. Mixamo动作库导入UE4,动画重定向到小白人骨架