你的位置:首页 > Java教程

[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。




泰国旅游路线泰国旅游多少钱跟团泰国旅游网泰国特价旅游泰国旅游时间中山伊泰莲娜diy地带特色?伊泰莲娜diy地带有什么好玩的? 惠州三寨谷度假村优惠价?惠州龙门三寨谷网站? 惠州龙门南昆山三寨谷住宿方便吗?惠州三寨谷度假村在哪里住? 龙门三寨谷有住的地方吗?惠州龙门三寨谷住一晚多少钱? 心花一路放 那些适合一个人疗伤的偏门旅游地[二] 恩平牛江名人山庄在哪里?牛江名人山庄旅游路线? 从化快活田心农家乐房价?快活田心农家乐住一晚多少钱? 从化快活田心农场坐什么车去?从化怎么去快活田心农场? 增城大丰门漂流门票有优惠吗?广州增城大丰门漂流价格? 森波拉门票学生证免费吗?清远森波拉学生优惠政策? 海南野生动物园电话?海南野生动物园门票预定网站? 森波拉奇妙世界暑假优惠活动?清远森波拉奇妙世界暑假学生有什么优惠? 11月云南腾冲天气怎样?穿什么衣服合适? 桂林苏东神宫好玩吗? 11月九寨沟天气怎么样?需要穿什么衣服? 桂林旅游哪里好? SQCB7M110FAJWE Datasheet SQCB7M110FAJWE Datasheet LD031C103JAB4A Datasheet LD031C103JAB4A Datasheet 04025C181JAT2A Datasheet 04025C181JAT2A Datasheet 湖南凤凰城住宿 湖南凤凰城住宿 湖南凤凰城住宿 12月7号 12月7号 12月7号 海上丝绸之路博物馆 海上丝绸之路博物馆 海上丝绸之路博物馆