一个类的属性是引用类型,那创建对象时候堆里保存的是地址还是值呢?

aaaalongaaaa 2013-12-22 01:51:18
public class User {

public String name="你好";
public String dihzi="你好";

}
===========================================
//测试类
User u=new User();
System.out.println(u.name==u.dihzi);
System.out.println(u.name.equals(u.dihzi));
==========================================
输出结果
true
true
============================================
我的问题是,单独看String类,栈和堆我都知道怎么回事,这个就不说了!
现在是在User类里的属性又是一个引用类型(String类)的时候,当你
new User()的时候,按理说应该是u在栈里,然后new User()在堆里开辟一个内存空间,然后存值。
但现在属性发现是String类,又是一个引用类型了,那这种情况下,怎么办呢?
但可以肯定的是,String类自己肯定是引用变量在栈,对象在堆,这个是一定的,我现在的
疑问就是:
1把String类的对象在堆里的值,复制一份给User类在堆里的对象吗?
2还是说把String类的在栈的地址,复制给User类在堆里的对象?
3还是说User类在栈内存里保存的是String类在栈的地址,而不是堆里u对象的地址?也就是说当
u.name的时候,我是直接去调用String类。

通过上面的结果,我猜3的可能性比较大,因为如果是1,2的话,你可以发现当你new User()的时候,会分别在堆内存开辟2块地址,一个地址是给name 一个地址是给dizhi ,这也表明这俩地址显然是不同的!
但是我上面u.name==u.dihzi 结果确实true 这说明比较的肯本不是User类的对象地址,而是String类的对象地址。

如果是2的话,虽然对象里有String类的地址,可以去找到String类,但是很麻烦,从User栈里找到堆地址,在根据堆里面的地址找到String栈的地址。。。。那还不如直接在User类的栈地址里直接存一个String类的栈地址,省了很多环节。

所以我猜测3的可能性比较大。

不知道理解的对不对,求懂的指教下!

补充下:我的重点不是问String类的堆栈情况,而是在创建User类对象的时候,开辟的堆空间里保存的究竟是什么呢?因为我知道String类也是一个类,他的引用变量在栈,对象在堆,堆里保存的值,现在User也是一个类,他属性又是一个引用类型,那User的对象在堆里怎么保存这个引用类型?或者说在堆里怎么处理这个引用类型的属性?
是保存的String类型里的值?还是保存一个String类型的地址让User对象去调用?
...全文
1448 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
姜小白- 2013-12-25
  • 打赏
  • 举报
回复
coolbamboo2008 2013-12-25
  • 打赏
  • 举报
回复
堆里保存的是值(对象) 地址(也就是引用)保存在栈中
teemai 2013-12-22
  • 打赏
  • 举报
回复
User对象保存在堆中。变量保存内存地址。
WPS Office 2019 是一款功能丰富的办公软件套装,它整合了文字、表格、演示、PDF 等组件,具备体积小巧、功能丰富、兼容性强等特点,能满足日常办公的多种需求。 功能组件丰富:包含 WPS 文字、WPS 演示、WPS 表格、WPS PDF 等组件,可用于文档编辑、表格计算、幻灯片制作、PDF 处理等,支持 DOC、DOCX、XLS、XLSX、PPT 等多种格式,能与 Microsoft Office 较好地兼容。 支持云存储与协作:用户登录 WPS 账号后,可实现多终端、跨平台的数据同步,还能与他人协同办公,文档可通过微信、QQ 等社交平台一键分享。 PDF 功能强大:提供沉浸式 PDF 阅读体验和稳定的编辑服务,支持一键编辑 PDF 文档内容。借助 OCR 技术,可精准转换文档、表格、PPT、图片等格式的文件。 界面设计优化:具有全新视觉设计,默认皮肤舒适清爽,还支持桌面背景、界面字体、皮肤、格式图标等个性化设置。同时,文档标签可拖拽成独立窗口或合并,用户可自主选择文档显示方式,还能将文件放置在不同工作区,便于分浏览与管理。 内置实用工具:内置了简单的网页浏览器,点击文档中的链接会默认用其打开,可进行网页添加到首页、另存为 PDF 等操作。此外,“应用中心” 集成了输出转换、文档助手、安全备份等多种实用功能。 模板资源丰富:稻壳商城提供了大量模板、范文、图片等素材资源,涵盖求职简历、总结计划、合同协议等常见文档型,方便用户快速创建专业文档。 表格功能特色突出:支持通过关键词快速切换工作表,设有阅读模式和护眼模式。还可分合并单元格,以及拆分合并单元格并填充内容。公式编辑器中可轻松完成公式嵌套,筛选时可通过 “仅筛选此项” 一步完成特定筛选,还能根据筛选条件生成动态分析图表。另外,“特色功能” 和 “智能工具箱” 菜单中包含 PDF

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