Jasonkowk 2015-10-06 12:54
浏览 2161

java数据在内存中的存放问题

谢谢查看。
问题是这样的,作为java新手,最近老搞不明白数据在内存中到底存放位置的问题。查了许多资料后,得出个结论,请有错误的帮忙指正,谢谢。
基本类型的数值会存放在栈中,执行效率高;引用对象(不包括String类型)的数据放在堆中,堆灵活性高,容量可变长。
但是编译器在编译时候,基本类型中部分,称为直接量会为了效率高会直接生成放在常量区,其他都会在栈中生成,而且经过优化,如果是同一生命周期内栈数据是可以共享的,也就是有相同的数据的变量可以指向同个栈地址,方便节省空间。
String类型,如果是String s1 = "xxx"; 将把xxx先在方法区中的常量池生成,再让s1指向此地址;而String s2 = new String("abc"); 会在堆中生成一个String对象,而且查找常量池是否有abc,若没有就再建个,堆中对象指向常量池abc,变量s2指向堆中对象。总结就是常量池是专门用来处理字符串的。
以上,请指教。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥30 python代码,帮调试
    • ¥15 #MATLAB仿真#车辆换道路径规划
    • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
    • ¥15 数据可视化Python
    • ¥15 要给毕业设计添加扫码登录的功能!!有偿
    • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
    • ¥15 微信公众号自制会员卡没有收款渠道啊
    • ¥100 Jenkins自动化部署—悬赏100元
    • ¥15 关于#python#的问题:求帮写python代码
    • ¥20 MATLAB画图图形出现上下震荡的线条