热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Integer自动拆箱问题

如下代码:Integera10;intba;变量a,b都在栈中这应该没什么问题,但a中存放的是什么,是地址,还是10b中呢,存放的是地址还是10
如下代码:
Integer a=10;
int b=a;
变量 a,b都在栈中这应该没什么问题,但a中存放的是什么,是地址,还是10
b中呢,存放的是地址还是10

11 个解决方案

#1


谁说ab都在栈中的。。。又是哪本书误人子弟啊

#2


a是包装类型(对象),存在堆中;b是基本类型,存在栈中。这个要明白!

#3


a和b这两个变量确实放在栈中,但是a是引用一个对象,所以a在栈中存放的是指向对象的地址的值。b在栈中存放就是10

#4


a堆,b栈,ab存的都是内存地址

#5


integer是个类,所以他的对象存放的是引用即地址,int b是个基本类型,里面就是存放着一个值。

#6


a是对象,对象存在堆区,b是基本类型,自然存在栈里

#7


Integer a /* 这个本身在栈里面,但是他里面的“值”是后面那个的地址 */ = 10; /* 这个在堆里面 */
int b /* 这个本身也在栈里面,他里面的值就是纯粹的数值,而不是地址,就是10 */ = a;
 

#8


a,b 都在栈中,它们都是引用,同时指向常量池中的10.常量池在方法区,而非堆栈

#9


楼主搞清两个概念:
栈内存:存放基本类型和对象的引用变量
堆内存:存放由new创建的对象和数组。

Integer a=10 说穿了就是 Integer a= new Integer(10);
b = 10 ;就是一个基本类型
所以a是在堆中,b在栈中。

#10


引用 1 楼 ticmy 的回复:
谁说ab都在栈中的。。。又是哪本书误人子弟啊

说的是变量a b ,没问题吧。
你考虑的是在类中还是函数中定义的问题?

#11


引用 3 楼 tzp19910827 的回复:
a和b这两个变量确实放在栈中,但是a是引用一个对象,所以a在栈中存放的是指向对象的地址的值。b在栈中存放就是10

正解

推荐阅读
author-avatar
被爱的小花花_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有