为了账号安全,请及时绑定邮箱和手机立即绑定

【JAVA小白】 问关于局部变量和全局变量的问题,传入参数没有修改全局变量

【JAVA小白】 问关于局部变量和全局变量的问题,传入参数没有修改全局变量

宝慕林4294392 2019-03-18 22:01:56
代码如下:public class ChangeTest {    private String str = new String("original");    private char[] chars = {'小','刀','哥'};              public static void main(String[] args) {         ChangeTest changeTest = new ChangeTest();         changeTest.change(changeTest.str,changeTest.chars);         System.out.println(changeTest.str);         System.out.println(changeTest.chars);     }    private void change(String str, char[] chars){         str = "change success";         chars[0] = '大';     } }运行结果为:original大刀哥我的思考:我之前在做这个题目的时候,我觉得也是这个答案,但是我对这道题理解不是很深,我想知道到底为什么明明传入参数了,也修改变量了,但是成员变量就是没改变呢?是因为str和chars[0] 修改的都是局部变量,所以没有影响到全局变量么?
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

是因为你没有限定变量的命名空间(scope),没有加this的话,在方法内同名的局部变量,会隐藏实例域,所以修改的只是局部变量str和chars。

查看完整回答
反对 回复 2019-03-18
?
繁花如伊

TA贡献2012条经验 获得超12个赞

给你画了一张图你就懂了,可以扫描一下二维码,我有文章讲。

查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 810 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号