荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: heiheihei (瓦尔特), 信区: Java
标  题: java手记(1)--java的赋值
发信站: 荔园晨风BBS站 (Wed Nov  7 11:45:42 2001), 转信

java手记(1)--赋值语句
                                        瓦尔特

一般来说,在进行变量的赋值时,仅仅表示“值的传递”,也就是说,
如果对变量A,B进行赋值运算A=B的话,仅仅将A的值修改为B的值。如果
接下来再进行B=2的运算,并不会影响A的值。

但进行对象的赋值时,表示的是句柄的赋值。也就是说对象C=D,其结果
是C和D指向同一个对象。这样造成的结果就与前边不同了。

例子程序:

class Number{
int i;
}
public class Assignment
{
    public static void main(String args[])
    {
        Number n1=new Number();
        Number n2=new Number();
        n1.i=10;
        n2.i=999;
        System.out.println("1: n1.i: "+n1.i+",n2.i: "+n2.i);
        n1=n2;
        System.out.println("1: n1.i: "+n1.i+",n2.i: "+n2.i);
        n1.i=200;
        System.out.println("1: n1.i: "+n1.i+",n2.i: "+n2.i);
    }
}
运行结果:
C:\myjava>java Assignment
1: n1.i: 10,n2.i: 999
1: n1.i: 999,n2.i: 999
1: n1.i: 200,n2.i: 200

进行n1=n2的赋值后,再修改n1,n2也发生了改变。说明n1和n2指向同一
对象。

这时,有一个句柄被丢失掉了。(被内存垃圾处理器回收)

这种现象叫“别名”,是java语言操作对象的一种方式。

                            瓦尔特学自thinking in java


--
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 202.118.1.82]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店