将一个对象传递到方法内部时,也会产生别名现象。
//: PassObject.java
// Passing objects to methods can be a bit tricky
62
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("1: x.c: " + x.c);
f(x);
System.out.println("2: x.c: " + x.c);
}
} ///:~
在许多程序设计语言中,f()方法表面上似乎要在方法的作用域内制作自己的自变量Letter y 的一个副本。
但同样地,实际传递的是一个句柄。所以下面这个程序行:
y.c = 'z';
实际改变的是f()之外的对象。输出结果如下:
1: x.c: a
2: x.c: z
别名和它的对策是非常复杂的一个问题。

最新文章

  1. [转载]"百度方法+"案例—从持续集成到持续交付
  2. Prince2的七大原则(7)
  3. H5案例学习笔记
  4. Linux下网络故障诊断
  5. Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子(附完整的请假流程例子,jbpm基础,常见问题解决)
  6. swift + jj实践
  7. Centos 中如何快速定制二进制的内核RPM 包
  8. 数组和字典 swift
  9. Python IDLE 清屏工具
  10. VB 基础语法以及教学视频
  11. Android项目--tabhost
  12. Django 同步数据库命令syncdb,makemigrations,migrate
  13. MySQL基准测试(benchmark)
  14. Html5本地存储和本地数据库
  15. hzoj 2301(莫比乌斯反演)
  16. windows下使用sed和tee命令
  17. 【干货】DD 和 netcat实战---擦除数据和远控
  18. Eclipse和MyEclipse使用技巧--Eclipse中使用Git-让版本管理更简单
  19. [OpenCV] Samples 09: plImage <==> Mat
  20. MT【163】运动是相对的

热门文章

  1. IE9以下 placeholder兼容
  2. linux环境下安装oracle数据库 原文在卡卡100http://www.cnblogs.com/kaka100
  3. Eclipse+Maven创建webapp项目
  4. UITableViewCell
  5. AtCoder Grand Contest 6
  6. Debian 7环境安装TightVNC+Gnome远程桌面环境
  7. 当在浏览器输入一个url访问后发生了什么
  8. Puppet安装及部署
  9. web前端从0开始--1
  10. 移动端div移动