java编程思想 第一章学习笔记

第一章 笔记

引言

  1. 《java编程思想》的初衷是面向自学人员的,如果你不会c/c++语言也不用的担心。
  2. 书本的章节由作者精心安排,每章节都有重点,而且有练习的间隔时间,能给读者提供扎实的基础。

章节设计

  1. 对象对门 对象的概念
  2. 一切皆对象 java是怎么去表达对象的,说人话就是用代码怎么去写对象
  3. 控制程序流程 主要是三大结构,每种语言都有,不同的是java有标签式break和contiune,其实 go也有这个
  4. 初始化和清除 主要是java中的构造函数和垃圾回收器,说理论点就是 对内存的分配和释放,特别是垃圾回收算法可以去深入了解
  5. 隐藏实现过程 自我理解--封装性
  6. 类再生 类的继承性 可以很好的服用代码等优点
  7. 多形性 多态性,,类似go中有种duck-typing的编程思想
  8. 对象的容纳 java的集合框架,说人话就是java自带的封装好的数据结构 一般都是 stack queue hashtable hashmap 之类的
  9. 违例差错控制 java的异常处理机制。
  10. java IO系统 io是计算机内存和外设的数据流动 网络IO这是一种特殊的IO java里面的IO则是以流的方式来处理,关于流理解的不是很深刻,则需要后续多理解理解。
  11. 运行期类型鉴定 也就是java的反射机制,还需要后续的深入理解
  12. 传递和返回对象 主要涉及句柄的知识
  13. javaGUI 不重要
  14. 多线程 深入理解多线程,学会java对多线程的表达,清楚IO密集型 计算密集型 合理运用多线程
  15. 网络编程 也就是socket编程, java从BIO-》NIO-》AIO-》netty
  16. 涉及范式 书上说的是举一个例子然后对方案不对的改革,体会到使设计思路变得清晰起来的一种途径, 我可能会理解成设计模式
  17. 项目 对前面知识的应用和扩展

第一章 阅读总结 -- 对象入门

1.1 抽象的进步

优点:对管理人员,更快和更廉价的开发和维护过程,对建模处理变得更加简单,能生成更加简单、易于维护的的设计方案。 缺点:学习成本高,设计出优秀的重复性使用的类是具有挑战性的,对初入门面对对象编程的人员是一个痛苦的选择。

第一章作者会来后面来证明面对对象是多么的简单。从思想上解释面对对象程序设计。

汇编是对计算机本体,计算机组织结构的抽象。 BASIC和C等是对汇编的更加抽象,但是并没有屏蔽掉开发人员对计算机组成原理的认识, java在这基础上(c等低级语言)的抽象,我觉得也可以理解成封装,把复杂的东西封装起来,给开发人员调用就行了,不需要他们k 4. 每个对象都拥有其类型 5. 某一特定类型的所有对象都可以接受同样的消息。

1.2 每个对象都有一个接口

面向对象语言,实际上是创建新的数据类型,-- 可以对应到C的结构体。 类描述了相同特性和行为的对象集合,所以类实际上就是一个数据类型,我以前最开始再理解C的结构体的时候就是把结构体理解成一种开发者自定义的数据类型。

向某个对象发送消息就是调用某个对象的方法,

UML的设计

1.3 每个对象都提供服务

试图开发或者理解程序设计师,最好的方法之一就是将对象想象为“服务提供者”。

代码是的设计可以先从程序提供了什么服务开始思考,设计程序应该有什么类,不同的类分别提供了什么服务等。。。这样还能简化别人使用你的代码的学习成本

1.4 被隐藏的具体实现

用一些权限修饰符,限制某些成员的权限,权限不能给的太大,也不能给的太小。public private protected (还有一种默认的权限) public 》 protected》(default)》private

1.5 复用具体实现

一个被设计完并测试完的类是可以复用的,代码复用是java中提供的一个了不起的优点之一。 最简单的使用就是:实例化某个提供的类,也可以说成是创建一个对象(组合),其次是可以 继承类实现接口

