1.数组的高级操作
1.1二分查找(折半查找):
目的: 找元素
前提: 数组的元素是排好序的
1.2冒泡排序
目的: 排序 (相邻两个比较, 大的往右边排)
1.3Arrays的工具类
- static int binarySearch(double[] a, double key) 二分查找!!!
- static void sort(byte[] a) 对数组进行排序
- static String toString(数组)
2.递归
现象: 方法调用自己的现象我们成为递归 作用: 类似于循环!!!!!!
注意事项: 递归有出口, 否则会报StackOverFlowError ----> 栈内存溢出
建议 能用循环就用循环解决, 不能循环在考虑递归!!!!!!
用途:主要解决不确定循环层数的这种需求!!!!!!
2.1BigInteger(大整数)
构造 BigInteger(String val)
作用 用来计算超级大的整数, 原理是底层基于字符串, 么有长度限制!!!!!
功能
- BigInteger add(BigInteger augend) 一个BigInteger和另外一个BigInteger的对象进行相加, 返回新的BigDecimal,老的不变!!!!
- BigInteger subtract(BigInteger subtrahend) 一个BigInteger和另外一个BigInteger的对象进行相减, 返回新的BigDecimal,老的不变!!!!
- BigInteger multiply(BigInteger multiplicand) 一个BigInteger和另外一个BigInteger的对象进行相乘, 返回新的BigDecimal,老的不变!!!!
- BigInteger divide(BigInteger divisor) 一个BigInteger和另外一个BigInteger的对象进行相除, 返回新的BigDecimal,老的不变!!!! 必须能够被除尽才能使用该方法!!!!!
3.异常
jvm如何处理异常
1.打印了异常的信息
异常的类型 异常的原因 异常的位置
2.终止了程序
3.1自己处理异常
1.将异常抛给调用者处理!!!
通过 throws关键字见异常声明到方法的声明上面, 告知调用者你可能产生的异常, 起到警示的作用!!!!!!!!!
格式: throws 异常类名1,异常类名2 ...... (可以声明多个异常类型)
2.捕获异常
try{
//可能会出现问题的代码
//以及出现问题后不需要执行的代码
}catch(异常类型 异常名){
//出现问题后的提示
}....
catch(异常类型 异常名){
//出现问题后的提示
}
作用: 不让程序终止!
流程:catch是中国好备胎, 当try里面出现问题后, 会根据异常类型从上往下匹配catch,一旦匹配成功执行对应的catch的语句, 然后try语句执行完毕
注意事项:
- 1.一个try可以配很多catch
- 2.catch的异常类型如果有子父类关系, 父类的异常类型应该定义在下面, 否则会报错
- 3.如果catch都不匹配, jvm帮我们处理, 但是jvm只会处理运行时异常 ,如果编译时必须得处理
- 快捷键:ALT+CTRL + T
3.2throw和throws的区别
throw:
- 作用: 制造异常, 终止方法
- 位置: 在方法里面用的
- 跟的异常对象, 只能跟一个
- 使用场景: 一般用于校验参数的合法性
throws:
- 作用:声明异常, 告诉调用者方法可能产生的异常
- 位置: 方法的声明上
- 跟的异常类型, 可以跟多个!!!
3.3异常的方法
观察发现所有的异常都是类名不一样而已, 功能都是从父类中继承下来,所有我们学习Throwable的功能即可
void printStackTrace(),将异常的信息打印到控制台中 异常的类型 异常的原因 异常的位置
3.4自定义异常
本质:就是让异常类名更具备见名知意的效果!!!!!
步骤:
1.定义一个类去继承Exception或者RuntimeException, 然后起一个见名知意的名字即可
2.根据父类构造生成自己的构造即可