您的位置:首页 > 职场人生

黑马程序员_破解面试题视频_简单笔记整理

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.成员名

//定义外部类
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培训、期待与您交流!
----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