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

代码如下:

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] 修改的都是局部变量,所以没有影响到全局变量么?


宝慕林4294392
浏览 811回答 1
1回答

人到中年有点甜

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

繁花如伊

给你画了一张图你就懂了,可以扫描一下二维码,我有文章讲。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java