一.JAVA异常类
1.异常概念:在java语言中,将程序执行中发生的不正常的情况称为异常(开发过程中的语法和逻辑错误不是异常)
2.异常分类
1)Error(错误):Java虚拟机无法解决的严重问题。比如JVM系统内部错误,资源耗尽等严重情况,Error是严重错误,会导致系统崩溃。
2)Exception:其他因编程错误或者偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。Exception分为两大类:运行时异常和编程时异常。
3.如果出现异常,可以使用try-catch异常处理机制来解决。
4.异常体系图
对于运行时异常,可以不做处理,此类异常很普通,若处理可能会对程序的可读性和运行效率产生影响。
对于编译时异常,时编译器要求必须处置的异常。
5.常见运行时异常
1)空指针异常:程序试图在需要对象的地方使用null时抛出该异常。
2)数学运算异常:当出现异常的运算条件时抛出该异常。
3)数组下标越界异常:使用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组的大小。
4)类型转换异常:将对象强制转换为不是实例的子类时抛出该异常。
5)数字格式不正确:当程序试图将字符串转换成一种数值类型,但是该字符串不能转换为适当格式时抛出该异常。
6.常见编译异常
1)操作数据库时,查询表可能发生异常
2)操作文件时,发生的异常
3)当操作一个不存在的文件时发生异常
4)加载类,而该类不存在时,异常
5)操作文件,到文件末尾,发生异常
6)参数异常
7.异常处理
1)try-catch-finally:程序员在代码中捕获发生的异常,自行处理
注意事项:如果异常发生,则执行catch不会执行try。
如果异常没有发生,则执行try,不会执行catch。
如果希望是否发生异常都执行代码,则使用finally。
可以有多个catch语句,捕获不同的异常。
2)throws:将发生的异常抛出,交给方法来处理
介绍:如果一个方法可能生成某种异常,但是并不能确定如何处理这种异常,此方法就可以显式声明抛出异常,表明该方法不对这些异常进行处理,而由方法的调用者负责处理
8.自定义异常
基本概念:当程序中出现了某些错误,但该错误信息并没有在Throwable子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息。
二.常用类
1.包装类:针对八种基本数据类型相应的引用类型
1)包装类和基本数据类型的相互转换:自动装箱底层调用的是valueOf方法,比如Integer.valueOf
2.String类
1)string对象用于保存字符串,字符串常量对象是用双引号括起的字符序列,string类有很多构造器如:new String();
2)string可以串行化,可以比较
3)创建String对象:1.直接赋值String s="lllllll"; 2.调用构造器String s=new String("llllll");
4)字符串的特性:String是一个final类,代表不可变的字符序列,一个字符串对象一旦被分配其内容不可变
5)String类的常见方法
equals(区分大小写,判断内容是否相等)
equalslgnoreCase(忽略大小写的判断内容是否相等)
length(获取字符串的个数,字符串的长度)
indexOf(获取字符在字符串中第一次出现的索引)
replace(替换字符串中的字符)
split(分割字符串)
compareTo(比较两个字符串的大小)
toCharArray(转换成字符数组)
3.StringBuffer类
代表可变字符序列,可以对字符串的内容进行修改
4.StringBuilder类
一个可变的字符序列,此类提供一个与StringBuffer兼容的API
主要操作是append和insert方法
(2,3,4三种类使用的原则:1)如果字符串存在大量的修改操作使用StringBuffer或者StringBuilder
2)如果字符串存在大量修改并且在单线程的情况使用StringBulider
3)如果字符串存在大量修改并且在多线程的情况使用StringBuffer
4)如果我们字符串很少修改,被多个对象引用使用String)
5.Math类
1)概念:包含用于执行基本数学运算的方法
2)静态方法:abs(数据类型 变量)<————返回数据的绝对值
acos(数据类型 变量)<————返回一个值的反余弦
cbrt(数据类型 变量)<————返回数据的立方根
6.Arrays类
1)概念:Arrays类中包含了一些列静态的方法,用于管理或者操作数组(如排序和搜索)
2)常用方法:ToString返回数组的字符串形式
sort排序(分为自然排序和定制排序两部分)
binarySearch通过二分搜索法进行查找,前提要求是必须排好序
copyOf复制数组元素
fill填充的数组元素
equals比较两个数组元素内容是否一致
aslist将一组值转换成列表
7.System类
1)常用方法:exit退出当前程序
arraycopy复制数组元素
currentTimeMillens返回当前时间距离
8.BigInteger和BigDecimal类
1)应用场景:BigInteger适合保存比较大的整型,BigDecimal适合保存精度更高的浮点型
2)常见方法:add加,subtract减,multiply乘,divide除
三.容器
1. 为什么引入容器:
1)可以动态保存任意多个对象,使用比较方便
2)提供了一系列方便的操作对象的方法
3)使用集合添加,删除新元素的示意代码,使代码更加简洁
2.list接口
1)基本介绍:list接口是Collection接口的子接口
list集合中的元素有序且可重复
list集合中每个元素都有其对应的顺序索引
list容器中的元素都对应一个整型的序号记载其在容器中的位置
2)遍历方法:ArrayList,LinkedList,Vector
3.set接口
1)基本介绍:无序,无索引
不允许重复的元素,最多包含一个null
2)遍历方式:使用迭代器,增强for,不能用索引的方式来获取
4.Map接口
1)特点:Map与Collection并列存在
Map中的key和value可以是任何引用类型的数据
Map中的key不能重复,value可以重复
key和value之间存在单项一对一关系,即通过指定的key总能找到对应的value
Map的key和value可以为null,但是key只能有一个为null,value可以有多个为null
四.泛式
1.概念
泛式又称参数化类型,在类声明或者实例化时只需要制定好具体的类型即可。作用是可以在类声明时通过一个标识表示类中某个属性的类型,或者是某个方法的返回值类型,或者是参数类型。
2.泛式的语法
interface接口<T>{}和class类<K,V>{}
其中T,K,V表示类型
3.泛式细节
1)在给泛式指定具体类型后,可以传入该类型或者其子类型的类型
2)只能引用类型