- 前言
- 简介
- 第一章 对象的概念
- 第二章 安装 Java 和本书用例
- 第三章 万物皆对象
- 第四章 运算符
- 第五章 控制流
- 第六章 初始化和清理
- 第七章 封装
- 第八章 复用
- 第九章 多态
- 第十章 接口
- 第十一章 内部类
- 第十二章 集合
- 第十三章 函数式编程
- 第十四章 流式编程
- 第十五章 异常
- 第十六章 代码校验
- 第十七章 文件
- 第十八章 字符串
- 第十九章 类型信息
- 第二十章 泛型
- 第二十一章 数组
- 第二十二章 枚举
- 第二十三章 注解
- 第二十四章 并发编程
- 第二十五章 设计模式
- 附录:成为一名程序员
- 附录:静态语言类型检查
- 附录:集合主题
- 附录:数据压缩
- 附录:流式 IO
- 附录:文档注释
- 附录:并发底层原理
- 附录:新 IO
- 附录:对象序列化
- 附录:对象传递和返回
- 附录:编程指南
- 附录:标准 IO
- 附录:补充
- 附录:C++ 和 Java 的优良传统
- 附录:理解 equals 和 hashCode 方法
- 词汇表
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
附录:对象传递和返回
到现在为止,你已经对“传递”对象实际上是传递引用这一想法想法感到满意。
在许多编程语言中,你可以使用该语言的“常规”方式来传递对象,并且大多数情况下一切正常。 但是通常会出现这种情况,你必须做一些不平常的事情,突然事情变得更加复杂。 Java也不例外,当您传递对象并对其进行操作时,准确了解正在发生的事情很重要。 本附录提供了这种见解。
提出本附录问题的另一种方法是,如果你之前使用类似C++的编程语言,则是“ Java是否有指针?” Java中的每个对象标识符(除原语外)都是这些指针之一,但它们的用法是不仅受编译器的约束,而且受运行时系统的约束。 换一种说法,Java有指针,但没有指针算法。 这些就是我一直所说的“引用”,您可以将它们视为“安全指针”,与小学的安全剪刀不同-它们不敏锐,因此您不费吹灰之力就无法伤害自己,但是它们有时可能很乏味。
传递引用
当你将引用传递给方法时,它仍指向同一对象。 一个简单的实验演示了这一点:
// references/PassReferences.java
public class PassReferences {
public static void f(PassReferences h) {
System.out.println("h inside f(): " + h);
}
public static void main(String[] args) {
PassReferences p = new PassReferences();
System.out.println("p inside main(): " + p);
f(p);
}
}
/* Output:
p inside main(): PassReferences@15db9742
h inside f(): PassReferences@15db9742
*/
方法 toString()
在打印语句中自动调用,并且 PassReferences
直接从 Object
继承而无需重新定义 toString()
。 因此,使用的是 Object
的 toString()
版本,它打印出对象的类,然后打印出该对象所在的地址(不是引用,而是实际的对象存储)。
本地拷贝
控制克隆
不可变类
本章小结
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论