测试新人001 2022-05-14 19:00 采纳率: 66.7%
浏览 10
已结题

java基本类型和引用类型他们在内存中创建值的过程步骤应该不一样的吧

int A;
String B;
string是引用类型,那B应该会在堆中开辟一片空间出来 地址 假如B=20 那应该就会拿到20的地址 给B?
那A呢? 难道都不用在堆创建对象了? 例如A=40 那就直接拿40本身有的空间地址 直接给了A?

两个问题 希望各位牛人解惑一下

  • 写回答

1条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-05-14 19:28
    关注

    int A;存在栈
    String B;存在栈或堆。

    详解
    int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。

    String是一个特殊的包装类数据。可以用:

    String str = new String("abc");

    String str = "abc";

    两种的形式来创建,第一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。

    而第二种是先在栈中创建一个对 String类的对象引用变量str,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str指向”abc”,如果已经有”abc” 则直接令str指向“abc”。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月24日
  • 已采纳回答 5月16日
  • 创建了问题 5月14日

悬赏问题

  • ¥15 我这模型写的不对吗?为什么lingo解出来的下面影子价格这一溜少一个变量
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波