zoukankan      html  css  js  c++  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。

  • 相关阅读:
    month(字段)、year(字段)
    简单音乐播放器实现
    Mp3音乐文件列表实现
    读取SD卡中所有MP3文件
    java基础复习 之 多态
    JavaWeb学习过程 之c3p0的使用
    JavaWeb学习过程 之MVC模式下的查询
    行转列:总结
    如何快速禁用约束 (解决ORA-O2266问题)
    PLSQL Developer 11 使用技巧(持续更新)
  • 原文地址:https://www.cnblogs.com/mstk/p/4615639.html
Copyright © 2011-2022 走看看