java中的自动拆装箱与缓存(Java核心技术阅读笔记)(java 自动拆箱)

  本篇文章为你整理了java中的自动拆装箱与缓存(Java核心技术阅读笔记)(java 自动拆箱)的详细内容,包含有java的自动装箱和自动拆箱 java 自动拆箱 java中什么是自动装箱 java支持的数据类型有哪些,什么是自动拆装箱 java中的自动拆装箱与缓存(Java核心技术阅读笔记),希望能帮助你了解 java中的自动拆装箱与缓存(Java核心技术阅读笔记)。

  最近在读《深入理解java核心技术》,对于里面比较重要的知识点做一个记录!

  众所周知,Java是一个面向对象的语言,而java中的基本数据类型却不是面向对象的!为了解决这个问题,Java为每个基本数据类型引入一个对应的类,称为包装类!

  byte -- Byte boolean -- Boolean short -- Short char -- Character

  int -- Integer long -- Long float -- Float double -- Double

  为什么需要包装类?

  因为java是面向对象的语言,很多地方需要使用对象而不是基本数据类型。比如,在集合类中,无法将int,double放进去,因为集合容器要求的元素是object类型。

  装箱:把基本数据类型转换成包装类的过程

  拆箱:把包装类换成基本数据类型的过程

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

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

  自动拆箱与自动装箱的原理:

   public static void main(String[] args){

   Integer integer = 1;//装箱

   int i = integer;//拆箱

   }

  自动装箱都是通过包装类的valueOf()方法实现的,自动拆箱都是通过包装类对象的xxxvalue()方法实现的。

  在那些场景下,java会自动拆装箱?

   场景一:将基本数据类型放入集合类

   把基本数据类型放入集合类

  

import java.util.ArrayList;

 

  import java.util.List;

  public class demo2 {

   public static void main(String[] args){

   List Integer list = new ArrayList ();

   for(int i = 0;i 10 ; i++){

   list.add(i);

   System.out.println(list);

  }

 

  

   场景二:包装类和基本类型的大小比较

  包装类与基本数据类型进行比较运算,是先将包装类拆箱成基本数据类型,然后再进行比较

   场景三:包装类的运算

   两个包装类会被自动拆箱成基本类型进行计算

   场景四:自动拆装箱与缓存

  

public class demo1 {

 

   public static void main(String[] args){

   Integer integer1 = 22;

   Integer integer2 = 22;

   if(integer1 == integer2){

   System.out.println("integer1 == integer2");

   }else{

   System.out.println("integer1 != integer2");

   Integer integer3 = 300;

   Integer integer4 = 300;

   if(integer3.equals(integer4)){

   System.out.println("integer3 == integer4");

   }else{

   System.out.println("integer3 != integer4");

  }

 

   在java中==表示对象引用,而equals表示比较的值

   所以上述结果都为true,如果第二个改为==结果就为false,原因是和Integer中的缓存机制有关,当需要进行自动装箱时,如果数字在-128-127之间,则会直接使用缓存中的对象,而不是重新创建一个对象。

  

  以上就是java中的自动拆装箱与缓存(Java核心技术阅读笔记)(java 自动拆箱)的详细内容,想要了解更多 java中的自动拆装箱与缓存(Java核心技术阅读笔记)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: