安卓开发之java基础笔记9异常、集合、泛型、递归

异常处理:
异常就是程序在运行过程中发生不正常的事件,导致程序运行中断。
java的异常处理可以让程序具有更好的容错性,程序更加健壮。提供更好的可读性。
java的异常处理是通过5个关键字来实现的:
try  catch  finally  throws  throw

try-catch块
try{
}catch(异常类型 参数){
}
try块用来监控可能会发生异常的代码
catch块用来捕获发生的异常
当try块中没有异常发生的时候,catch块不会启动。程序会正常执行try内的代码,以及try-carch之后的其他代码。
当try块有异常发生的时候,如果产生的异常类型和catch块要捕获的异常类型相匹配,那么会启动catch捕获异常后程序正常执行。
如果异常类型不匹配,则无法捕获异常。

finally块:【必须结合try块使用】
无论有没有异常发生都必须要执行的操作放在该语句块中。
如果有异常发生,并且被catch捕获。在catch块中有System.exit(1)语句退出程序,finally这时将不能被执行。

常用异常:
NullPointerException    空指针异常

多重catch块
为了可以捕获try发生的多种类型的异常,可以使用多种catch块用来捕获不同类型的异常,多重catch块的顺序是先特殊后一般。
try{
}catch(异常类型 参数1){
}catch(异常类型 参数2){
}catch(Exception 参数3){
}
使用注意:先特殊后一般,即先子类后父类。

throws关键字:
放在方法定义的地方,用来声明该方法有可能会引发的异常,而方法本身不对异常做处理,谁调用方法,谁对方法可能引发的异常做处理。
public void 方法名()throws 异常类型,异常类型{
}

throw关键字:
throw new Exception();
真正的引发一个异常,当程序中有一些不合理的操作发生时我们可以使用throw来由程序员通过代码引发一个异常,该异常也可以被捕获到。

集合:
Collection集合【接口】存储一组不唯一、无序的对象
List【接口】
ArrayList:【类】

是一个长度可以动态改变的一个动态数组。在对集合元素进行遍历或者随机查看时效率比较高。父类接口List,在内存中分配连续的空间。
如果要对数据进行频繁遍历操作的时候使用ArrayList
LinkedList:【类】
是一个链表结构的集合,前一个元素会保存下一个元素的地址,元素的存储位置并不是连续的。当我们要对集合中的数据进行频繁的删除、插入,
更新头尾元素的操作的时候可以使用链表,效率要比ArrayList高。
Map【接口】
HashMap【类】

元素在内存中存储的方式是以键(key)值(value)对的方式存放的。
添加元素:put(key,value)
获取元素:get(key)
删除元素:remove(key)
获得元素个数:size()
获取键集:keySet()
通常不会对Map结构的集合进行遍历操作,如果想去进行所有元素的查看,先获得键集,然后遍历。
总结:
Vector和ArrayList区别:

Vector实现了线程同步,在多线程模式下,可以使用Vector 保证数据的一致。
ArrayList没有实现线程同步,单线程模式下使用速度效率高。
HashTable和HashMap区别:
同以上两个集合的区别
迭代器Iterator
通过集合对象获得它们的迭代器,通过While循环来控制集合元素的循环迭代。

泛型:
泛型集合:
java的集合框架是支持泛型的,通过设置集合的泛型实参,可以控制集合中添加的元素的数据类型,
一但在创建集合对象的时候限定了泛型实参,集合中所添加的元素类型就确定了,
这样的话,把元素添加到集合里时就不再做装箱操作,获取元素时也不再做拆箱操作,避免了类型转换的异常。
泛型类:
在定义类的时候可以通过泛型形参限定类操作的数据的类型,称为泛型类。
泛型通配符:
?作为泛型通配符,可以限定方法的参数,支持某泛型类型。
泛型上限:
?extends 类(接口)来限定泛型的上限,即泛型实参的类型只能是指定的类及其子类类型。
泛型下限:
?super 类(接口)来限定泛型的下限,即泛型实参的类型只能是指定的类及其父类类型。

递归:
使用的是数学中的递推的思想,也将降阶。实现的方式是一个方法调用自己本身。
在递归的方法中必须有条件语句用结束递归,否则会导致死循环。所有的递归都可以用循环来解决。
调用栈
后进先出【先进后出】的一种数据结构。目的是:沿原路返回常处
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值