读TIJ -2 一切都是对象
《第2 章一切都是对象》
1.一切都是对象。不是Bruce Eckel说的,而是Alan Kay 总结的Smalltalk 五大基本特征的第一条。
从程序设计者或源码的角度,我觉得:“一切皆对象。X” 。类型type是计算机科学重要概念(类型理论type theory),从对象技术角度看,Java源码中没有不论什么对象,一切皆类型、引用变量或引用,只有没有对象。为了模拟自然(无论唯心或唯物),我杜撰了
柏拉图法则:类的世界独立存在,对象世界由类创建而来
2.杂合语言或多范式编程,是一种临时没有定论的炒作.由于依照托马斯•库恩的范式(paradigm)论。新旧范式是不可通约的、不可比較的。
个人倾向觉得:命令范式和函数范式如同原子级别看待世界,而对象范式在以米为单位(的宏观视角)看待世界。
2.1 用句柄操纵对象 You manipulate objects with references
String s;
But here you’ve created
我很反感,这是一种严重的错误。并且,【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和它的值混为一谈。这段文字(对我而言)必定地显得别扭和错误。
六个地方有些乱。要讨论存储管理策略最好不要把寄存器和持久对象牵扯进来。
1.【不是用new 创建变量,而是创建一个并不是引用的“自己主动”变量。这个变量容纳了详细的值,并置于堆栈中。可以更高效地存取】。

因而,我个人会这样写:
int i的i是一个基本变量,将基本变量保存的简单值5直接置于堆栈中,显然要比使用一个引用变量找到对象再从对象中提取简单值5更高效。
其实。通过API封装的特殊引用类型——包装类(指Boolean、Byte、Character、Short、Integer、Long、Float和Double),程序猿全然能够使源码中不出现不论什么基本类型(通过自己主动装箱将不论什么文字转换成包装类对象),这在Java语言和JVM中很easy实现。
对于方法调用栈上的数据,处理Integer i不如处理int j直截了当。
因为全部对象在堆上分配内存,方法调用栈上使用Java基本类型(如进行2+i这样的简单操作时),不应该被迫去创建各种对象。即使非常easy在JVM上进行底层转换而使源码表现得100%面向对象。也没有太大的必要。】
我个人不觉得这是好主意。
2.3 绝对不要清除对象
2.4 创建新的数据类型:类
2.5 方法、自变量和返回值
方法不过一个代码块,假设它“是”类的接口。才决定其对象可以接收该消息,而Help method即private method显然不是接口。
嗯
2.6 构建Java 程序
2.7 我们的第一个Java 程序
2.8 凝视和嵌入文档
读TIJ -2 一切都是对象的更多相关文章
- Java编程思想 4th 第2章 一切都是对象
Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情通过类对象协作来完成 ...
- 2.JAVA编程思想——一切都是对象
一切都是对象 欢迎转载.转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040221 虽然以C++为基础,但 Java 是一种更纯粹的面 ...
- 程序猿都没对象,JS竟然有对象?
现在做项目基本是套用框架,不论是网上的前端还是后端框架,也会寻找一些封装好的插件拿来即用,但还是希望拿来时最好自己过后再回过头了解里面的原理,学习里面优秀的东西,不论代码封装性,还是小到命名. 好吧, ...
- 深入理解javascript原型和闭包(1)——一切都是对象
“一切都是对象”这句话的重点在于如何去理解“对象”这个概念. ——当然,也不是所有的都是对象,值类型就不是对象. 首先咱们还是先看看javascript中一个常用的函数——typeof().typeo ...
- java编程思想 一切都是对象
java是一种面向对象程序设计语言,一切都是对象,并且用引用操作对象,如一个电视机就是一个对象,而操作电视机的遥控器就是引用,引用可以单独存在,如遥控器可以单独存在. String s; 这里只是创建 ...
- 深入理解javascript原型和闭包(1)---一切都是对象
深入理解javascript原型和闭包(1)---一切都是对象 type函数输出的类型,在此列出: function show (x){ console.log(typeof(x));//undefi ...
- 深入理解js——一切都是对象
"一切皆对象" 当然也不是所有的都是对象,值类型(undefined,number,string,boolean)就不是对象:而函数.对象.数组.null.new Number(1 ...
- Java程序员的日常——《编程思想》一切都是对象
今天终于看完了第一章,哈哈,万事开头难....刚开始被编程思想的第一章给蒙住了,讲一堆理论,没什么意思.从第二章开始,真正的开始讲解Java相关的内容,有了一定的开发经验后,再次阅读起来,感觉收获良多 ...
- 【Thinking in Java-CHAPTER 1&&2】对象导论&&一切都是对象
JAVA起源 从JDK诞生到现在已经有11年的时间了.沧海桑田一瞬间.转眼11年过去了,JDK已经发布了6个版本.在这11年里诞生了无数和Java相关的技术和标准.现在让我们进入时间隧道,重新回到19 ...
随机推荐
- BZOJ 3907: 网格( 组合数 + 高精度 )
(0,0)->(n,m)方案数为C(n,n+m), 然后减去不合法的方案. 作(n,m)关于y=x+1的对称点(m-1,n+1), 则(0,0)->(m-1,n+1)的任意一条路径都对应( ...
- AseoZdpAseo.init(this, AseoZdpAseo.INSERT_TYPE);
让以后的人知道吧,这就是一个广告包,相当于广告插件.
- mybatis用logback日志不显示sql的解决办法
mybatis用logback日志不显示sql的解决方法 1.mybatis-config.xml的设定 关于logimpl的设定值还不支持logback,如果用SLF4J是不好用的. 这是官方文档的 ...
- CPU指令的流水线运行
指令集是CPU体系架构的重要组成部分.C语言的语法是对解决现实问题的运算和流程的方法的高度概况和抽象,其主要为算术.逻辑运算和分支控制,而指令集就是对这些抽象的详细支持,汇编仅仅只是是为了让开发者更好 ...
- [POJ 2588]--Snakes(并查集)
题目链接:http://poj.org/problem?id=2588 Snakes Time Limit: 1000MS Memory Limit: 65536K Description B ...
- BZOJ 1925: [Sdoi2010]地精部落( dp )
dp(i,j)表示1~i的排列中, 以1~j为开头且开头是下降的合法方案数 这种数列具有对称性, 即对于一个满足题意且开头是上升的n的排列{an}, 令bn = n-an+1, 那么{bn}就是一个满 ...
- C#堆栈
栈就是堆栈,因为堆和堆栈这样说太拗口了,搞得像绕口令,所以有些时候就把堆栈简称为栈.堆和栈,你看这又多舒服. 但无论什么时候,堆栈都不等于堆和栈,必须说,堆和栈或者堆和堆栈. 有人说:“C#的所有值类 ...
- Javascript DOM 03 表格添加、删除 + 搜索
获取 tBodies.tHead.tFoot.rows.cells 隔行变色 鼠标移入高亮 添加.删除一行 DOM方法的使用 ...
- Codeforces 486B - OR in Matrix
矩阵的 OR ,也是醉了. 题目意思很简单,就是问你有没有这么一个矩阵,可以变化,得到输入的矩阵. 要求是这个矩阵每行都可以上下任意移动,每列都可以左右任意移动. 解题方法: 1.也是导致我WA 的原 ...
- 一步一步重写 CodeIgniter 框架 (7) —— Controller执行时将 Model获得的数据传入View中,实现MVC
1. 实现过程 1) 上一节讲述了 View 视图的加载过程,它是在 Loader 类中加载的,并通过 Include 语句进行包含.那么为了在 View 中传递变量,只需要在 include 语句所 ...