黑马程序员_破解面试题视频_简单笔记整理
2014-03-16 23:33
453 查看
------- android培训、java培训、期待与您交流!
----------
张老师在7K面试题破解的视频中,讲了两个例子:交通灯 和 银行排队系统
在这里,不赘述整个开发流程,和代码结构。
仅记录整理一下自己从中学到的东西。
注:由于这块知识点在应用中比较重要,知识点较多,需要深入学习,暂且不归档到当前博文中。
1、勤动笔,画模型,找规律
程序设计过程中,单靠脑子去想流程,是一件十分不靠谱的事。
就拿视频中关于交通灯程序部分的讲解,考虑一个十字路口交通线路的问题,总共十二条线路,仅仅依靠思考中,看似简单的一条一条去数,容易忘,也容易搞混淆。所以,在程序设计过程中,动笔在纸上画一画示意图,整个线路构成,一目了然。即:切不可空想。
十字路口交通路线图:
2、面向对象设计经验
之前看基础视频的同学都知道,在设计对象的时候,“名词提取法”,是一种行之有效的方法。但单靠名字提取法,有时候,会引出许多没有直接联系的对象。在这个部分,老师提出了如下经验,用以辅助选择对象即:
谁拥有数据,谁就负责对外提供操作这些数据的方法。
比如:列车员刹车。对象是“列车员”和“火车”,但真正实现刹车的方法是封装在“火车”中的。列车员,仅仅是调用该方法。
同时,在较为复杂的面向对象设计中,如何设计对象,永远没有标准答案,只有简单与复杂,可读性强与可读性弱之分。见仁见智吧。
3、关于switch-case效率比if-else高的问题
看完视频后,在网上查找了一下相关的文档,没有找到直接关于JAVA语言中的描述。参考C++的解释,switch-case效率比if-else高其本质是switch-case语句维护了一张连续的数据表,用于保存case中值,是以空间换效率的典型案例。运行过程中,不需要过多的运算,复杂度为O(1)。在if-else语句中,只有出现第一个条件就满足比较的情况,其效率才能和switch-case相当。
当然,if-else可以比较区间,而switch只能列举固定的整型值、字符、枚举、字符串(JDK1.7以后),这也是if-else无可替代的优势。
4、关于枚举的提醒
有一阵子没用枚举了,重新确认一下几点:
1)枚举是特殊的类,它在字节码初始化之后,就已经有固定的对象存在了,不可以在程序运行中添加、删除对象。
2)单个实例的枚举,可以实现单例模式。
3)枚举的构造器访问权限,应该是私有的。
4)枚举类中的静态方法valueOf(),可用于根据字符串,来获取与字符串同名的枚举实例。
5、强调下内部类与外部类的部分知识点:
1)内部类在访问外部类成员时,外部类成员必须加final修饰。
2)内部类在调用外部类方法或资源时,完整的写法应该是:外部类名.this.方法名 / 外部类名.this.成员名
6、Executor框架
(由于这块知识点在应用中比较重要,需要深入学习,暂且不归档到当前博文中)
------- android培训、java培训、期待与您交流!
----------
----------
张老师在7K面试题破解的视频中,讲了两个例子:交通灯 和 银行排队系统
在这里,不赘述整个开发流程,和代码结构。
仅记录整理一下自己从中学到的东西。
注:由于这块知识点在应用中比较重要,知识点较多,需要深入学习,暂且不归档到当前博文中。
1、勤动笔,画模型,找规律
程序设计过程中,单靠脑子去想流程,是一件十分不靠谱的事。
就拿视频中关于交通灯程序部分的讲解,考虑一个十字路口交通线路的问题,总共十二条线路,仅仅依靠思考中,看似简单的一条一条去数,容易忘,也容易搞混淆。所以,在程序设计过程中,动笔在纸上画一画示意图,整个线路构成,一目了然。即:切不可空想。
十字路口交通路线图:
2、面向对象设计经验
之前看基础视频的同学都知道,在设计对象的时候,“名词提取法”,是一种行之有效的方法。但单靠名字提取法,有时候,会引出许多没有直接联系的对象。在这个部分,老师提出了如下经验,用以辅助选择对象即:
谁拥有数据,谁就负责对外提供操作这些数据的方法。
比如:列车员刹车。对象是“列车员”和“火车”,但真正实现刹车的方法是封装在“火车”中的。列车员,仅仅是调用该方法。
同时,在较为复杂的面向对象设计中,如何设计对象,永远没有标准答案,只有简单与复杂,可读性强与可读性弱之分。见仁见智吧。
3、关于switch-case效率比if-else高的问题
看完视频后,在网上查找了一下相关的文档,没有找到直接关于JAVA语言中的描述。参考C++的解释,switch-case效率比if-else高其本质是switch-case语句维护了一张连续的数据表,用于保存case中值,是以空间换效率的典型案例。运行过程中,不需要过多的运算,复杂度为O(1)。在if-else语句中,只有出现第一个条件就满足比较的情况,其效率才能和switch-case相当。
当然,if-else可以比较区间,而switch只能列举固定的整型值、字符、枚举、字符串(JDK1.7以后),这也是if-else无可替代的优势。
4、关于枚举的提醒
有一阵子没用枚举了,重新确认一下几点:
1)枚举是特殊的类,它在字节码初始化之后,就已经有固定的对象存在了,不可以在程序运行中添加、删除对象。
2)单个实例的枚举,可以实现单例模式。
3)枚举的构造器访问权限,应该是私有的。
4)枚举类中的静态方法valueOf(),可用于根据字符串,来获取与字符串同名的枚举实例。
5、强调下内部类与外部类的部分知识点:
1)内部类在访问外部类成员时,外部类成员必须加final修饰。
2)内部类在调用外部类方法或资源时,完整的写法应该是:外部类名.this.方法名 / 外部类名.this.成员名
//定义外部类 public class Outer { //定义外部类成员 private int outerNum; //定义外部类方法 int outerFunc(){ return outerNum; } //定义内部类 class Inner { void InnerFunc(){ //调用外部类成员(完整写法) int num = Outer.this.outerNum; //调用外部类方法(完整写法) Outer.this.outerFunc(); //调用外部类成员(省略写法) int num1 = Outer.this.outerNum; //调用外部类方法(省略写法) outerFunc(); } } }
6、Executor框架
(由于这块知识点在应用中比较重要,需要深入学习,暂且不归档到当前博文中)
------- android培训、java培训、期待与您交流!
----------
相关文章推荐
- 黑马程序员-----张孝祥-7K月薪面试题破解之二_银行业务调度系统视频教程观后总结
- 黑马程序员—Java基础学习笔记之7K月薪面试题破解_银行业务调度系统
- 黑马程序员-----张孝祥-7K月薪面试题破解之一_交通灯管理系统视频教程观后总结
- 黑马程序员—Java基础学习笔记之7K月薪面试题破解_交通灯管理系统
- 黑马程序员----【张孝祥7K面试题】一交通灯管理系统视频学习笔记
- 黑马程序员----【张孝祥7K面试题】二银行业务调度系统视频学习笔记
- Python简单爬虫开发的学习笔记整理(爬取百度百科词条)
- 韩顺平_php从入门到精通_视频教程_第3讲_符号实体_url说明_超链接_发送电邮_学习笔记_源代码图解_PPT文档整理
- 韩顺平_php从入门到精通_视频教程_第5讲_无序列表_有序列表_框架_学习笔记_源代码图解_PPT文档整理
- 【笔记】简单整理23种设计模式及实例使用
- 黑马程序员_7K月薪面试题破解之二_银行业务调度系统
- 三、深入Javascript(2)_看智能社blue老师JS视频整理的笔记
- 黑马程序员---面试题破解之一_交通灯管理系统
- 黑马程序员------毕老师视频笔记第七天------面向对象(接口)
- 黑马程序员_毕向东_Java基础视频教程学习笔记(十七)
- “黑马程序员”视频学习笔记之javascript基础
- 韩顺平PHP学习视频笔记整理004html基本操作续--课后作业
- 黑马程序员_毕向东_JavaScript视频教程--学习笔记
- 黑马程序员-----笔记整理(java基础十----集合)
- 黑马程序员————OC内存管理_笔记整理(二)