《HEAD FIRST JAVA》--深入浅出Java 说明与归纳

上传人:飞*** 文档编号:40509093 上传时间:2018-05-26 格式:DOC 页数:9 大小:78.50KB
返回 下载 相关 举报
《HEAD FIRST JAVA》--深入浅出Java  说明与归纳_第1页
第1页 / 共9页
《HEAD FIRST JAVA》--深入浅出Java  说明与归纳_第2页
第2页 / 共9页
《HEAD FIRST JAVA》--深入浅出Java  说明与归纳_第3页
第3页 / 共9页
《HEAD FIRST JAVA》--深入浅出Java  说明与归纳_第4页
第4页 / 共9页
《HEAD FIRST JAVA》--深入浅出Java  说明与归纳_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《《HEAD FIRST JAVA》--深入浅出Java 说明与归纳》由会员分享,可在线阅读,更多相关《《HEAD FIRST JAVA》--深入浅出Java 说明与归纳(9页珍藏版)》请在金锄头文库上搜索。

1、HEAD FIRST JAVA说明与归纳 第一章 进入 Java 的世界(基本概念) 主要介绍了 Java 的工作原理,发展简史,程序结构和一些简单的语法。学过其他语言的人 表示这章完全没有压力。 1, 程序的层次:源文件(source file)-类(class)-方法(methods) 。 2, Java 里面 integer 和 boolean 不相容。 3, 语法与 C 差不多,不过作者好像一直很反感拿 C 与 Java 作比较。第二章 拜访对象村(类与对象) 一开始用了一个巨冷的故事来阐述面向过程编程与面向对象编程的差别(结果当然是面向 对象优胜= =先保留意见吧) 。 1, 继承机

2、制使子类可以通过继承父类代码来减少重复代码,覆盖机制使子类在不必改动 父类的同时可以选择实现自己的方法。 (这个机制太强大了!) 2, 类是绘制对象的蓝图,而对象是已知的事物加上执行的动作。对应着,类包括实例变 量(instance variable)和方法(methods) 。 3, Java 程序执行期间是一组可以相互调用或交流信息的对象,对象之间有着独立性(对 象自治) 。 4, main()在 java 里面的作用:测试真正的类和启动 Java 应用程序。Java 是面向对象的编 程,所以 main()里面基本是不带任何方法的,仅作为测试用和启动用。第三章 认识变量(primitive

3、 主数据类型和引用) 介绍了 primitive 类型变量和引用变量,并阐述了之前的差别。 1, 变量必须有变量类型,两性类型与类之间有时是共通的,所以一般有着相同的命名规 则(如果可能的话,每个单词的首字母都要大些,区分于变量名称的命名:除了第一 个单词首字母要小写外,之后的单词的首字母都要大写) 。 2, 变量名称必须以字母,_或import java.util.Calendar) 8, 最后一点,静态的 import,这个我觉得作用不大,为少翘一点代码而降低程序的易读 性很不划算。第十一章 有风险的行为(异常处理) 开始介绍如何编写软件,很激动这章主要说异常处理(exception ha

4、ndling)和 MIDI(musical instrument digital interface)播放相关。 1, 异常处理:除了 RuntimeException 和它的子类(一般是可以在编译阶段排除的语法错 误) ,其他异常(exception)都要进行处理(或者 duck 掉给调用者处理) 。处理方法使 用 try和 catch语句。 (选择性加上 finally,两者至少要有一个。 )如果不想在当前 处理,可以用 throws 标识方法来 duck 给此方法的调用者,调用者也可以进一步 duck 给上一级调用者。如果连 main()函数也 ducking,那么 JVM 就会死掉。一

