关于字符串类型的疑点

关于字符串类型的疑点


        老师,我试着新建一个测试类,里面有个字符串属性成员。我尝试这用不同方法修改属性成员的 值,发现第三种不能修改,会报错:赋值的左边必须是变量,这是为什么啊?

        另外,我先前记得String是创建对象的时候就已经分配好内存空间不能更改了的(除非是StringBuffer对象),要想改变Striung对象字符串的值必须new一个新的字符串对象重新赋值。好像之前是不能这样改的,可是现在发现居然直接更改字符串对象的值不会报错,这里面到底是什么原理啊??http://img1.sycdn.imooc.com//climg/5cfc96e60001712e05330321.jpg

http://img1.sycdn.imooc.com//climg/5cfc96e6000196ec05500482.jpg


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,可以这样理解哦~

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

吃吃吃鱼的猫 2019-06-12 10:24:32

同学你好,被引号括起来的字符串内容(即字符串对象)是指哪里呢?请同学详细描述一下问题,方便老师为同学解答~

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 哆丶哆 #1
    好的,比如String a="123",就是指这里的"123",因为先前上面回复我的老师说“在java中所有能用引号括起来的字符串内容都叫字符串对象哦!”,所以有此疑问
    2019-06-12 12:52:20
好帮手慕小班 2019-06-09 19:09:50

同学你好,1、第一种办法是将对象的引用地址指向了一个新的内存地址!

2、getStr()是一个方法,这个方法是没有具体地址的哦,而是成员变量的返回值,所以不能直接赋值,例如:

http://img1.sycdn.imooc.com//climg/5cfce88b000171f004650284.jpg

可以通过接收变量,来接收一个新的地址!

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 哆丶哆 #1
    那请问是不是这样理解: Java中定义一个String对象,它实质是一个内存地址的引用,给它赋值就相当于把一个内存地址过去,让这个String对象指向这个地址,从而可以获得这个地址的内容。后面每重新赋值一次就相当于生成了一个新的内存空间,让它指向新的内存空间。 而我上面那个this.Str()获得不是引用,而是那个地址所指定的内存里的具体的字符串内容
    2019-06-09 22:58:14
  • 好帮手慕小班 回复 提问者 哆丶哆 #2
    同学你好,前面的说法是正确的哦!但是"那个地址所指定的内存里的具体的字符串内容"这句话的表述是有错误的哦,正确说法是所指定的内存里的具体的字符串对象,在java中所有能用引号括起来的字符串内容都叫字符串对象哦! 如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
    2019-06-10 10:08:34
  • 提问者 哆丶哆 #3
    谢谢指点,那被引号括起来的字符串内容(即字符串对象)是不是可以理解成一个常量,所以我图片上那个报错的代码才会显示说:赋值的左边必须是变量
    2019-06-11 23:57:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师