第十节异常及折半查找

来源:互联网 发布:爱奇艺网络大电影票房 编辑:程序博客网 时间:2024/05/21 20:30

一.回顾
数组:java 中的容器
特点:要求必须存储同一种类型数据
存储数据必须要明确元素个数 —数组长度

数组是引用类型得变量,存在堆内存中
数组介意存任意类型得数据

二.本节课内容
二分查找 –前提:数组中的元素是有序的—折半查找
原理:
1.头角标 中间角标 尾角标(数组长度-1) 分别定义
2.通过循环判断 —-头角标<=尾角标>
3.得到中间角标=(头角标+尾角标)/2
4.if(要查找的数key>数组[中间角标])(头角标=中间角标+1)
5.else if(要查找的key<数组[中间角标]>)(尾角标=中间角标-1)
6.else {
找到了 这个角标 就是中间角标
}

2.Arrays方法
binarySearch(int[] a, int key) : 二分查找
copyOf(int[] original, int newLength) : 复制数组, 生成新的数组
copyOfRange(int[] original, int from, int to) : 将制定数组中的指定范围截取, 生成一个新的数组
equals(int[] a, int[] a2) : 判断数组中的元素是否相等
fill(int[] a, int val) : 将指定的 int 值分配给指定 int 型数组的每个元素。
sort(int[] a) : 对指定的 int 型数组按数字升序进行排序。
toString(int[] a) : 返回指定数组内容的字符串表

示形式。

3,二维数组

arr[0]存储的是第一个非空数组的地址
数组中存储的类型是数组,成为二维数组,
int[] arr={};
String []arr2={“”,”“,”“,”“};
Person []arr3={newPerson(),new person()}
定义格式
格式一
int [][]arr=new int [3][2]定义了一个二维数组,里面存了三个一维数组,然后每一个一维数组中存了两个int类型的元素
二维数组不能强转成一维数组

格式二:int[][]arr={{},{}}

4,异常

1.概念在程序运行时,发生的一些不正常的事件,导致程序无法正常执行,严重的话程序被迫终止.

举例说明:
Exception in thread “main” java.lang.ArithmeticException: / by zero
at com.qf.demo03.ExceptionDemo01.main(ExceptionDemo01.java:13)
Exception :异常
thread : 线程
java.lang.ArithmeticException : 算术异常
/ by zero : 导致异常的原因 /0
2.分类
错误:error 程序员无法解决
异常:exception 程序员可以解决

java.lang.Object    java.lang.Throwable        java.lang.Exception3.如何解决异常3.1抓--异常捕获try{可能产生异常的代码}catch(异常类型 名称){对异常的处理}finally{无论程序是否产生异常,此处代码都会被执行关闭流,断开连接}

注意:
1catch中的子类的异常写在上边,父类型的异常写在下边(也就是大异常放在最后面)
2catch语句块可以写多个,但是try只能写一个,finally
可写可不写

3.2抛throws 跑出的意思用法:在方法声明时,表示该方法中不处理异常,抛出给方法的调用者去处理,可以抛出多个异常Exception和RuntimeException1.exception是runtimeException的父类2.runtimeexception程序可以暂时不处理如果程序发生了异常,在修改程序即可Exception特别是受检异常,程序必须做处理,否则编译无法通过,程序不能运行    throw代码中主动抛出一个异常二者区别throws使用在函数的后面,用于功能声明的异常,抛出的是异常类throw只能用在函数的内部,用抛出异常类的对象额外的特点:一旦执行了throw就结束了功能(方法了)return 和throw区别return 返回函数的结果还可以结束函数throw该函数遇到问题,可以直接中断函数的功能

异常的好处:
将遇到的问题封装成对象,将正常处理代码和问题的处理分开了
自定义异常:自定义一个类,继承Exception或者其子类

总结:
1.二分查找–折半查找-头角标 尾角标 中间角标
2.Arrays类
binarySearch ()二分查找
copyof() 复制一个新的数组
copyOfRange()
equals()判断数组中元素是否相等(个数 位置 内容 都相同)
fill(数组名,修改后的值)修改数组所有值
fill(数组名,开始角标,结束角标(不包含)修改的值)
sort (数组名) 升序排
toString()输出数组中的内容
3.二维数组–存的是一维数组
int [][]arr=new int[4][3];
int [][]arr={{},{},{},{}};
4.异常
定义:程序执行时,发生了不正常的事件,导致程序无法正常运行
5.Throwable
error
exception
6.异常的分类
受检异常 :程序编译能检查出来的异常,必须要处理
FileNotFoundException SQLException
非受检异常:(RuntimeException)程序编译不会检测,可以暂时不处理
NullPointerException IndexOutOfBoundException
ClassCastException ArithmeticException
自定义异常
继承Exception或其子类

7.异常的处理(重点)

抓: try{
可能发生错误的内容
}catch(异常的类型 e){
处理异常

}[finally]{此处代码一定会被执行无论是否产生异常}

抛: throws 方法的声明后面直接抛出–异常类
throw 方法中,抛出异常,异常类的对象
8.面试 Exception和RuntimeException区别(重点)

原创粉丝点击