Java内存分配续
来源:互联网 发布:端口定义 编辑:程序博客网 时间:2024/06/05 19:55
以下面的代码表示八大基本类型(分三种情况讨论)
1、
int s1 = 10; int s2 = 10; //Integer s2 = new Integer(10); System.out.println(s1==s2);//true;由于int为基本类型,那么创建的引用变量s1,s2和值便将存储在桟中。如图所示
由于在桟中有数据共享机制
第一步,首先将s1这个引用存储在桟中,然后再桟中查找是否有“10”这个值,很明显没有,然后创建一个内存将“10”存入其中。
第二步,同样在桟中创建引用s2,然后查找是否有“10”(数据共享),发现已经有了,那么就不必再创建了,直接将引用s2指向10的地址就行了,所以他的存取速度比较快。
2、
Integer s1 = new Integer(10); Integer s2 = new Integer(10); System.out.println(s1==s2);很明显,有关键字new,便显式串讲对象,通过new关键字虽然s1、s2这个引用对象仍存在桟中,但是其值则存放在堆中,
很明显,堆中不提供数据共享,所以他们指向的是不同的地址单元,所以结果为false;
3、
int s1 = 10;//(1) Integer s2 = new Integer(10);//(2) System.out.println(s1==s2);//true
通过上面的两步执行分别建立如上图的内存分配,按理说s1==s2,应该为false才对。但是由于包类型有自动拆箱装箱的功能,所以,在比较“==”的时候,会将s2拆箱,所以结果为true。
4、
注意的是,
1 0
- Java内存分配续
- C++ 内存分配 vs java内存分配
- JAVA中的内存分配
- java内存分配初探
- JAVA中的内存分配
- java内存分配
- 初探java内存分配
- java内存分配
- java内存分配研究
- java内存分配初探
- java中的内存分配
- java中内存分配
- java的内存分配
- Java 内存分配
- java内存分配图
- Java内存分配
- java中的内存分配
- java 内存分配
- 定时清理Oracle数据库中不活动的session的脚本,解决ora-12516问题
- Unity3D学习笔记(3)——Unity脚本编译顺序
- HTML(1)——body和title
- C++中的基本控制结构
- StarUML类图创建教程
- Java内存分配续
- self parent this 区别
- erlang 四大 behaviour【转】
- Unity3d实现人物跳跃
- Rmarkdown中文实现
- map容器的初体验
- Python爬虫(2)——爬取微博内容
- 《重构-改善既有代码的设计》读后感
- 配置Log4j(很详细)