问题的提出:

在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中的别名现象相关推荐

  1. java修改list中对象的值_Java中List集合的一点总结

    为什么要用接口引用指向实现类的对象? 这种写法其实java多态的表现形式 多态的定义: 指允许不同类的对象对同一消息做出响应. 即同一消息可以根据发送对象的不同而采用多种不同的行为方式. (发送消息就 ...

  2. java存储对象的数组_Java中数组可以存储对象吗?

    数组是一个容器,可以存放固定数量的项目,这些项目应该是相同的类型.大多数数据结构使用数组来实现它们的算法.以下是理解数组概念的重要术语.元素:存储在数组中的每个项目都称为元素. 索引:数组中元素的每个 ...

  3. java中对象的生存期_Java中对象的生存周期

    文章目录 JAVA对象的生存周期 1.创建阶段(Created) 为对象分配内存需要考虑的问题 2.应用阶段(In Use) 3.不可见阶段(Invisible) 4.不可达阶段(Unreachabl ...

  4. java中对象字节数_JAVA中求解对象所占字节大小

    该类为cache4j缓存框架中的工具类方法,该方法实现了两个接口 接口1:计算对象在内存中所占字节数 接口2:复制对象,实现深度克隆效果,实现原理为先序列化对象,然后在反序列化对象:返回一个新的对象, ...

  5. java中对象作为参数_java中对象引用,特别作为参数时候注意事项

    1.基础知识 1Byte=8bit Byte和byte一个是对象,一个是基本数据类型而已,都是8bit 2.java中对象引用和值传递: (1).java中若一对象当作参数就是相当于,将变量对应的指向 ...

  6. java 给对象创建实例_Java中创建(实例化)对象的五种方式

    Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...

  7. java list 对象 json字符串_Java中Json字符串直接转换为对象的方法(包括多层List集合)...

    使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...

  8. java 数组对象属性数组_Java中数组的特性

    数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具有固定的长度,并且在内存中占据连续的空间.在C,C++等语言中,数组的定义简洁清晰,而在java中确有一些会让人迷惑的特性. ...

  9. java resultset 映射到实例_Java中,将ResultSet映射为对象和队列及其他辅助函数

    关于对象关系映射(ORM)在数据库访问中用到的最多,在Java中,很多库都试图将一个ResultSet映射为一个自定义的Java Bean对象或队列,下面是我的实现 1 从ResultSet中读取数据 ...

  10. java input是关键字吗_Java中对象的串行化(Serialization)和transient关键字 - 金色阳光...

    Java中对象的串行化(Serialization)和transient关键字: 对象的串行化(Serialization) 一.串行化的概念和目的 1.什么是串行化 对象的寿命通常随着生成该对象的程 ...

最新文章

  1. 酸了!会这个技能的 AI 工程师年薪至少35W起!
  2. HashSet 与TreeSet和LinkedHashSet的区别
  3. dedecms使用php语法,dedecms中使用php语句指南,dedecmsphp语句指南_PHP教程
  4. 自己的JS 监听器。用于选择文字
  5. Please copy/symlink the 'missing image' image at xxx
  6. 【HTML】HTML5中的Web Notification桌面通知
  7. xmlxml约束dtdxml解析器
  8. Python(set/list/dict/tuple)
  9. 在Android中运用RxJava
  10. VC编程操作Word2010生成表格
  11. Gini 系数与熵的关系
  12. 原生js三种选项卡效果(滑动)
  13. 分享一些学习和获取资料的网站
  14. 校园食堂订餐管理系统企业点餐软件
  15. 商品规格表设计_计算机毕业设计分享jsp企业销售管理系统
  16. 牛客(基础位运算)起床困难症
  17. TIM ETR 配置
  18. Codeforces 480D Parcels 动态规划
  19. 【2021情人节主题征文】| 写了一个表白网页后,我跟女神在一起啦
  20. MAC 软件避坑之坚果云

热门文章

  1. php7 获取数据流,stream_socket_accept()
  2. java把一段英文拆成单词_java编程题,输入一段英文文章,单词之间都已经用空格分隔,本人想以每5个单词为一行输出,怎么写?请指教...
  3. ns3入门案例1 first.cc
  4. 音频光端机与电话光端机区别
  5. 什么是光纤以太网交换机?
  6. 模拟光端机和数字光端机的优缺点介绍
  7. 【渝粤教育】国家开放大学2018年春季 8625-22T老年心理健康 参考试题
  8. 【渝粤题库】陕西师范大学400006 公共关系学 作业(专升本)
  9. 【渝粤教育】电大中专电商运营实操 (8)作业 题库
  10. [渝粤教育] 西南科技大学 管理信息系统 在线考试复习资料(1)