Java编程思想 第四版(手码原书+菜鸟笔记) 第二章 2.1 用引用操纵对象

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接: https://blog.csdn.net/w1293069091/article/details/82962416

上一篇: 第二章 一切都是对象

文中笔记均为个人观点,如有错误请大家不吝指出,谢谢!
原书为《java编程思想 第四版 中文版》


每种编程语言都有自己的操纵内存中元素的方式。有时候,程序员必须注意将要处理的数据是什么类型。你是直接操纵元素,还是用某种基于特殊语法的间接表示(例如C和C++里的指针)来操纵对象?
所有这一切在Java里都得到了简化。一切都被视为对象,因此可采用单一固定的语法。尽管一切都看作对象,但操纵的标识符实际上是对象的一个“引用”(reference)1。可以将这一情形想象成勇遥控器(引用)来操纵电视机(对象)。只要握住这个遥控器,就能保持与电视机的链接。当有人想改变频道或者减小音量时,实际操纵的是遥控器(引用),再由遥控器来调控电视机(对象)。如果想在房间里四处走走,同时仍能调控电视机,那么只需携带遥控器(引用)而不是电视机(对象)。

此外,即使没有电视机,遥控器亦可独立存在。也就是说,你拥有一个引用,并不一定需要有一个对象与它关联。因此,如果想操纵一个词或句子,则可以创建一个String引用:

String s

但这里所创建的只是引用,并不是对象。如果此时向s发送一个消息,就会返回一个运行时错误。这是因为此时s实际上没有与任何事物相关联(即,没有电视机)。因此,一个安全的做法是:创建一个引用的同事便进行初始化。

String s = "asdf";

但这里用到了Java语言的一个特性:字符串可以用带引号的文本初始化。通常,必须对对象采用一种更通用的初始化方法。


文中会出现,如错字、语句不通、理解偏差等问题,请及时联系或在下方评论指出。我也会尽量按照原书将内容呈献给大家,谢谢!

下一篇: 2.1 必须由你创建所有对象


  1. 这可能会引起争论。有人认为:“很明显,它是一个指针。”但是这种说法是基于底层实现的某种假设。并且,Java中的引用,在语法上更接近C++的引用而不是指针。本书的第1版中,我选择发明一个新术语“句柄(handle)”来表示这一概念,因此,Java的引用和C++的引用毕竟存在一些重大差异。我当时正在脱离C++阵营,而且也不想使那些已经习惯C++语言的程序员(我想他们将来会是最大的,热衷于Java的群体)感到迷惑。在第2版中,我决定换回这个最为广泛使用的术语——“引用”。并且,那些从C++阵营转换过来的人们,理应更会处理引用,而不是仅仅理解“引用”这个术语,因而他们也会全心全意投入其中的。尽管如此,还是有人不同意用“引用”这个术语。我曾经读到的一本书这样说:“Java所支持的‘按址传递’是完全错误的”,因为Java对象标识符(按那位作者所说)实际上是“对象引用”。并且他接着说任何事物都是“按值传递”的。也许有人会赞成这种精确却让人费解的解释,但我认为我的这种方法可以简化概念上的理解并且不会伤害到任何事物。(好了,那些语言专家可能会说我在撒谎,但我认为我只是提供了一个合适的抽象罢了。) ↩︎

猜你喜欢

转载自blog.csdn.net/w1293069091/article/details/82962416
今日推荐