5、些细节:try 的时候遇到异常后立即跳到 catch(如果有的话) ,否则运行 finally(如果有的话) ,之 后抛出错误(如果有 throws 后缀的话) ;一个 try 后面可以多个 catch,平行关系的异常, 可以不管先后顺序,父子关系的异常,子型放在父型之上。 2, MIDI(import javax.sound.midi.*;):本身不带有音乐信息,上面带的是如何播放音乐的信 息,跟乐谱差不多,所以占用空间很小。播放音乐的层次:Sequencer(播放器)- Sequence(CD 盘)-Track(单曲)-MidiEvent(音符) 。构建的五个步骤:取得 Sequencer

6、 并将它打开-创建新的 Sequence-从 Sequence 中创建新的 Track-填入 MidiEvent 并让 Sequencer 播放-按下 play 键。然后是各种的方法和各种的参数,各种看书和查阅 JAVA API(MIDI 的参数表至今没有找到) 。第十二章 看图说故事(图形用户接口) 这章主要介绍了 GUI(Graphical User Interface):制作窗口和按钮,简单绘图和贴图,简 单的动画等等。 1,JFrame 用于创建主框架,通过 getContentPane()把 JButton,JLabel 等其他组件 (widget)挂载在上面。 (import ja

7、vax.swing.*;其他方法和参数见书本或 JAVA API) 2,事件源(event source)本身是个对象(框架,按钮,滚动条等) ,把用户的操作(点击 鼠标,按键等)转换成事件(event) ,如果当前事件源被一个或若干个监听器 (listener)注册,那么它会把事件(event object)当成参数返回到实现了对应的监听接 口的对象上面。 3, 通过用子类继承 JPanel 来挂图和绘图。挂图和绘图在类里面的 paintComponent 方法里 面实现。绘图的时机一般由系统决定,也可以通过 repaint()命令来强制马上重绘。 4, 内部类(inner class):唯

8、一绑定在第一个初始化自己的外部类上,绑定后不可更改绑 定对象,可以使用外部所有的方法与变量,包括有私有标识的。 5, Thread.sleep()用于短暂挂起线程。 (C 里面的 Sleep()函数) 6, 监听 MIDI 文件的方法:注册一个特殊编号的 MIDI 事件(看作 ControllerEvent)插入 到 MIDI 文件上所有含有 NOTE ON(第一个参数是 144)标志的节拍上,把 ControllerEventListener 注册到 sequence 上,最后在带有 ControllerEventListener()接口的 controlChange(ShortMessag

9、e ev)方法上实现监听后的响应工作。第十三章 运用 Swing(Swing) 篇幅比较短的一章,主要介绍了布局管理器(Layout Managers) 。 1, 几乎所有组件(Components,或 widget)都能够安置其他的组件,除了 JFrame 之外, 交互组件于背景组件的差异不明显(JPanel 虽然一般都当做背景来使用,但也可以像 按钮一样注册鼠标点选的事件) 2, 布局管理器(Layout Managers):通过一种交互的机制(人机交互,布局层次内部的 交互)自主决策组件布局的一类对象。决策时优先遵循自己的布局策略,在不破坏自 身布局策略的前提下最大程序上满足用户提出的布

10、局请求(也就是有时候会违反用户 的请求) 。 3, 书上提到的三大布局管理器:BorderLayout(把背景组件分成东南西北中五个区域,优 先分配南北,然后东西,最后剩下的部分为中间) ,FlowLayout(把组件从左到右地排 列,并有自动换行的机制) ,BoxLayout(把组件从上到下地排列,但不带有自动换行 的机制) 4, 剩下的 JTextArea,JScrollerPane 等的方法和参数等可参看书本。第十四章 保存对象(序列化和文件输入/输出) 终于到输入输出了,这一章的翻译挺不到位,建议对照英文教材阅读之。 1, Java 数据输出的两种方法,只给 Java 读取的话用序列化

