荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: 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软件 网络书店