集合框架+泛型+异常
泛型
在提到泛型之前我们需知什么是集合?为什么要使用集合?
集合是在数组之后提出的,集合比数组更加灵活,数组的长度是固定不变的,
如果数据多则造成空间不足,如果数据少,则造成浪费内存空间。如果我们不知道程序有多少对象,而集合便可以解决该问题。
集合框架都包含三大内容:接口的实现,对内的实现和对集合运算的算法。
接口:表示对集合的抽象数据类型,如list,map,collection,set,lterator。
我们在使用集合的时候都不会用接口,而是用接口的实现,
实现:集合框架中接口的具体实现。如ArryList,linkedList,HashMap,HashSet。
算法:某个集合框架中的接口的对象身上完成某种有用的计算算法,java提供了对集合操作的工具类Collections,他提供了对集合进行排序等多种算法实现。
ArryList:
存放的数据有序且可重复。
List list=new ArryList();
List<数据的类型> list=new ArryList<数据的类型>();
<>内可以存放String,int等等,还可以存放泛型,也就是类类型。如:List<User> list=new ArryList<User>();
LinkedList:
采用链表方式存储。优点在于插入,删除元素时效率比较高。
它提供了额外的addFirst(),addLast(),removeFirst(),removeLast()等方法。
List list=new LinkedList();
List<> list=new LinkedList<>();
HashMap:
Map集合可以存储多个元素,每一个元素都由一个key和value组成,也就是键值对。map是使用put的方式来添加数据的。
Map map=new HashMap();
Map<key,value> map=new HashMap<key,value>();
Map集合获取数据时,使用key来获取数据,key不要求有序,但不可以重复。HashMap方式存储数据的优点是查询指定元素效率高。
泛型类:泛型类型可以为T V K E等等,用于占位,可以指定具体的泛型类型。泛型类,是在实例化类的时候指明泛型的具体类型。
泛型接口:泛型类型可以为T V K E等等,用于占位,可以指定具体的泛型类型。
泛型方法:泛型方法,是在调用方法的时候指明泛型的具体类型 。
泛型集合:
使用泛型集合创建集合对象时指定集合中元素的类型,从集合中取出元素时无需进行类型强制转换,并且如果把非指定类型对象放入集合,会报错。
异常
java的异常处理是通过五个关键字来实现的:try,catch,finally,throw,throws。
1.可以使用try-catch块进行异常处理 小tip:(try和catch是一起的不能单个出现,否则会程序编译时异常。)
如果try块中所有代码执行成功则不会发生异常。不走catch块。
如果try块中代码有异常,切异常类型catch块的异常类型可以匹配则走catch块。
如果try块中代码异常和catch块的异常类型不匹配则不走catch块。
所以我们一般定义catch块的异常类型都定义为Excption。因为所有异常子类都继承Exception,他包含的异常比较多。
2.try-catch-finally
try-catch-finally是不管你try中有没有异常,走不走catch,finally块中的代码是必须执行的。
3.多重catch块
一段代码可能会引发多种类型的异常,这时,我们可以在一个try语句块后面跟多个catch块,分别处理不同的异常。
但排序顺序必须是从子类到父类,最后一个一般都是Exceotion类。
4.声明异常throws
java语言通过关键字throws声明某个方法可能抛出的各种异常。我们感觉方法有可能有异常我们可以给这个方法声明一下异常。
如何处理声明异常。
4.1通过try-catch捕获并处理异常。
4.2通过throws继续声明异常。
5.抛出异常throw
有时候有一些异常如性别输入的并不是男或女,这个时候是有异常的,而系统不会去抛出异常,需要我们程序员自行抛出异常。
如:
if(值不等于男||值不等于女){
throw new Exception("性别必须是男或者女!!!!");
}
然后我们可以使用try-catch捕获异常。
Throwable的子类是:Error和Exception异常
最大的还是Object。throwable就是Object的子类。
Error:表示仅靠程序本身无法恢复的严重错误,如内存溢出动态链接失败,虚拟机错误。
Exception:由java应用程序抛出和处理的非严重错误,如所需文件找不到,网络链接中断或不通。
在进行程序设计时,应该更关注Exception类。