读TIJ -2 一切都是对象[通俗易懂]

读TIJ -2 一切都是对象

大家好,又见面了,我是全栈君。

《第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 凝视和嵌入文档


整体上,这一章比較简单。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116147.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 怎么提高开车技术_全日行车计划

    怎么提高开车技术_全日行车计划Description现在有n个城市,每个城市有它的高度HiH_i,保证每个HiH_i互不相同。我们定义两个城市之间的距离disi,j=|Hi−Hj|dis_{i,j}=|H_i-H_j|,并且只能从编号小的城市去到编号大的城市。现在有两个人,小A和小B要开车(雾)去旅行。小A先开一天,小B再开一天。每一天都可以从一个开到另一个城市。小A会选择去离当前城市第二近的城市,小B会选择去离当前城市最近的那

  • PHP轻量级在线客服系统源码 自适应手机移动端「建议收藏」

    PHP轻量级在线客服系统源码 自适应手机移动端「建议收藏」简介:支持多商家支持多商家,每个注册用户为一个商家,每个商家可以添加多个客服。不限坐席每个商家可以无限添加坐席,不限制坐席数支持H5移动端系统自动适配移动端,也可以接入app(h5方式)支持微信公众号/微信小程序客服可以与微信公众号/小程序里的访客实时沟通常见问题自动回复支持设置常见问题,顾客可以点击常见问题系统会自动回复客服分组支持客服分组,例如售前客服,售后客服等,让专业的人员干专业的事情微信表情微信emoji表情全套支持发送图片、txt、zip、pdf、xls、doc…

  • native2ascii命令找不到_native method

    native2ascii命令找不到_native method 背景:在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码。原因是java默认的编码方式为Unicode,而我们的计算机系统编码常常是GBK等编码。需要将系统的编码转换为java正确识别的编码问题就解决了。 1、native2ascii简介:native2asci…

  • windowsAPI之OpenProcessToken,AdjustTokenPrivileges 和LookupPrivilegeValue

    windowsAPI之OpenProcessToken,AdjustTokenPrivileges 和LookupPrivilegeValue这三个函数主要用来提升进程的权限1OpenProcessToken()函数:获取进程的令牌句柄OpenProcessToken的原型.BOOLWINAPIOpenProcessToken(__inHANDLEProcessHandle,__inDWORDDesiredAccess,__outPHA

  • Mac Quicktime 录屏带声音[通俗易懂]

    Mac Quicktime 录屏带声音[通俗易懂]最近有录屏的需求,但是Mac大多数录屏软件都收费,之前用Windows时用EV录屏,免费好用,可惜没有Mac版。Mac自带的QuickTime软件虽然能录屏,但是不能录制声音,很苦恼。直到我发现了SoundFlower软件。1、下载安装soundflower给个链接:http://mysoft.6h5.cn/Soundflower-2.0b2.dmg安…

  • 测试负责人如何管理(如何成为优秀的团队负责人)

    前言:今天是2021年11月17日,我入职新公司工作的第20天,工作也确实比较忙,准确的来说在公司大家都忙,我基本上都是早上7点半起床,晚上12点到家,睡午觉的时间忙中偷闲更新下博客!作为测试负责人如何规范测试团队?一、我的提问二、你会发现存在的问题1、流程不规范2、缺乏沟通3、没有共享文档4、没有输出三、如何做好流程规范1、测试进度及计划面板2、技术评审3、提测规范4、测试用例评审四、如何做好流程规范1、测试进度及计划面板一、我的提问当你来到一个项目不规范的技术团队,你会怎么处理呢?二、你会发现存

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号