异常:
异常的分类图:
Throwable是所有异常的根,java.lang.Throwable
Error是错误,java.lang.Error
Exception是异常,java.lang.Exception
Throwable是所有异常类的父类,
而Error类是当程序发生不可控的错误时,通常做法是通知用户并中止程序的执行。与异常不同的是Error及其子类的对象不应被抛出。
Error是throwable的子类,代表编译时间和系统错误,用于指示合理的应用程序不应该试图捕获的严重问题。
Error由Java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等。程序对其不做处理。
所以重点介绍的异常Exception类,这类大致可分为可检查类和RuntimeException类。
检查类是java虚拟机编译时发现的异常类,所以java程序必须要对此异常做出处理(捕获或抛出),才能到运行。否则无法通过编译。
检查类可分为以下几种常见的类,其父类为;
1,类 IOException:当发生某种 I/O 异常时,抛出此异常。此类是失败或中断的 I/O 操作生成的异常的通用类。
2,类 ClassNotFoundException:这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现
的问题,异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默
认加上package的,所以转到wtk下后要注意把package的路径加上。
3,类 BadStringOperationException:向构造查询的方法传递无效的字符串操作时,抛出此异常。
RuntimeException是运行时期发生的运行错误,是自身程序代码出现的问题,可以不用抛出异常,java编译器不会检查它,
会让程序通过编译!一般是程序逻辑上的错误,要对程序修改,是调试的一种方式,所以一般不需要抛出。
RuntimeException同样也是继承于Exception类。一般分为以下几类:
1,ArithmeticException 算数运算错误异常
这个异常是在算数运算时经常遇到的,常见的情况是除数为0时抛出的异常。
2,NullPointException 空指针异常
这个异常是针对调用未经初始化或未定义的对象抛出的异常。
3,ClassNotFoundException 不能加载所需的类
在java文件编译后,可能是由于需要把.class文件移到了其他的文件夹,此时引用这个.class文件要注意修改其路径,
否则会抛出ClassNotFoundException异常。
4,InputMismatchException
输入的数据类型与所需类型不匹配异常,比如你需要int类型,但是通过输入框得到的是String类型,就会抛出。
5,NumberFormatException 字符串转换成数字异常
在数据类型强制转换时出现的异常,字符串“123”转换成数字123不会出现异常,但是字符串“1@23”转换成int类型就会抛出
6,IndexOutOfBoundsException
指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。
7,IllegalMonitorStateException
抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。
异常的概念:
Java异常时java提供的用于处理程序时错误的一种机制。
所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,读取的文件不存在,或者传递值类型不同)
设计良好的程序应该在异常发生时提供错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。
Java程序的执行期间过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交java运行
系统,这个过程被称为抛出(throw)异常。
当Java运行时系统接受异常对象时,会查找能处理之一异常的代码并把当前异常对象交给其处理,这一过程被称为捕获(catch)异常。如下例子:
可以把有风险的代码包在try-catch中,当捕获到异常时,程序会对异常做出一定的处理,让程序接着运行。上图中,
在执行n=Integer.parseInt(“112wd”);是发生错误(带有除数字以外的字符不能转为int型),本身程序应该中断发送异常,
但是在try语句下,发生异常时会跳出try,执行catch中的代码,对程序发生的异常作出异常声明或者修改错误。而finally语句是
在不管异常是否发生的。
异常也属于对象,也是多态的!
通常以个try-catch语句中可以包含多个catch语句,根据不同的异常类执行相对应的catch语句。但是有多个catch语句必须要按从小到大的
关系排列。假如Expetion类在前面,它包含了所有的异常子类,无论发生什么语句都会执行该异常类下的方法,java查找方式是根据语句的顺序找的,所以catch语句必须要按照一定的顺序排列,最小的子类应该排在最前面,最大的父类应该在最后面。如:
除了try-catch捕获以外,如果不想处理异常,你可以把它抛出来避开。
当你调用有危险的方法时,编译器需要对你这件事有所表示。大部分情况下这代表可把此调用抱在try-catch中,但是也可以执行不同的方案:
把他抛掉以让调用的你的方法的程序来catch该异常。如:
如上,二者都没有catch异常,只是抛出了并没处理,但是程序还是能通过编译。但也可以在调用方法是来catch该异常。如:
数组:可以看出是多个相同类型数据组合,对这些数据的统一管理。
数组变量属于引用类型,数组也可以看出是对象,数组中的每个元素相当于该对象的成员变量。
数组中的元素可以是任何数据类型,包括基本类型和引用类型。
在java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型[数组元素的个数];
每一个数组都有一个属性length指明它的长度,例如: a.length的值为数组a的长度即元素个数
例如:
public class Test{
public static void main (String args [ ]){
int [ ] s;
s= new int [5];
for (int i=0 ,i<5,i++){
s [i ] = i;
}
}
}
二维数组可以看成是以数组为元素的数组,同理n维数组可以看出是(n-1)维数组为元素的组合。例如:
int a 【】【】 = {{1,2},{3,4,5},{6,7,8,9}};
java中多维数组的声明和初始化应按从高维到低纬的顺序进行。如:
其内存分配图为:
数组中会经常用到复制数组的方法,一般格式如下:
数组中排序的算法:
冒泡排序是最常用的数组排序算法之一,它排序数组元素的过程总是小数往前放,大数往后放,类似水中气泡往上升的动作,所以称作冒泡排序。
举例如下:
2,插座法
3,调用包
4,选择排序法
总结:要掌握几种数组排序用法,学会用catch和throw解决异常!
522

被折叠的 条评论
为什么被折叠?



