星空网 > 软件开发 > Java

Java的堆(Heap)和栈(Stack)的区别

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。




原标题:Java的堆(Heap)和栈(Stack)的区别

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

虾皮自建物流Shopee Logistics Service(SLS):https://www.ikjzd.com/w/2068
Sirclo:https://www.ikjzd.com/w/2069
亚马逊手工平台handmade:https://www.ikjzd.com/w/207
印度WPC认证:https://www.ikjzd.com/w/2070
Montir:https://www.ikjzd.com/w/2071
和新电商:https://www.ikjzd.com/w/2072
从园岭新村到大梅沙海滨总站坐什么车:https://www.vstour.cn/a/363191.html
七月份适合去日本旅游吗 7月份去日本哪里好玩:https://www.vstour.cn/a/363192.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流