- 异常处理 Exception
- Error 错误
- 比较严重的错误,比如栈溢出 StackOverflowError,内存用尽 OutOfMemoryError
- Exception 异常
- 检查型异常
- 常指在编译阶段,编译器能够检查出来的,需要开发者处理的异常,若不处理,编译报错。
- 比如ClassNotFoundException
- java异常处理机制,主要处理检查型异常
- 运行时异常(非检查型异常)
- 代码编译阶段不检查是否有异常,只有运行起来才会产生异常。
- 比如数组越界异常 ArrayIndexOutOfBoundsException
- 一般通过开发人员反复测试
- 检查型异常
- 异常处理的方式
- 自行处理
- try…catch
- 语法
- try{
- //可能产生异常的代码
- }catch(异常类型 对象名){
- //处理异常的代码
- }finally{
- //代码块(一般是关闭释放资源)
- }
- try{
- 其中:catch可以有多个;finally可以有一个,也可以不写
- 执行逻辑
- 1、首先执行try后的代码块,如果没有异常,则直接执行finally中的代码块,而不需执行catch
- 2、如果try中的代码块产生了异常,则停止执行剩余代码,执行匹配的catch代码块,再继续执行finally中的代码块。
- 语法
- 注:
- 1、有多个catch块,异常的子类型catch块要放在父类异常的前面
- 2、
- 3、try中有return,若return前代码无异常,则执行return前代码后再执行finally,再执行return
- 4、catch中有return,同3。
- 5、若catch块中有System.exit(0);语句,则直接退出
- 6、不要使用过于庞大的try块
- 7、jdk7以后,可以在一个catch块中使用“|”写多个同级别的异常类型
- try…catch
- 回避异常
- throws
- 表示将异常抛出给调用者来处理,谁调用谁处理
- 语法:在方法声明时,就声明该方法会抛出的异常类型。
- 修饰符 返回值类型 方法名(参数列表) throws 异常类型1,异常类型2{
- //方法体
- }
- 修饰符 返回值类型 方法名(参数列表) throws 异常类型1,异常类型2{
- 其中
- 1、使用throws关键字,在方法声明时,声明异常,由调用者处理该异常,可以在调用者内部使用try-catch来处理,或继续抛出该异常,可以层层上抛,到main,再到jvm。但是建议不要抛给jvm。
- throw关键字
- throw语句 在代码块中开发者主动的抛出一个异常对象,一般配合try-catch或throws来使用
- 语法:throw 异常对象; //该异常100%会产生
- throws
- 自行处理
- Error 错误
- 工具类
- Object: 是java中所有类的超类,是唯一没有父类的类
- 如果一个类没有显式的继承一个父类,则默认继承Object类
- equals方法
- 比较该类的两个对象是否相等(两个对象的引用地址)。boolean类型
- 与“==”的区别
- ==
- 比较基本数据类型,比较的是两个值是否相等
- 比较引用类型,比较的是引用(地址)是否相等
- equals
- 若equals方法没有被重写,比较的是引用(地址),若被重写了,比较的是对象的值是否相等(String类和八种基本数据类型对应的包装类都重写了equals方法)
- 如果equals()返回两个对象是相等的,那这两个对象调用hashCode()返回的整数必须相等
- ==
- hashCode方法
- 返回该对象的hash字符串,是一种引用类型码,是对象的存储地址,经过一定规则的转换,形成的整数。
- toString方法
- 返回字符串,形式:全限定类名@hashCode
- 包装类 :将8种基本数据类型进行了封装,除了数值之外,还封装了一些常用的属性和方法,形成的类
- 基本数据类型与包装类的对应关系
- byte Byte
- short Short
- int Integer
- long Long
- float Float
- double Double
- char Character
- boolean Boolean
- 以Integer为类,包装类中常用的属性和方法
- Integer.MAX_VALUE int类型最大值2147483647
- Integer.MIN_VALUE int类型所能表示的最小值 -2147483648
- Integer.max(m, n) 返回m和n中较大的一个数。
- Integer.min(m,n) 返回m和n中较小的一个数。
- Integer.compare(m, n) 比较两个整数的大小,如果m等于n,则返回0,如果m<n则返回负数,如果m>n则返回正数。
- Integer.toHexString(m) 将m转给十六进制的字符串。
- 基本数据类型与包装类之间的转换
- 基本--->包装类
- int num = 100;
- Integer num1 = num;//直接将基本数据类型的变量赋值给包装类对象,甚至可以直接赋值常量100.
- integer num2 = new Integer(num);//使用构造函数
- integer num3 = Integer.valueOf(num);//使用valueOf来赋值。
- 包装类--->基本数据类型
- int num4 = num3;//使用包装类对象直接赋值给基本类型的变量。
- int num5 = num3.intValue();//将包装类对象中的整数值取出赋值给int变量。
- 字符串--->基本数据类型
- String str = "120";
- int num = Integer.parseInt(str);//将字符串解析成整数。
- 基本--->包装类
- 基本数据类型与包装类的对应关系
- 字符串String
- 字符串,是一种引用类型。字符串常量是指用双引号引起来的内容。"hello" "123"
- 字符串对象的赋值:
- 静态方式
- String str = "abc";// 存储在常量池中
- 动态方式
- String str = new String("abc");//存在堆空间中
- 静态方式
- 字符串---->基本数据类型
- 包装类.parseXxx(str) Xxx就是对应的基本数据类型的包装类
- 比如:
- String str = 20.5;
- double num = Double.parseDouble(str);
- 字符串类中的其他常用的方法
- int length() 获取字符串的长度
- boolean equals(str) 判断字符串的内容是否相等
- boolean equalsIngoreCase(str) 判断字符串的内容是否相等,但忽略大小写。
- toUpperCase() 字符串全部转为大写
- toLowerCase() 字符串全部转为小写
- subString(int begin) 获取字符串从索引位置begin开始到最后的子串,begin取0时,表示从第一个字符开始。
- subString(int begin,int end) 获取字符串从索引位置begin(包含begin)开始,到end(但不包含end)结束的子串。
- int indexOf(str) 获取子串str第一次在字符串中出现的索引位置,如果不包含子串,返回-1。
- int lastIndexOf(str) 获取子串str最后一次在字符串中出现的索引位置,如果不包含子串,返回-1。
- trim() 去除字符串首尾的空格。
- String[] split(reg) 根据分隔符reg来分割字符串,将分割后的子串以字符串数组的形式返回。如果传入参数为空字符串"",则会将字符串的每个字符分隔开。
- replace(char oldch,char newch)将字符串中的oldch,替换为newch。
- startsWith(str)/ endsWith(str) 判断字符串是否以str开头/结尾
- Object: 是java中所有类的超类,是唯一没有父类的类