码迷,mamicode.com
首页 > 编程语言 > 详细

[JAVA]对象的别名问题

时间:2018-09-13 22:36:14      阅读:557      评论:0      收藏:0      [点我收藏+]

标签:情况   内容   传递   style   就是   Stub   操作   引用   obj   

对于JAVA的基本数据类型,a=b就是把b的内容复制给a。若接着又修改了a,对b是没有影响的。

但是在为对象“赋值”的时候,情况发生了变化。对一个对象进行操作时,我们真正操作的是对象的引用。

下面对两种情况下的别名问题进行说名:

1、对象赋值引发的别名问题

示例代码:

 

class Range{
    int level;
}

public class Assignment{
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Range r1 = new Range();
        Range r2 = new Range();
        r1.level = 1;
        r2.level = 2;
        //打印对象赋值前的r1.level和r2.level
        System.out.println("r1:"+r1.level+",r2:"+r2.level);

        r1 = r2;
        //打印对象赋值后的r1.level和r2.level
        System.out.println("r1:"+r1.level+",r2:"+r2.level);

    }
}

输出结果:

r1:1,r2:2
r1:2,r2:2

 

2、将对象作为参数传递给方法  产生的别名问题

示例代码:

class Letter{
    char c;
}

public class PassObject {
    static void Func(Letter l) {
        l.c = ‘z‘;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //System.getProperties().list(System.out);
        Letter l1 = new Letter();
        l1.c = ‘a‘;
        //函数调用之前
        System.out.println("1、1.c:"+l1.c);
        
        Func(l1);
        //调用func之后
        System.out.println("2、1.c:"+l1.c);

    }
}

输出结果:

1、1.c:a
2、1.c:z

 

[JAVA]对象的别名问题

标签:情况   内容   传递   style   就是   Stub   操作   引用   obj   

原文地址:https://www.cnblogs.com/zhengxl5566/p/9641727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!