已有101人关注
P82的内存示意图和p92的内存示意图,不是相互矛盾了吗???
发表在Java图书答疑 2019-07-24 《Java从入门到精通(第4版)》第5章 字符串 82页-92页
是否精华
版块置顶:

P82的内存示意图和p92的内存示意图,不是相互矛盾了吗???
分享到:
精彩评论 5
709446175_1563945577
学分:4 LV1
2019-07-24
沙发
p92的题
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-07-24
板凳

并不冲突,这俩个图展示了通过两种不同方式创建字符串变量会出现两种不同的引用结果

709446175_1563945577
学分:4 LV1
2019-07-24
地板

根号申 发表于2019-07-24 15:23

并不冲突,这俩个图展示了通过两种不同方式创建字符串变量会出现两种不同的引用结果

老师,您是说那个 new 关键字所造成的吗?那它的作用是啥?
还有一个问题:

int a=1;
int b=a;
b=2;
为什么输出的a为1,b为2呢?a和b不是指向同一个内存区域吗?把b的值改变为2,a的值不也会变为2吗?

int a[]={1,2,3}
int b[]=a;
b[0]=7;
输出为啥数组a的值也变了,如果a和b指向同一个内存区域,那和我上面的例子不是又矛盾了吗?

问题有点多,麻烦老师了!
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-07-25
4L

建议你查阅一下资料,了解一下什么叫引用类型变量。基本类型变量指向的是内存中的一个值,而引用类型变量指向的是一块内存区域。数组、对象都是引用型变量。String是引用型类型,只不过JVM对这个类型单独做了优化,可以直接赋值,本质上仍然是创建了一个匿名对象。字符串是常量,不使用new关键字创建String,JVM会默认从常量池中取值,若常量池里没有再创建新的。

709446175_1563945577
学分:4 LV1
2019-07-25
5L

根号申 发表于2019-07-25 09:28

建议你查阅一下资料,了解一下什么叫引用类型变量。基本类型变量指向的是内存中的一个值,而引用类型变量指向的是一块内存区域。数组、对象都是引用型变量。String是引用型类型,只不过JVM对这个类型单独做了优化,可以直接赋值,本质上仍然是创建了一个匿名对象。字符串是常量,不使用new关键字创建String,JVM会默认从常量池中取值,若常量池里没有再创建新的。

好的,感谢!
首页上一页 1 下一页尾页 5 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照