String中final的问题

String中final的问题

既然引用类型的变量初始化后不能指向另一个变量,基本数据类型的变量初始赋值之后不能更改那么

String str = new String("11");
        str = "22";
        System.out.println(str);

这段代码中String类型的变量str是改了什么呢?

正在回答

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

2回答

        同学你好,贴出代码中是将str的地址指向了一个新的地址哦!这里str的引用并没有被final修饰哦,例如:

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

final修饰的对象不能指向另一个变量哦!

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

提问者 啊棉 2019-07-24 17:54:29

这里是指向的地址变成了堆中新创建的“22”这个内存的地址么。如果常量池中有“22”就直接指向“22”么。

  • 同学你好,String str = new String("11"); 这里的str指向的是在堆中创建的对象的地址,而str = "22";是将str指向了新的位置,常量池中的"22"哦! 很棒呐,继续加油!祝:学习愉快~
    2019-07-24 18:10:05
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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