java中对象别名使用_JAVA中的别名现象

问题的提出:

在java中,对基本数据类型的赋值时,是将数据从一个地方复制到另外一个地方,当a=b时,将b的内容复制给a,若修改a时,b并不会受到这种修改的影响。

在对对象进行赋值时,当我们对一个对象进行操作时,实际上是对该对象进行引用,倘若将一个对象赋值给另一个对象,实际上是将引用复制到另外一个地方。

d6424fb7e567

图示

代码演示

class Tank{

float level;

}

public class Assignment {

public static void main(String[] args) {

Tank t1=new Tank();

Tank t2=new Tank();

t1.level=0.9f;

t2.level=10.05f;

System.out.print("t1.level:"+t1.level+",t2.level:"+t2.level);

t1=t2;

System.out.print("t1.level:"+t1.level+",t2.level:"+t2.level);

t1.level=0.7f;

System.out.print("t1.level:"+t1.level+",t2.level:"+t2.level);

}

}

结果输出:

t1.level:0.9,t2.level:10.05

t1.level:10.05,t2.level:10.05

t1.level:0.7,t2.level:0.7

为了避免别名情况出现,一般不对对象进行赋值,可使用t1.level=t2.level进行赋值,这样可以使得对象相互独立。

将一个对象传递给方法时,也会产生别名问题,代码示例

class Letter{

char c;

}

public class PassObject{

static void f(Letter y) {

y.c='z';

}

public static void main(String[] args){

Letter x=new Letter();

x.c='a';

System.out.println("x.c="+x.c);

f(x);

System.out.println("x.c="+x.c);

}

}

结果演示:

x.c=a

x.c=z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值