《第2 章一切都是对象》

1.一切都是对象。不是Bruce Eckel说的,而是Alan Kay 总结的Smalltalk 五大基本特征的第一条。

从程序设计者或源码的角度,我觉得:“一切皆对象。X” 。类型type是计算机科学重要概念(类型理论type theory),从对象技术角度看,Java源码中没有不论什么对象,一切皆类型、引用变量或引用,只有没有对象。为了模拟自然(无论唯心或唯物),我杜撰了

柏拉图法则:类的世界独立存在,对象世界由类创建而来

2.杂合语言或多范式编程,是一种临时没有定论的炒作.由于依照托马斯•库恩的范式(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和它的值混为一谈,我很反感,这是一种严重的错误。并且,【p89 在大多数情况下。变量名与值的区别,都是不容混淆的。但因为引用变量和引用一样參与全部的对象运算,正如i和2一样參与全部整数运算一样,偶尔会遇到某些人将“引用变量s”叫做“引用s”的情况。

】——而TIJ不是偶尔,而是全文的混淆。

是的。我再三强调。String s和int i,s和i都是一个变量而已

。!

可想而知。TIJ无法介绍什么是真正的引用(值)。

假设用遥控板和电视机的样例,TV tv= new TV(); tv即使硬说成遥控板也不行

tv是你的手!tv握住的东西(tv保存的值)才是“遥控板”,你的手随时能够更换保存的值(遥控板)以控制不同的TV对象。


2.2 全部对象都必须创建

TV tv= new TV(); 无论怎样生活化的介绍,主要的概念还是应该准确

这里是一个反面样例,我要引以为戒。当然,因为他把(引用)变量s和它的值混为一谈。这段文字(对我而言)必定地显得别扭和错误。

2.2.1 保存到什么地方

六个地方有些乱。要讨论存储管理策略最好不要把寄存器和持久对象牵扯进来。

2.2.2 特殊情况:基本类型

1.【不是用new 创建变量,而是创建一个并不是引用的“自己主动”变量。这个变量容纳了详细的值,并置于堆栈中。可以更高效地存取】。
这句话与我说“喜欢梁博”一样,充满风险。知道的说我赞赏梁博。不知道的不定联想些什么。


一直奇怪“对象在堆中,基本类型在栈中”是那个师傅的发明,这里有点嫌疑。

因而,我个人会这样写:

int i的i是一个基本变量,将基本变量保存的简单值5直接置于堆栈中,显然要比使用一个引用变量找到对象再从对象中提取简单值5更高效。


《2.2.2 Java数据类型·4. 100%面向对象?》中
【p69单就Java语言的类型系统而言。Java中存在基本类型,它们不是引用类型,因而有人说Java不是100%面向对象。Java也不可以号称“全部东西都是对象”。

其实。通过API封装的特殊引用类型——包装类(指Boolean、Byte、Character、Short、Integer、Long、Float和Double),程序猿全然能够使源码中不出现不论什么基本类型(通过自己主动装箱将不论什么文字转换成包装类对象),这在Java语言和JVM中很easy实现

对于方法调用栈上的数据,处理Integer i不如处理int j直截了当。

因为全部对象在堆上分配内存,方法调用栈上使用Java基本类型(如进行2+i这样的简单操作时),不应该被迫去创建各种对象。即使非常easy在JVM上进行底层转换而使源码表现得100%面向对象。也没有太大的必要。】

这里说明了方法调用栈上使用Java基本类型的优点,可是不意味Java基本类型必须在栈上

2.【boolean 1 位 - - Boolean】???我不知道他的根据在哪里。

2.2.3 Java 的数组  在讲述Java时比較C或C++。利弊兼半。

我个人不觉得这是好主意。

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 fields。

2.5 方法、自变量和返回值

function Vs. method,《3.1.2 方法·4. 副作用》中,依照Pascal。把子程序/方法被分成两种:函数和过程。【Methods in Java determine the messages an object can receive.】不太严谨。

方法不过一个代码块,假设它“是”类的接口。才决定其对象可以接收该消息,而Help method即private method显然不是接口。

【象这样调用一个方法的行动通常叫作“向对象发送一条消息”】。


2.5.1 形參列表 

2.6 构建Java 程序

2.6.1 名字的可见性Name visibility  标题非常操蛋。文不正确题,标题应该叫“命名空间”或package。名字的可见性令人想起变量的可见性与变量隐藏

2.6.2 使用其它组件 原来讲import
2.6.3 static keyword 

2.7 我们的第一个Java 程序

这里介绍了怎样查看JDK文档

2.8 凝视和嵌入文档


整体上,这一章比較简单。

读TIJ -2 一切都是对象的更多相关文章

  1. Java编程思想 4th 第2章 一切都是对象

    Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情通过类对象协作来完成 ...

  2. 2.JAVA编程思想——一切都是对象

    一切都是对象 欢迎转载.转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040221 虽然以C++为基础,但 Java 是一种更纯粹的面 ...

  3. 程序猿都没对象,JS竟然有对象?

    现在做项目基本是套用框架,不论是网上的前端还是后端框架,也会寻找一些封装好的插件拿来即用,但还是希望拿来时最好自己过后再回过头了解里面的原理,学习里面优秀的东西,不论代码封装性,还是小到命名. 好吧, ...

  4. 深入理解javascript原型和闭包(1)——一切都是对象

    “一切都是对象”这句话的重点在于如何去理解“对象”这个概念. ——当然,也不是所有的都是对象,值类型就不是对象. 首先咱们还是先看看javascript中一个常用的函数——typeof().typeo ...

  5. java编程思想 一切都是对象

    java是一种面向对象程序设计语言,一切都是对象,并且用引用操作对象,如一个电视机就是一个对象,而操作电视机的遥控器就是引用,引用可以单独存在,如遥控器可以单独存在. String s; 这里只是创建 ...

  6. 深入理解javascript原型和闭包(1)---一切都是对象

    深入理解javascript原型和闭包(1)---一切都是对象 type函数输出的类型,在此列出: function show (x){ console.log(typeof(x));//undefi ...

  7. 深入理解js——一切都是对象

    "一切皆对象" 当然也不是所有的都是对象,值类型(undefined,number,string,boolean)就不是对象:而函数.对象.数组.null.new Number(1 ...

  8. Java程序员的日常——《编程思想》一切都是对象

    今天终于看完了第一章,哈哈,万事开头难....刚开始被编程思想的第一章给蒙住了,讲一堆理论,没什么意思.从第二章开始,真正的开始讲解Java相关的内容,有了一定的开发经验后,再次阅读起来,感觉收获良多 ...

  9. 【Thinking in Java-CHAPTER 1&&2】对象导论&&一切都是对象

    JAVA起源 从JDK诞生到现在已经有11年的时间了.沧海桑田一瞬间.转眼11年过去了,JDK已经发布了6个版本.在这11年里诞生了无数和Java相关的技术和标准.现在让我们进入时间隧道,重新回到19 ...

随机推荐

  1. scanf 与 cin 的区别

    在论坛上看到有人提出一个如下的问题,在此总结一下. 原问题: http://topic.csdn.net/u/20110414/22/90d0606c-9876-48e4-9b69-bd8bd8a41 ...

  2. Eclipse环境问题集合

    1. XDoclet错误:Missing library: xdoclet-1.2.1.jar 从http://sourceforge.net/projects/xdoclet/files/xdocl ...

  3. poj 2965

    http://poj.org/problem?id=2965 本题要结合poj 1753 来看最好...又有了一点搜索的经验..加油... #include <iostream> #inc ...

  4. IE6不支持<a>标签以外元素的hover的解决方案

    IE6以及更低版本的浏览器对“:hover”的支持不理想,对于类似的“p:hover”.“img:hover”.“#header:hover”...,今天给大家介绍一种新的方法,可以完美解决IE6不支 ...

  5. 关于64位Windows7系统下INF的安装问题

    原文 http://bbs.csdn.net/topics/360262492 我的电脑 ——>属性 ——>设备管理器 ——>操作 ——>添加过时硬件 但是,64位系统上报“指 ...

  6. Android dp和sp的用法汇总

    1 > dp 是跟像素密度无关的单位,也就是说在相同尺寸.但不同的分辨率的手机上,用dp标识的东西,显示的大小是一样的. sp是用于标识字体的,它不仅跟屏幕尺寸有关,还跟设置的系统字体大小有关. ...

  7. CMake学习小结

    假定有vegagis工程,工程的目录结构如下: #--vegagis#  |--src 源文件目录#     |--gui 界面工程,输出类型:dll,依赖于QT的QtCore.QtGui.QtXml ...

  8. 2-06. 数列求和(20)(ZJUPAT 数学)

    题目链接:http://pat.zju.edu.cn/contests/ds/2-06 给定某数字A(1<=A<=9)以及非负整数N(0<=N<=100000).求数列之和S ...

  9. 最新Android ADT, SDK, SDK_tool等官方下载说明(及时更新)

    1.Android SDK starter package SDK starter package http://dl.google.com/android/installer_r08-windows ...

  10. C与C++ 无参函数的区别

    在<C++ 编程思想>:“关于无参函数声明,C与C++有很大的差别.在C语言中,声明int fun1(),意味着一个可以有任意数目和类型的函数:而在C++中,指的却是一个没有参数的函数”. ...