博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java的堆(Heap)和栈(Stack)的区别
阅读量:5240 次
发布时间:2019-06-14

本文共 824 字,大约阅读时间需要 2 分钟。

Java中的堆(Heap)是一个运行时数据区,用来存放类的对象;栈(Stack)主要存放基本的数据类型(int、char、double等8种基本数据类型)和对象句柄。

例1

int a=5;        int b=5;        System.out.println(a==b);

以上例子中,编译器首先处理int a=5,首先在栈中创建一个引用a,然后在栈中查找是否有5这个值,如果有,则将a指向5,如果没有,则创建一个5,再将a指向5。当处理int b=5时,由于栈中肯定已经存在5,直接将b指向5,这样a和b都指向5,因此a==b为true。

例2

int a=5;        int b=5;        System.out.println(a==b);                b=6;        System.out.println(a==b);

以上例子中,给b重新赋值以后,a和b不是指向同一个值,因此第一个a==b为true,第二个a==b为false。

例3

String a="ABC";        String b="ABC";        String c=new String("ABC");        String d=new String("ABC");        System.out.println(a==b);        System.out.println(a==c);        System.out.println(c==d);

以上例子中,String是一种对象,因此存放在堆中,给a和b赋值的过程和例1差不多,只不过是在堆中进行的。c和d使用了关键字new,因此不管堆中是否已经有这个值,都在堆中新建一个值,因此输出结果为true,false,false。

转载于:https://www.cnblogs.com/mstk/p/4615639.html

你可能感兴趣的文章
那些年我们刷过的手机
查看>>
python--数据类型--1
查看>>
简单计算器
查看>>
代码变量、函数命名神奇网站
查看>>
redis cli命令
查看>>
阿里云容器镜像加速器配置
查看>>
Problem B: 占点游戏
查看>>
css3基础篇二
查看>>
进程间的八种通信方式----共享内存是最快的 IPC 方式
查看>>
DPDK初始化流程
查看>>
MEF: MSDN 杂志上的文章(14) 稳定的组合
查看>>
python常用模块之sys, os, random
查看>>
HDU 2548 A strange lift
查看>>
Linux服务器在外地,如何用eclipse连接hdfs
查看>>
react双组件传值和传参
查看>>
BNU29140——Taiko taiko——————【概率题、规律题】
查看>>
POJ 2289——Jamie's Contact Groups——————【多重匹配、二分枚举匹配次数】
查看>>
java 得到以后的日期
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
python安装easy_intall和pip
查看>>