第十节异常及折半查找

一.回顾
数组: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.Exception
3.如何解决异常
3.1抓--异常捕获
try{
可能产生异常的代码
}catch(异常类型 名称)
{
对异常的处理
}finally
{
无论程序是否产生异常,此处代码都会被执行
关闭流,断开连接
}

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

3.2抛
throws 跑出的意思
用法:在方法声明时,表示该方法中不处理异常,抛出给方法的调用者去处理,可以抛出多个异常

Exception和RuntimeException
1.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区别(重点)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值