




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java编程思想读书笔记 这是一份试图提纲挈领的读书笔记java编程思想这本八百多页的书娓娓道来地包含了太多细节这对读者是非常贴心的我也强烈建议细细读这本书如果你希望在短时间内学会java这种语言那么这本书不是最好的选择你可以看看谭浩强系列我把看这本书的过程中个人觉得每一章中最重要的思想、用整理在这里希望自己回顾的时候有所参照和提高也希望大家带着同样的目的来看本篇读书笔记 第一章对象导论 比起过程型语言编写的程序用面向对象语言编写的程序更加简单、易于理解、可复用c+编程思想里也有这一章是一个抛砖引自己的玉的章节不明白可以跳过回头再看 第二章一切都是对象 java语言里面一切都是对象并且程序员是通过引用来操纵对象一个简单的例子非常轻松地让读者进入java的世界需要注意的是java数据会储存在5个不同的地方:寄存器、堆栈、堆、常量存储、非ram存储用new创建的一般对象都放在堆中而特殊的基本对象放在堆栈中如果想把基本对象也放在堆中需要包装基本类型 第三章操作符 java中的操作符语法类似于c所以学习起来一点困难也没有要特别注意两个比较大的整数相加或者相乘的时候的溢出问题用long或者biginteger解决这个问题 第四章控制执行流程 我想起pointeronc这本书第一章就有这一句话本书适合那些希望迅速学习一门新语言而不是被“为什么if和for很重要”的弱智问题耽搁进度的读者呵呵这一章很不厌其烦地介绍了运算、操作符优先级、类型转换、选择循环等基本特性有c或者c+编程经验的读者可以大概浏览一下 第五章初始化和清理 关于初始化: 1.初始化很重要一定不要忘记而且java编译器会很好的防止使用未初始化数据的意外这是比c和c+更优的地方 2.编译器初始化的顺序为: a.类首次加载的时候有关静态初始化的所有动作都会执行 a1.类的加载包括首次创建该类型的对象或者该类的静态方法/静态域首次被访问 a2.静态域的初始化在一切初始化之前即静态变量散布在代码不同的地方它们也会在任何方法(包括构造器)调用之前被初始化 b.当用newcalssname()创建对象的时候会在堆上开辟足够的存储空间这块存储空间被清零然后执行字段的初始化动作(这里的字段初始化都是非静态的因为静态的变量已经在a中执行完毕而且静态变量存储在不同的地方静态数据只占用一份存储空间) c.执行构造器 关于清理 c+关于清理的部分包含很大不确定性目前需要知道的事情是正常情况下我们是不需要调用finalize方法的而且垃圾回收区会自动回收不再使用的对象同时我们需要自己注意一些需要关闭的文件 需要注意的是用=对数组进行“赋值”的时候实际上是引用的传递就是说二者指向同一堆 第六章访问权限控制 关于包 你应该有一个自己的域名这样发布你的java程序的时候就可以将你的包名设置为你的域名倒转想要正确让包工作要正确设置classpath对于新手来说这的确是一个挑战我当初就难到了 关于访问权限修饰词 值得注意的是如果两个编译单元放在同一个目录下并且都没有设置包名的话他们对于对方都是拥有包访问权限的访问权限修饰词是修饰方法和数据而不是类类只有两种访问权限包访问权限或public访问权限默认为包访问权限如果不希望其它任何人对该类拥有访问权限可以把所有的构造器设置为private但是有一个例外可以通过该类自己的static成员内部创建(于是就有了工厂设计模式和单例设计模式) 第七章复用类 有三种方法复用类:组合继承代理 组合即是在新的类里面放上已经定义的类的对象然后通过调用它的方法来实现自己的功能 继承是通过extends关键词继承某一父类这样就能访问父类的所有public方法(因此为了继承一般的规则是将父类的所有数据成员都指定为private将所有的方法都指定为public)子类的初始化需要注意的是(当创建了一个子类的对象时该对象包含一个基类的子对象)java会在子类的构造器中插入对基类默认构造器的调用但是如果没有默认的基类构造器或者想调用一个带参数的基类构造器就必须用关键词super显式地编写调用基类构造器的语句并且配上适当的参数列表 代理很有意思(我们姑且使用导出类和基类这样的字眼但要清楚我们不是在讨论继承里面的关键词)在导出类里保存一个基类的对象然后用自己的方法对该基类的种种方法进行包装 如何决定使用种方法复用类呢isa就继承hasa就用组合而且组合比继承总体上使用更广泛、代价更小 向上转型 这个就牛逼了第八章第九章第十章都与此密切相关看完本书之后印象最深的就是向上转型了 使用final的原因有很多种一定要弄清楚为什么使用final是由于设计还是效率 final作用于数据的时候:final作用在基本对象比如int上该值就成为不可改变的一旦被初始化就无法再被更改但是作用在普通的对象引用的时候final使引用恒定不变但是引用指向的对象是可变的编译器需要我们确保final对象一定要被初始化我们可以通过在构造器中初始化他们以达到相对自由的效果(称为空白final我认为这个名字容易让人误解)java允许在参数列表中以声明的方式将参数指明为final这一特性主要用来向匿名内部类传递数据(这很重要) final作用于方法的时候说明作者想保持该方法在继承的过程中不被改变并且不被覆盖同时被final修饰的方法会被关闭“动态绑定”这样编译器就会为final方法调用生成“有限”有效的代码之所以说有限是因为随着编译器的牛逼它生成的代码越来越有效 final作用于类的时候即是作者声明对该类的设计不允许任何继承 学习得更深入一些可能对以下事实感到有兴趣:java中所有的事物都是对象每个类的编译代码都存在于电脑中的文件夹里(文件夹的层次根据反转域名得到)该文件只有在需要使用程序代码时才被加载具体的说就是“类在其任何static成员函数(包括构造函数)被访问时加载”第八章多态 多态的重要基本原理就是向上转型:继承允许将对象视为它自己本身的类型或其基类型加以处处理 将一个方法调用和一个方法主题关联起来称为绑定java中所有的方法都是后期绑定(除了static方法和final方法)所以我们可以编写只与基类打交道的程序代码并且这些代码对所有的导出类都可以正确运行 (为什么static不动态绑定:因为static方法的主要用法就是用类名.方法名这样的方式来调用不存在“发送消息给某个对象让对象判断自己做”这样的情况 为什么final不动态绑定:这是早期final的一种用法由程序员指定某方法为final意味着程序员明了动态绑定的机制并且声明该方法不需要动态绑定这样可以获得更好的性能这种用法已经很少使用了) 初始化的时候导出类的构造函数会自动调用基类的默认构造函数此过程一直递归到最基本的基类如果需要调用有参数的构造函数就需要手动执行反过来如果需要进行清理工作(大部分时候我们都不需要)务必手动执行基类的清理工作先比如继承链的每个类都实现dispose()方法那么执行某个类的清理工作的时候需要手动调用super.dispose()不过此种情况下务必在执行super.dispose()之前释放成员对象清理顺序与执行顺序是相反的 此外构造器方面有更加复杂的调用机制我们不用理它只需要知道一条有效的准则“用尽可能简单的方法使对象进入正常状态如果可以的话避免调用其它方法” java编译器能够允许向上多态就是因为java的机制能保存对象的类型信息即rtti正因为这种机制java编译器也允许向下转型以获得扩展类的“扩展出”的方法(另扩展类“扩展”了方法的这种继承不是“纯继承”这样做好不好用户自己度量)向下转型失败的话会抛出一个classcastexception 虽然这一章都是在讲多态但是多态并不总是解决问题最好的方案它有可能使事情不必要地复杂起来我们应该总是优先考虑更加灵活的组合 第九章接口 一种专门提供“接口”的类叫抽象类若含有至少一个abstract方法该类就必须被声明为abstract的抽象方法没有方法体派生类必须实现它否则派生类也必须被生命为抽象的 interface关键词使抽象的概念更进了一步:1.这个“类”完全抽象2.一个类可以向上转型为多种interface要让一个类遵循某个特定接口需要使用implement关键字 在这一章中出现了“策略设计模式”这个词创建一个能够根据所传递的参数对象的不同而具有不同行为的方法被称为策略设计模式 策略设计模式跟适配器设计模式联合使用可以提供非常强大的功能比如我们遇到了无法更改的类(别人编写的)想要它满足我们的接口然后放到设计模式里面去(当然满足了接口之后的用法就不止如此了)就可以编写一个适配器包装该类同时产生我所需要的接口 使用抽象类和接口的两个原因是:1.在多重继承关系中(这真的很常见看看javaapi就知道了)导出类可以被向
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年人疾病知识课件
- 《翻译理论与实践1》课程介绍与教学大纲
- 医疗评估与执行单规范填写实操指南
- 醉驾安全防护知识培训课件
- 老年人护理学课件教学
- 老年人慢性病的课件
- 连词成句搭桥互动游戏支持39个单词句子update
- 华为公司国际营销策略
- CN120208489A 一种提升水效的智慧一体化净水系统
- 外研版九年级英语下册Module4单元测试试卷-含答案03
- 鼻腔冲洗护理技术团体标准解读
- 水箱拆除专项施工方案
- GB/T 41130-2021展览场馆安全管理基本要求
- GB/T 21733-2008茶饮料
- 纪委案件审理课件教材
- CorelDRAW教学讲解课件
- 人才管理-人才选用育留课件
- 成功八步课件
- 江苏省社会组织网上办事系统-操作手册
- 小学生打扫卫生值日表word模板
- 小学一年级开学第一课
评论
0/150
提交评论