1.6 继承

继承应该是复用代码最常用的方式了,我们不但可以继承父类已有的数据方法,还可以增加和修改父类的方法,但是同时也有弊端,如果你修改了基类(也可以称作父类超类),就可以影响被继承的类。

垃圾回收的例子 -- 以垃圾为基类 几何图形的例子 --

导出类继承了基类后,不但复制了基类的数据和方法,更重要的是复制了基类的接口(这里的接口指的是对象的方法),同时可以发送给基类对象的消息也可以发送给导出类 一个圆同时也是一个几何图形,同时体现了 多态性

1.6.1 “是一个” 与 “像是一个” 关系

举例 圆是继承于几何图形的,我们就可以说:一个圆就是一个几何图形。判断继承就要用:is-a来描述类之间的关系。 一般我们在新的导出类中添加了新的接口,也就是拓展了接口,我们就可以这样来描述基类和导出类的关系:is-like-a,举例,如果你家的空调(为了制冷)坏了,你去买一个热力泵替换他(热力泵既可以制冷也可以制热),这时候我们就可以说:空调 is-like-a 热力泵

1.7 伴随多态的可互换对象

阐述我对前期绑定(编译阶段决定),和后期绑定(运行阶段决定)的理解 (重点阐述) 因为java本身自动支持了后期绑定(在运行阶段确定),所以天然支持多态

上转型下转型

1.8 单继承结构

所有的类都是继承于 Object 类,单继承结构是有一定的好处的(代码兼容性) 单继承也使得垃圾回收变得更加容易,-- 可以拓展出去,理解下堆内存和栈内存,和栈数据结构。(堆,栈,堆栈)

1.9 容器

说得比较抽象一点可以称作“容器”,再具体一点可以叫做数组或者链表,再具体一点就是 一片内存空间 比如在CPP中就是 STL,java中也有很多满足不同需求的容器,比如:List,Map,Set,其实本质上就是对数据结构中常用结构的封装,或者叫实现。

java中有各种各样的容器,需要我们针对不同的需求和场景选择不同的容器

1.9.1 参数化类型

泛型--在容器中如果不适用泛型,就会有向上转型和向下转型, 在java中所有的类都继承于 Object 类,golang中,所有的结构体都实现了 interface{} 空结构体,这是比较相似的。 但是为什么go不提供泛型呢?可以思考

1.10 对象的创建和生命周期

对于自带垃圾回收的语言,一个好的垃圾回收机制对程序的执行效率来说是非常重要的, 栈上的内存效率远高于堆上的内存,

1.11 异常处理,处理错误

大多数错误处理的机制的主要问题在于,他们都依赖于程序员的自我警惕性,可以对比go和java的异常处理 异常处理不是面向对象的特征,在面向对象出来之前就已经存在了。

java中本身就内置了异常处理,并强制要求使用,不然编译器就会报错。

1.12 并发编程

在java中的并发编程往往都是通过多线程来解决,在go中往往都是通过多协程来解决。 随之而来的就是对临界资源的竞争问题,然后就会谈到锁。

1.13 Java与Internet

java Web的发展历史,看看就行了

1.14 总结

虽然初学OOP可能比较恼火,但是对于一个设计良好的程序中,面对对象的代码量会更少,理解起来也更容易。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,093评论 1 32
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,046评论 0 4
  • 1.JavaScript 是 web 上一种功能强大的编程语言 ,用于开发交互式 的 web 页面。它不需要进行 ...
    路人爱早茶阅读 230评论 0 0
  • 时间很贵,下面提供三个五秒完成淘宝好评挣金币的好评模板,取走不谢哦! 写好评我也是认真的! 1.版本一:清宫后妃版...
    孟孟姐姐阅读 35,303评论 0 4
  • G20那会,整个杭城都老太婆扮姑娘了一下—所有的墙壁外立面全都重新粉刷了,瞬间给了人一种朝气蓬勃、干净清爽的感觉。...
    乖牛妞的妞阅读 106评论 0 0