社区
Java SE
帖子详情
求高手回答
liyu1006
2010-06-27 09:22:16
我想知道Java中,String pool是存在什么地方的?数据区?还是堆或者栈上?
另外,局部变量存在栈上,那如果我吧一个对象以参数形式传递给一个方法,那么不就是值传递了?不是引用传递了?
小弟在此不胜感激!
...全文
140
13
打赏
收藏
求高手回答
我想知道Java中,String pool是存在什么地方的?数据区?还是堆或者栈上? 另外,局部变量存在栈上,那如果我吧一个对象以参数形式传递给一个方法,那么不就是值传递了?不是引用传递了? 小弟在此不胜感激!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
WYhack
2010-06-29
打赏
举报
回复
更加迷惑@1
dracularking
2010-06-29
打赏
举报
回复
是的,传参时不管是基础类型还是引用类型都是将值传给了它们的拷贝
heartraid86
2010-06-29
打赏
举报
回复
实参和形参是否都是同一块内存区域。比如C++中的"别名"传递就是指引用传递,而C++的指针以及Java的引用都是值传递。
我个人感觉很多人误认为引用传递是指传递“地址”,都是因为这个叫做“call by reference”的名字造成的。
http://hxraid.javaeye.com/blog/428856
fantasy471503202
2010-06-28
打赏
举报
回复
String pool的位置一楼较为准确,对象作为参数传递时,传递是一个引用,而不是对象本身。
dracularking
2010-06-28
打赏
举报
回复
还有相同内存空间是什么
dracularking
2010-06-28
打赏
举报
回复
ls,传递严格来说应该是pass by XXX,还有不同内存空间是什么?
c15852462458
2010-06-28
打赏
举报
回复
heartraid86
2010-06-28
打赏
举报
回复
JVM会为每一个加载的class建立一个叫做“方法区”的运行时内存空间。每个类的常量池以特有的数据结构(不同JVM实现的形式不同)存放在对应的方法区中。
另外,JVM的每个线程都有自己的Java栈,当线程调用某一个方法时就会创建一个"栈帧"压入Java栈中。栈帧中就有局部变量区和操作数栈,因此方法见参数传递,实际上是从某一个栈帧的局部变量区中取出值存放在新堆入的栈帧的局部变量区中。也就是“值传递”。
PS1: 《Thinking in Java》并不适合初学者,而且太啰嗦了。它恨不得把J2SE的所有技术(包括JVM)都写进去。搞得读起来很伤心。
ps2: 我个人很反对两个计算机术语:值传递call by value,引用传递 call by reference。这两名字取得太烂了。应该叫做“相同内存空间的值传递”和“不同内存空间的值传递”,这样就恰当些。
dr_lou
2010-06-28
打赏
举报
回复
强烈建议,学习java一年甚至2年后再读thinking in java.
keeya0416
2010-06-28
打赏
举报
回复
[Quote=引用楼主 liyu1006 的回复:]
我想知道Java中,String pool是存在什么地方的?数据区?还是堆或者栈上?
另外,局部变量存在栈上,那如果我吧一个对象以参数形式传递给一个方法,那么不就是值传递了?不是引用传递了?
小弟在此不胜感激!
[/Quote]
把对象以参数形式传递给方法时
是把对象的引用的值传过去的
即 传进去的是 对象在堆中的地址
所以java里有“不能改变参数的值,只能改变参数的属性值”一说
java里没有引用传递
龙四
2010-06-27
打赏
举报
回复
你只需知道String有个常量池就足够了,至于存在哪里,不同公司的jdk实现可能不同,IBM的jdk和Sun的jdk兴许就不同
火龙果被占用了
2010-06-27
打赏
举报
回复
又是这种问题!存在栈上、存在堆上与编制程序的影响大么?
PS:建议把 Thinking in Java 这书扔了或者送人。
dracularking
2010-06-27
打赏
举报
回复
Sun的JVM,interned字符串是被放置在RAM的一个特殊的池中叫作perm gen
方法参数本来就是值传递,传的是引用的拷贝
【机器学习必知必会系列】
高手
必备数学教程-线性代数
【机器学习必知必会系列】
高手
必备数学教程-线性代数 机器学习&人工智能的
高手
必须懂数学,没有数学基础,只能做肤浅的事。姚老师,精选来自麻省理工可汗学院精品数学课程,呕心沥血15个日夜,5本手写讲义,涵盖...
无法打开ip上的服务控制管理器数据库
今天想通过计算机管理访问另一台计算机的服务 我的电脑-->管理-->另一台计算机-->输入目标ip-->进入到另一台计算机管理中-->点击服务时就提示“无法打开“ip”上的服务控制管理器数据库" 错误5:拒绝...
求
高手
回答
啊~!
商道
高手
不显示服务器,商道
高手
有多少版本-商道
高手
有多少客户端
商道
高手
有多少客户端?商道
高手
有哪些平台?商道
高手
有哪些版本?商道
高手
拥有官方平台版本、十几个不同手机渠道、还有十几个不同游戏联运平台版本,加起来会有几十个不同版本的商道
高手
游戏。各个平台之间账号数据...
c语言
求
三门课总成绩,C语言编程,
求
高手
编写程序
求
某班20位学生三门课(英语,数学,语文)总成绩,并按照总成绩从大到小...
C语言编程,
求
高手
编写程序
求
某班20位学生三门课(英语,数学,语文)总成绩,并按照总成绩从大到小关注:212答案:3mip版解决时间 2021-01-17 10:35提问者夜落花台2021-01-16 22:47C语言编程,
求
高手
编写程序
求
某班20...
当面试官问到以后的职业规划,这样
回答
绝对称赞你是
高手
!(二)
回答
样板:我想踏踏实实干好本职工作,并不断提升自己,是自己能伴随公司共同成长。 2.你的职业规划是什么?
回答
样板:我希望从现在开始,五年之内能够在目前申请的这个职位上沉淀下来,熟练掌握这方面的知识和...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章