关于java的一个基础问题。

Stringstr=newString("123"),我知道string是引用类型,str存储的是地址,那为什么直接调用str时返回的是字符串"123",而不是实际存储"... String str = new String("123"),我知道string是引用类型,str存储的是地址,那为什么直接调用str时返回的是字符串"123",而不是实际存储"123"的地址? 展开
 我来答
回忆_若染尘埃
2016-12-21 · TA获得超过107个赞
知道小有建树答主
回答量:280
采纳率:0%
帮助的人:162万
展开全部

JVM 内存分栈、 堆、方法区三个区域。
栈:存储局部变量、引用地址
堆:存储 new 的对象
方法区:存储类的代码、 static 变量和方法、常量池


当你new的时候,在栈中创建引用变量str,地址:0x11(指向堆中的值),在堆中存放str的值123,当你使用str比如②的打印,就根据0x11这个地址去对中找到值,再打印出来。


关于字符串存储位置你可以去研究下,这个图稍微还有有点错,但意思表达明白了。

望采纳!!!

YZHvince
2016-12-21 · 超过23用户采纳过TA的回答
知道答主
回答量:215
采纳率:0%
帮助的人:34.7万
展开全部
String a="你好"; a是地址不假,但是地址指向的不是中文的你好,而是编码转换的。。
//比如:System.out.println((char)20320); 20320就表示“你”,而不是直接保存的汉字。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式