11、(serialization) ,如果要给其他 程序读取或使用,输出纯文本文件。 2, (import java.io;)一般来说,串流(stream)要连接流(connection stream)和链接流 (chain stream)两两配合才能有效。其中连接流负责连接到文件,socket 等,但因为 自身一般只有像输出字节等低级方法,所以要借助较为高级的连接流中的高级方法才 能转换成功。3, 要一个类实现可序列化,需要实现 Serializable 接口。如果不想某个实例变量被序列化, 标记上 transient(像网络联机这类随机数据也应该标记 transient) ,考虑到要完整且正

12、确地恢复到原状态(所谓状态,一般就是指实例变量的值) ,序列化时候需要把与保存 对象相关的所有对象形成的网络全部序列化保存(如果网络中有一部分实例变量既没 有实现 Serializable 又没有被标记 transient) 。 4, 对于纯文件的处理用 FileWriter 和 FileReader,为提高效率,可以选择使用 BufferedReader 和 BufferedWriter 5, 剩下还有关于 GUI 和 IO 的很多类很多方法很多参数,参看书本吧。第十五章 网络联机(网络与线程) 嘛,这章大致介绍了怎么实现网络联机,还是就是一些多线程的细节问题。 1, 聊天程序的工作方式:客

13、户端连接到服务器-服务器建立连接并把客户端架到来并清 单中-另外一个用户连接上来-用户 A 送出信息到聊天服务器上-服务器将信息送给 所有的来宾(一开始对最后一步有疑问,参看 P488 就恍然大悟了) 2, Java 不需要注意太多细节的东西就可以架设好网络连接(同时译者提醒读者不要把架 设网络想成是太简单的事情- -) 3, (import .*;)建立 socket 连接,要知道 IP 地址和 TCP 的端口号。 (本机 IP 地址 为:127.0.0.1) 4, 关于网络串流的读写:读,服务器(server)-Socket 输入流-InputStreamReader- BufferedR

14、eader-客户端(client) 。写,客户端-PrintWriter-Socket 输出流-服务器。 (不知道为什么中间不加 BufferedWriter) 5, 多线程(multithreading):线程(thread)是一种独立的执行空间(a separate call stack) ,除非是多处理器,否则新线程并不是单独运行的线程,虽然感觉上是这样。 6, 每个 thread 需要一个任务来执行,一个可以放在执行空间的任务(实现 Runnable 接口 的中的 run(),类似于主线程的 main()方法) 。线程有“新建” “可执行” “执行中”三个 状态,而且,一旦线程进入了“

15、可执行”状态后,它会在“可执行”和“执行中”两 种状态中不停地切换(除非处于堵塞状态) 7, 线程调度器(the thread scheduler):Java 自带的决定什么时候运行哪个线程的一种机 制,不受用户的 API 的控制,所以调度结果无法确定(不同的机器有着不同的执行过 程,同一台机器也会有着不同的执行过程) 。 8, 可以用 sleep()方法来影响调度器,不过作用效果一般没有想象中要好。 9, 并发性问题(concurrency issue):当两个或以上的线程存取单一对象的数据的时候, 就有机会发生各种奇怪的错误。为了排除这类问题,使用 synchronized(同步化过的)

16、标志对象运行中的那些不可分割的过程,类似于一把锁,锁住了储存数据的方法,使 一个对象对这个数据使用完毕之后再允许其他对象使用该数据。第十六章 数据结构(集合和泛型) 各种集合(collections)(目前在学 C+版的数据结构讨厌的课程) 1, 各种数据结构:TreeSet(有序防重复) ,HashMap(每个数据都有对应的 KEY 值) , LinkedList(大集合的快速插入和删除中间元素,这效果,有点像链表) ,HashSet(防 重复,可以快速寻找元素) ,LinkedHashMap(HashMap 的升级版,具体看书) 。书本 的说法是:list 对付顺序结构,set 注重独一无二的性质,map 用 key 来搜索的专家。 2, 使用 System.out.println 集合的时候,要覆盖集合元素的类中的 public String toString()方 法来设定输出的内容。3, 使用 Collection.sort(某集合)方法的时候,要求某集合的元素实现排序化(实现 Compar

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号