java装箱与拆箱_【转】java 自动装箱与拆箱
这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆:
java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱,解包装称为拆箱);
其实按照我自己的理解自动装箱就可以简单的理解为将基本数据类型封装为对象类型,来符合java的面向对象;例如用int来举例:
//声明一个Integer对象
Integer num = 10;//以上的声明就是用到了自动的装箱:解析为
Integer num = new Integer(10);
以上就是一个很好的体现,因为10是属于基本数据类型的,原则上它是不能直接赋值给一个对象Integer的,但jdk1.5后你就可以进行这样的声明,这就是自动装箱的魅力
自动将基本数据类型转化为对应的封装类型。成为一个对象以后就可以调用对象所声明的所有的方法
自动拆箱:故名思议就是将对象重新转化为基本数据类型:
//装箱
Integer num = 10;//拆箱int num1 = num;
自动拆箱有个很典型的用法就是在进行运算的时候:因为对象时不恩直接进行运算的,而是要转化为基本数据类型后才能进行加减乘除
Integer num = 10;//进行计算时隐含的有自动拆箱
System.out.print(num--);
哈哈 应该感觉很简单吧,下面我再来讲点稍微难点的,是稍微
看下面一个例子
//在-128~127 之外的数
Integer num1 = 297; Integer num2 = 297;
System.out.println("num1==num2: "+(num1==num2));//在-128~127 之内的数
Integer num3 = 97; Integer num4 = 97;
System.out.println("num3==num4: "+(num3==num4));
打印的结果是:num1==num2: falsenum3==num4:true
很奇怪吧:这就归结于java对于Integer与int的自动装箱与拆箱的设计,是一种模式:叫享元模式(flyweight)
为了加大对简单数字的重利用,java定义:在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象
而如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个 Integer对象;明白了吧
以上的现象是由于使用了自动装箱所引起的,如果你没有使用自动装箱,而是跟一般类一样,用new来进行实例化,就会每次new就都一个新的对象;
这个的自动装箱拆箱不仅在基本数据类型中有应用,在String类中也有应用,比如我们经常声明一个String对象时:
java装箱与拆箱_【转】java 自动装箱与拆箱相关推荐
- java装箱拆箱_Java中的自动装箱与拆箱
自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象.自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接. 如 ...
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- java自动装箱和拆箱_关于java自动装箱和自动拆箱
自动装箱和拆箱是一个老生常谈的问题了,今天我们谈一下我对这两个概念的理解. 一.自动装箱 java中一共有八种基本类型的数据,对于这些基本类型的数据都有一个对应的包装器类型.比如int--Intege ...
- 【Java常识】10.0 基本数据类型的自动装箱、拆箱、正则表达式
1.0 基本数据类型有专门的包,这算是很常识了.但是有个小知识点,就是涉及自动装箱拆箱. 代码演示如下: package edp.com.learn1;public class Demo {publi ...
- java 自动拆箱_Java中的自动装箱拆箱
Java中的自动装箱拆箱 一.自动装箱与自动拆箱 自动装箱就是将基本数据类型转换为包装类类型,自动拆箱就是将包装类类型转换为基本数据类型. 1 //自动装箱 2 Integer total = 90; ...
- java 多态判断非空_收藏Java 面试题全梳理
脚本之家 你与百万开发者在一起 来源 | Java建设者(ID:javajianshe) 作者 |cxuan 如若转载请联系原公众号 Java 基础篇 Java 有哪些特点 并发性的:你可以在其中执行 ...
- java 布尔表达式_java - 布尔值,条件运算符和自动装箱
java - 布尔值,条件运算符和自动装箱 为什么抛出false public static void main(String[] args) throws Exception { Boolean b ...
- java f是什么单位_关于java:F和D在数字文字的末尾是什么意思?
我看过其中一些符号,但找不到任何奇怪的符号, double d = 5D; float f = 3.0F; 5后的D和F分别是什么意思? 对于来自C的用户:1)d后缀在ANSI C中不存在,仅作为GN ...
- java web 开发之道_《Java Web开发之道》PDF 下载
图书目录: 第1篇 编程 经验与 感悟篇 第1章 编程 经验谈6则 经验01 乐不思蜀--寻找编程的乐趣 经验02 水滴石穿--编程学习 经验谈 经验03 举足轻重--代码规范 经验谈 经验 ...
- java根据父类找子类_在java中实现多态时,可以通过父类变量引用子类的对象。_学小易找答案...
[单选题]对于字符串s="java",下面哪个选项返回字符在字符串中'v'的位置( ). [简答题]汽车核保的主要内容 [判断题]在java中产生子类对象时,直接调用子类的构造方法 ...
最新文章
- js 一/二维数组排序
- python函数和方法概念_第48p,什么是函数?,Python中函数的定义
- 【C#】获取网页内容及HTML解析器HtmlAgilityPack的使用
- Java服务CPU飙到99%问题排查
- qt5 linux apt get,Ubuntu 14.04下安装并配置Qt5.7.0
- php遇到Allowed memory size of 134217728 bytes exhausted问题解决方法
- ajax success重复,ajax中success函数中的事件会叠加吗?
- (编译适用于ARM的linux内核并进行QEMU仿真)Compile Linux kernel 3.2 for ARM and emulate with QEMU
- Sauce Labs将分析和扩展调试添加到其持续测试云中
- JS拖动技术--- 关于setCapture (转自 剑胆琴心-.Net学习笔记)
- 变电站计算机监控 规范,110kV变电站计算机监控系统技术规范书.docx
- 我的c盘为多余的java.exejavaw.exe_java.exe,javac.exe,javaw.exe 是什么进程?
- [转]密码算法揭秘,一文让你成为国际安全算法与国密算法专家
- 洛谷4234最小差值生成树题解(最小生成树+LCT)
- 当公路的规则与秩序,被昇腾AI时刻守护
- 浅谈AI设计:理解玩家们对游戏的感知方式
- OTA (空中下载技术)
- 《CCNA学习指南:数据中心(640-911)》——1.3 物理网络拓扑
- Mysql断流_Hystrix 断流器
- GBase 8a Python Connector使用排雷
热门文章
- 解决Python查询Mysql中文乱码问题
- OO第四次总结学期总结
- 百度编辑器UEditor修改成支持物理路径
- Java八种基本数据类型的大小,以及封装类,自动装箱/拆箱的用法?
- 第1天线性表顺序存储
- WIN8系统中 任务管理器 性能栏 显示CPU利用率(已暂停)怎么回事?
- Python写入文件,但是发现文件为空,竟然未写入!
- SharePoint【学习笔记】-- SPWeb.EnsureUser()注意AllowUnsafeUpdates=true
- [转载] python+selenium定时爬取丁香园的新冠病毒每天的数据,并制作出类似的地图(部署到云服务器)
- [转载] Numpy_索引操作