美文网首页
JAVA中的别名现象

JAVA中的别名现象

作者: 苏酥Su | 来源:发表于2019-01-29 20:01 被阅读0次

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

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

图示

代码演示

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

相关文章

  • JAVA中的别名现象

    问题的提出: 在java中,对基本数据类型的赋值时,是将数据从一个地方复制到另外一个地方,当a=b时,将b的内容...

  • Java操作符和流程控制

    操作符和流程控制内容只选取了容易忽略的部分 别名现象 “别名现象”是Java操作对象的一种基本方式。 操作符重载 ...

  • Java中的别名问题

    运行结果 对每个Tank类对象的level域都赋予了一个不同的值,然后,将t2赋给t1,接着又修改t1。在许多编程...

  • 第三章:操作符

    在最底层,java中的数据是通过使用操作符来操作的。 副作用:有些操作符会改变操作数自身的值。 别名现象:对象赋值...

  • Java 别名(Aliasing)

    别名 (Aliasing) 别名,顾名思义,是有别于现在名字的另一个名字,但指的是不是同一个人或事物呢?比如,你上...

  • 全局配置文件-TypeAliases-别名

    typeAliases:为某个java类型起别名-->属性1)type:指定要其别名的类型全名称,默认别名就是类名...

  • python居家旅行必备的pyenv,virtualenv

    不论是java还是c++,都有库依赖的问题,c++中叫dll hell,java中也有类似的现象,java也存在不...

  • Java学习day-60:MyBatis框架(2)

    一、MyBatis中标签和属性的配置: 1.TypeAliases标签配置别名: 用于给 java 类型定义别名,...

  • Fluent Python 笔记 —— 对象引用、可变性及其影响

    别名 Python 中的变量类似于 Java 中的引用式变量,可以理解为附加在对象上的“标注”。 比如下面代码中的...

  • mybatis标签配置

    TypeAliases 别名 类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余...

网友评论

      本文标题:JAVA中的别名现象

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