美文网首页
【初级程序员最容易犯的错之一】引用类型的赋值语句

【初级程序员最容易犯的错之一】引用类型的赋值语句

作者: Allen的光影天地 | 来源:发表于2018-07-04 08:29 被阅读12次
public class Assignment {
    private int m = 0;
    public void increment(){
        m++;
    }

    public static void main(String[] args) {
        Assignment a = new Assignment();
        a.increment();
        System.out.println(a.m);
        Assignment b = a;
        b.increment();
        System.out.println(a.m);
    }
}

举个上面的小例子,输出结果是1,2;

  • 错误想法认为b和a无关,所以调用b.increment()的时候,不会对a的值造成影响
  • 剖析:错误原因是语句Assignment b = a 这句话执行后,仅仅是对于a的那部分内存空间多了一个b指向的引用。换句话说,a是它内存空间的门牌号,b同样是这块内存空间,只不过换了个别名。就好比小明还有个一个英文名字xiaoming,指得都是他这个人。
    这样的话我们应该很清楚了,对b修改的时候,同样是对同一块内存空间修改,所以,当我们用a来呼唤这块内存的时候,发现m已经不再是原来的m了。

相关文章

网友评论

      本文标题:【初级程序员最容易犯的错之一】引用类型的赋值语句

      本文链接:https://www.haomeiwen.com/subject/mdbsuftx.html