自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接。...为了让代码简练,Java 1.5引入了具有在原始类型和对象类型自动转换的装箱和拆箱机制。...什么是自动装箱和拆箱 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。...何时发生自动装箱和拆箱 自动装箱和拆箱在Java中很常见,比如我们有一个方法,接受一个对象类型的参数,如果我们传递一个原始类型值,那么Java会自动讲这个原始类型值转换成与之对应的对象。...在Java中另一个节省内存的例子就是字符串常量池,感兴趣的同学可以了解一下。
一、什么是自动装箱和拆箱: 我们知道java为8种基本类型分别提供了对应的包装类型,在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integer i=new Integer...对象,则就是自动装箱,同理 Integer i=10; int j=i; 上面的代码则是自动拆箱,将Integer对象自动拆箱为int 简单来说装箱就是自动将基本数据类型转换为包装器类型,拆箱就是自动将包装器类型转化为基本类型...二、装箱和拆箱是如何实现的: 如下代码: public class Main { public static void main(String[] args) {...由反编译的结果可知,装箱的时候调用的是Integer的valueOf方法,拆箱时调用的是Integer的intValue方法 其他的包装器类也类似,这里就不一一举例了 总结:java装箱过程是调用包装类的...valueOf方法实现的,而拆箱过程则是调用包装类的xxxValue方法实现的(xxx代表对应的基本类型) 三、面试中相关问题: 下面的这段代码将输出什么: public class Main {
自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。...什么是拆箱? Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料。...那什么是拆箱呢?...因此可以用一句话总结装箱和拆箱的实现过程: 装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 xxxValue方法实现的。(xxx代表对应的基本数据类型)。...三.面试中相关的问题 虽然大多数人对装箱和拆箱的概念都清楚,但是在面试和笔试中遇到了与装箱和拆箱的问题却不一定会答得上来。下面列举一些常见的与装箱/拆箱有关的面试题。
原文链接:https://www.cnblogs.com/wang-yaz/p/8516151.html 什么是自动装箱拆箱 很简单,下面两句代码就可以看到装箱和拆箱过程 //自动装箱 Integer...total = 99; //自动拆箱 int totalprim = total; 简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。...可以看到运算的时候首先对 num3 进行拆箱(执行 num3 的 longValue 得到基础类型为 long 的值 300),然后对num1 和 mum2 进行拆箱(分别执行了 num1 和 num2...3、equals(Object o) 因为原equals方法中的参数类型是封装类型,所传入的参数类型(a)是原始数据类型,所以会自动对其装箱,反之,会对其进行拆箱 4、当两种不同类型用 == 比较时,包装器类的需要拆箱..., 当同种类型用==比较时,会自动拆箱或者装箱
深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。...本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。 以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? ...二.装箱和拆箱是如何实现的 三.面试中相关的问题 若有不正之处,请谅解和批评指正,不胜感激。 ...什么是拆箱? 在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料。...三.面试中相关的问题 虽然大多数人对装箱和拆箱的概念都清楚,但是在面试和笔试中遇到了与装箱和拆箱的问题却不一定会答得上来。下面列举一些常见的与装箱/拆箱有关的面试题。
这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆: java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱,...解包装称为拆箱); 其实按照我自己的理解自动装箱就可以简单的理解为将基本数据类型封装为对象类型,来符合java的面向对象;例如用int来举例: //声明一个Integer对象Integer num =...成为一个对象以后就可以调用对象所声明的所有的方法 自动拆箱:故名思议就是将对象重新转化为基本数据类型: //装箱Integer num = 10;//拆箱int num1 = num; 自动拆箱有个很典型的用法就是在进行运算的时候...:num1==num2: false num3==num4: true 很奇怪吧:这就归结于java对于Integer与int的自动装箱与拆箱的设计,是一种模式:叫享元模式(flyweight)...,就会每次new就都一个新的对象; 这个的自动装箱拆箱不仅在基本数据类型中有应用,在String类中也有应用,比如我们经常声明一个String对象时: String str = "sl";//代替下面的声明方式
如何理解Java中的自动拆箱和自动装箱? 自动拆箱?自动装箱?什么鬼,听都没听过啊,这...这..知识盲区... 回到家后小伟赶紧查资料,我透,这不就是问基本类型跟封装类型吗,面试官整啥名词呢......我们知道,类的优点在于它可以定义成员变量、成员方法,提供丰富便利的功能,因此Java在JDK1.0的时候就设计了基本数据类型的包装类,而在JDK1.5中引入了新特性:自动装箱和拆箱。...Integer a = 100; // 自动拆箱 2. int b = a; 自动装箱,相当于Java编译器替我们执行了 Integer.valueOf(XXX); 自动拆箱,相当于Java编译器替我们执行了...Integer的静态常量数组,在类加载的时候,执行static静态块进行初始化-128~127之间的Integer对象,存放到cache数组中,cache属于常量,存放在java的方法区中,对方法区不太了解的小伙伴可以先留空...4、 上才艺 才艺一:如何理解Java中的自动拆箱和自动装箱? 答:自动装箱就是将基本数据类型自动转换为封装类型,自动拆箱是将封装类型自动转换为基本数据类型。
JAVA语言中有个名词叫自动拆箱、装箱,那这个自动拆箱、装箱到底是指啥? 自动拆箱、装箱是从JDK1.5开始才有的特性,其实它主要就是指基本类型与包装类的自动转换。...int 是基本类型,而Integer是int的包装类,在JDK1.5之前,int类型的值是不能直接赋给Integer类型的值 的,也就是说 Integer integer = 5; 会报错,因为5是基本类型...所以在JDK1.5开始,它们之间的转换不在须要程序员再去进行转换了,JDK已经将它自动进行了转换,这种操作就叫自动拆箱、装箱。...int j = ii; //这种写法是将Integer的值自动转换成了int基本类型,这种自动转换的方法就叫自动拆箱。...2.int是基本类型,而Integer是包装类,可以自动 拆箱、拆箱,Integer封装了很多的方法,
大家好,又见面了,我是全栈君 一、什么是装箱,什么是拆箱 装箱:把基本数据类型转换为包装类。 拆箱:把包装类转换为基本数据类型。...(8)- Double char(2)- Character boolean(未定义)- Boolean 免费在线视频学习教程推荐:java视频教程 二、先来看看手动装箱和手动拆箱 例子:拿int和Integer...手动拆箱是通过intValue()完成的,通过代码可以看到 i1 从Integer变成了int 三、手动看完了,来看自动的 为了减轻技术人员的工作,java从jdk1.5之后变为了自动装箱与拆箱,还拿上面那个举例...四、从几道题目中加深对自动装箱和拆箱的理解 (1) Integer a = 100; int b = 100; System.out.println(a==b);结果为 true 原因:a 会自动拆箱和...这是因为 java中的常量池 我们可以点开 Integer的源码看看。
1.需要自动拆箱装箱的类型 ? 2. 基本类型及其包装类型 ? 3.什么是自动拆箱装箱 装箱,就是将基本数据类型转换成包装器类型。...拆箱,就是自动将包装类型转换成基本数据类型 //自动装箱 Integer total = 99; //自动拆箱 int totalprim = total; 看个栗子 public class StringTest...public static void main(String[] args) { //自动装箱 Integer total = 99; //自定拆箱...int totalprim = total; } } 编译Java源码 javac StringTest.java javap -c StringTest.class javap...return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } 自动拆箱
什么是拆箱? 我们知道 Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料。...那什么是拆箱呢?...double(8字节) Double char(2字节) Character boolean(未定) Boolean 二.装箱和拆箱是如何实现的 上一小节了解装箱的基本概念之后,这一小节来了解一下装箱和拆箱是如何实现的...因此可以用一句话总结装箱和拆箱的实现过程: 装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 xxxValue方法实现的。(xxx代表对应的基本数据类型)。...三.面试中相关的问题 虽然大多数人对装箱和拆箱的概念都清楚,但是在面试和笔试中遇到了与装箱和拆箱的问题却不一定会答得上来。下面列举一些常见的与装箱/拆箱有关的面试题。
Integer在与Integer比较的时候是比较内存地址,Integer与int比较的时候Integer会产生自动拆箱进行值比较,如果使用不当,这期间就会产生一些不易察觉的问题,下面将详细介绍。...Integer的自动拆箱封箱有很多需要注意的点,这些点都比较隐蔽,使用稍有不慎就会埋藏bug,切不易发现。...下面介绍几种拆箱问题 1....{ static Integer a = null; public static void main(String[] args) { test(a); // java.lang.NullPointerException...枚举使用Integer 枚举使用Integer与实体类的Integer比较时,就会出现地址比较,而这常会被误使用为值比较,埋藏bug。 解决办法为枚举使用int类型。
文章目录 1.JAVA数据类型 2.定义 3.发生时机 4.包装类缓存 在java常量与常量池 中已经介绍过一些java自动装箱与拆箱的例子。现在单独对自动装箱/拆箱进行总结。...1.JAVA数据类型 ?...: Integer a =Integer.valueOf(4); 自动拆箱:将包装类转换为基本类型。...反编译后如下: int a = new Integer(4).intValue(); 3.发生时机 当出现赋值运算、算数表达式、方法调用等情况时,会触发自动装箱/拆箱操作。...Long与int比较,会自动拆箱,因此最终是 3==3 ,得到值为true。 c.equals(a+b), a+b 拆箱操作,得到数值为 3 int类型。
装箱和拆箱 装箱 拆箱 注意 总结 ---- 装箱 定义: 把基本数据类型转换为对应的包装类型 代码演示: //装箱 Integer i=Integer.valueOf(...100); //自动装箱 Integer ii=100;//等价于:Integer.valueof(100); ---- 拆箱 定义: 把包装类型转换为对应的基本数据类型...代码演示: //拆箱 ii=ii.intValue()+200; //自动拆箱 ii+=200; ---- 注意 使用引用类型的变量前,...,也就无法调用方法,无法调用intValue()方法,也就无法进行拆箱,也就无法与整数相加 正确代码: Integer iii=100; if(iii!...,在使用前就必须进行不为null的判断
我们可以将这种差异解释为对自动装箱功能的滥用,而此功能自JDK1.5我们就已开始使用。先不管造成差异的原因,让我们来仔细琢磨下Java中“自动装箱”和“自动拆箱”的概念。...Java中变量被分为两类:基础数据类型和引用数据类型。...Byte char Character float Float int Integer long Long short Short double Double 如下代码片段列举了“自动装箱”和“自动拆箱...代码片段中,一个“long”类型的值被添加到“Long”类型值的列表中。在JDK1.4中,要想执行以上操作,我们必须将基础数据类型放到与之对应的引用数据类型中(装箱)。...结论,如果我们想要写出处理速度更快的代码,我们需要仔细琢磨“自动装箱”和“自动拆箱”的概念。
什么是自动装箱和拆箱 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。...因为这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。...自动装箱和拆箱的原理 自动装箱时编译器调用valueOf将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似intValue(),doubleValue()这类的方法将对象转换成原始类型值。...明白自动装箱和拆箱的原理后,我们带着上面的疑问进行分析下Integer的自动装箱的实现源码。...cache属于常量,存放在java的方法区中。 如果你不了解方法区请点击这里查看JVM内存模型 接着看下面是java8种基本类型的自动装箱代码实现。
通俗的说,为啥要这个东西的存在呢? 首先,我们要知道,Java语言优势就是在于JVM的跨平台机制与面向对象语言的这两大优势。...Java是一个面向对象的编程语言,但是却有一个小小的不足,Java中的八种基本数据类型却是不面向对象的。 那既然不面向对象,就写一个类让这些类型面向对象,于是包装类诞生了。...此时,这个i是一个对象,携带的int值为20。 但是,我们看看,给出的代码中还有一段,Integer j = a,是不是疑惑为什么他没有用valueOf()方法?...同时他也支持自动拆箱。...("自动拆箱"+j); } } 运行结果如下: 自动装箱和拆箱与手动没有区别,我们自然平常选择自动啦!
什么叫装箱 & 拆箱? 将int基本类型转换为Integer包装类型的过程叫做装箱,反之叫拆箱。...由此我们引出了Java装箱的这个操作。我们带着疑问去进行分析。...[-128,127]之间,那么就从这个缓存(Integer数组)中取,如果不在这个范围那么直接new一个。...我说说的理解,因为在我们的业务中,可能存在各种状态和标识等Integer类型的字段,这些值一般都是0,1,2,3之类的,而且出现的比较频繁,如果没有缓存,那么就需要频繁的new对象,然后再释放,就非常消耗内存空间...拆箱(intValue) 拆箱总体没有什么复杂的逻辑,直接返回这个数值的基本类型。
什么是 Java 包装类和自动拆箱装箱? Java 中的基本数据类型(如 int、char、boolean 等)是不具备面向对象特性的,不能直接参与面向对象的操作。...为什么需要 Java 包装类和自动拆箱装箱? Java 的包装类和自动拆箱装箱主要有以下几个原因: 面向对象:Java 是一门面向对象的编程语言,但基本数据类型不具备面向对象的特性。...通过使用包装类,可以将基本数据类型转换为对应的对象,从而在集合中存储。 3. Java 包装类和自动拆箱装箱的实现原理? Java 的包装类是通过封装基本数据类型的值来实现的。...Java 包装类和自动拆箱装箱的使用示例 以下是 Java 包装类和自动拆箱装箱的一些使用示例: // 自动装箱 Integer num1 = 10; Double num2 = 3.14; // 手动装箱...总结 Java 的包装类和自动拆箱装箱提供了基本数据类型与对象之间的转换功能,使得基本数据类型也能够参与面向对象的操作。
领取专属 10元无门槛券
手把手带您无忧上云