《第2 章一切都是对象》
一切都是对象,不是Bruce Eckel说的,而是Alan Kay 总结的Smalltalk 五大基本特征的第一条。从程序设计者或源代码的角度,我不得不吐槽:一切皆对象,X 。类型type是计算机科学重要概念(类型理论type theory),从对象技术角度看,Java源代码中没有任何对象,一切皆类型、引用变量或引用,唯独没有对象。为了模拟自然(不管唯心或唯物),我杜撰了柏拉图法则:类的世界独立存在,对象世界由类创建而来
杂合语言或多范式编程,是一种暂时没有定论的炒作,按照托马斯?库恩的范式(paradigm)论,新旧范式是不可通约的、不可比较的。个人倾向认为命令范式和函数范式如同原子级别看待世界,而对象范式在以米为单位的宏观视角看待世界。
2.1 用句柄操纵对象 You manipulate objects with references
拜托,3rd中都不用(Handle)了,怎么4版的翻译中还有句柄。
虽然我在《编程导论·2.4.2 引用变量、引用和对象》中容忍三个术语的混用,但是,
So if you want to hold a word or sentence, you create a String reference:
String s;
But here you’ve created only the reference, not an object.
一本书刚开始介绍,就把(引用)变量s和它的值混为一谈,我非常不喜欢。
2.2 所有对象都必须创建
2.2.1 保存到什么地方,六个地方有些乱。要讨论存储管理策略就不要把寄存器和持久对象牵扯进来。
2.2.2 特殊情况:基本类型 ,“不是用new 创建变量,而是创建一个并非引用的“自动”变量。这个变量容纳了具体的值,并置于堆栈中,能够更高效地存取”。
这句话与我说“喜欢梁博”一样,充满风险。知道的说我欣赏梁博,不知道的不定联想些什么。
一直奇怪“对象在堆中,基本类型在栈中”是那个师傅的发明,这里有点嫌疑。
《2.2.2 Java数据类型·4. 100%面向对象?》中
【p69单就Java语言的类型系统而言,Java中存在基本类型,它们不是引用类型,因而有人说Java不是100%面向对象。Java也不能够号称“所有东西都是对象”。
事实上,通过API封装的特殊引用类型——包装类(指Boolean、Byte、Character、Short、Integer、Long、Float和Double),程序员完全可以使源代码中不出现任何基本类型(通过自动装箱将任何文字转换成包装类对象),这在Java语言和JVM中非常容易实现。
对于
方法调用栈上的数据,处理Integer i不如处理int j直截了当。由于所有对象在堆上分配内存,方法调用栈上使用Java基本类型(如进行2+i这种简单操作时),
不应该被迫去创建各种对象。
即使很容易在JVM上进行底层转换而使源代码表现得100%面向对象,也没有太大的必要。】
这里说明了方法调用栈上使用Java基本类型的好处,但是不意味Java基本类型必须在栈上。
【boolean 1 位 - - Boolean】???不知道依据在哪里。
2.2.3 Java 的数组
2.3 绝对不要清除对象
2.3.1 作用域
2.3.2 对象的作用域 【 “memory leak,” in which a programmer forgets to release memory. 】这是Java的内存泄露,不是C++的内存泄露。
2.4 创建新数据类型:类
有一些翻译我改了,各种标题。
2.4.1 字段和方法 他的fields应该不包括static。
2.5 方法、自变量和返回值
function Vs. method,《3.1.2 方法·4. 副作用》中,按照Pascal,把子程序/方法被分成两种:函数和过程。【Methods in Java determine the messages an object can receive.】No。方法仅仅是一个代码块,如果它是类的接口,才决定其对象能够接收该消息,Help method即private method不是接口。
【象这样调用一个方法的行动通常叫作“向对象发送一条消息”】。赞
2.5.1 形参列表
2.6 构建Java 程序
2.6.1 名字的可见性Name visibility 蛋。文不对题,标题应该叫“命名空间”。名字的可见性令人想起变量的可见性与变量隐藏。
2.6.2 使用其他组件 原来是import
2.6.3 static 关键字
2.7 我们的第一个Java 程序
这里介绍了如何查看JDK文档。
2.8 注释和嵌入文档
总体上,这一章比较简单。
读TIJ -2 一切都是对象,布布扣,bubuko.com
读TIJ -2 一切都是对象
原文:http://blog.csdn.net/yqj2065/article/details/37162777