1.抽象类与接口的异同
*都是上层抽象层,不能直接被实例化。都包含抽象方法,描述类具备的功能。
*抽象类可以包含非抽象普通的方法,子类直接继承就可以使用,提高代码复用。这抽象类的优势,接口只能定义抽象方法。
*单继承,多实现。一个类只能继承一个父类,这个当然可以是抽象类,也可以是普通的类。但一个类可以实现多个接口。
*抽象类中的方法如果没被子类全部实现,那这个子类也必须是抽象类。接口中的方法如果没被子类实现,同样这个之类也必须是抽象类。
*抽象类和接口不能直接实例化,所以其中方法不能是static,或者private的
*接口是对动作的抽象,而抽象类是对根源的抽象。对于抽象类,比如男人,女人这两个类,那我们可以为这两个类设计一个更高级别的抽象类--人。对于接口,我们可以坐着吃饭,可以站着吃饭,可以用筷子吃饭,可以用叉子吃饭,甚至可以学三哥一样用手抓着吃饭,那么可以把这些吃饭的动作抽象成一个接口--吃饭。所以在高级语言中(如Java,C#),一个类只能继承一个抽象类因为你不可能同时是生物又是非生物)。但是一个类可以同时实现多个接口,比如开车接口,滑冰接口,啪啪啪接口,踢足球接口,游泳接口。
2.访问修饰符
public 整个项目都可以访问
protect 本包及其子类(可能在包外)都可以访问
defalt 本包访问权限
private 私有的,本类访问权限
3.swith(expresion)
expresion可以是byte, Byte,short, Short, int, Integer, char, Character, String, enum
4.String StringBuffer StringBulid
String 长度不可变,StringBuffer长度可变,线程不安全但速度快,StringBulid线程安全但速度慢
5.集合框架
有两大家族
coolection Map
| |
List(列表) Set(集) queue |
| | | |
List有序可重复,List关注的是索引,查询速度快,增加删除会伴随着后面数据的移动,所以速度慢。
Set无序不可重复
Map键值对,先对key进行遍历得到一个Set集合,再对Set集合进行遍历得到相应的值
有两种常用的迭代方式:
Iterator迭代输出
foreach,for迭代输出
所有的集合类都实现了Iterator接口,常用的三个方法:
hasNext()是否还有下一个元素
next()返回下一个元素
remove()删除当前的元素
6.排序
插入排序
选择排序