Java中局部变量int基本类型变量在栈上是如何存储的,是内存地址还是值?

```inta=1;intc=1;System.out.println(System.identityHashCode(a));System.out.println(Sy... ```
int a = 1;
int c = 1;
System.out.println(System.identityHashCode(a));
System.out.println(System.identityHashCode(c));
System.out.println(System.identityHashCode(1));
a = 127;
c = 127;
System.out.println(System.identityHashCode(c));
System.out.println(System.identityHashCode(c));
a = 128;
c = 128;
System.out.println(System.identityHashCode(a));
System.out.println(System.identityHashCode(c));
```
结果:

```
865113938
865113938
865113938
1442407170
1442407170
1028566121
1118140819
```
System.identityHashCode输出的是变量内存地址哈希值?
为什么a变量和c变量的内存地址一样?
128输出的是却不一样,而-128~127之间的输出的是一样的,是不是说明栈上存储的是内存地址呢?
还是说System.identityHashCode输出的不是变量内存地址?
以上的代码输出怎么理解?
展开
 我来答
dagewxw
2019-07-05 · TA获得超过5929个赞
知道大有可为答主
回答量:3523
采纳率:67%
帮助的人:987万
展开全部
  1. 你这个问题,跟基本类型没有关系。

  2. 调用该方法, 该方法的参数为Object,所以会涉及到自动装箱, 也就是会为基本类型创建对象。

  3. 自动装箱,

    为了避免重复创建, 在-128到127这256个数是取SMALL_VALUES = new Integer[256]里面的预先创建好的对象,也就是装箱后引用的是相同的对象。

    不在这个范围的整型值就会重新new一个对象,自然hash值也就不同了。

百度网友8af3680
2019-07-05
知道答主
回答量:11
采纳率:0%
帮助的人:7692
展开全部
当然是内存地址呀。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式