Java入门第二阶段---异常+常用类

异常的概念和分类
Exception也称例外,就是在程序运行的过程中所发生的不正常对的事件,它会中断正在运行的程序
Object——Throwable(Exception和Error父类)——Exception(由Java应用程序抛出和处理的非严重错误)
Error(仅靠程序本身无法恢复的严重错误)——checked异常,程序必须处理该类异常
运行异常,不要求程序必须做出处理

异常处理的方式一,捕获异常
捕获异常所使用的关键字try、catch、finally
try-catch组合
1)正常情况,执行try以及后面的,不执行catch
2)异常情况,执行try以及catch以及后面的部分
3)异常情况(异常不匹配),中止程序进行
try-finally组合
1)只有调用System.exit();关闭虚拟机,才可以中断后面的程序
try-catch-finally组合
1)正常情况:执行try-finally;
2)异常情况:异常类型匹配,执行try-catch-finally
3)异常情况:异常类型不匹配,执行try-finally
如果在catch中存在return语句,则先执行完finally语句再回头执行return语句

异常的处理方式二,声明异常
声明异常的关键字throws
方法名的后面,用于声明该方法可能会产生一个异常,如果方法声明的是Exception类型的异常或者是
Checked Exception异常,要求方法的调用处必须做处理
1)继续使用throws向上(方法的调用处)声明
2)使用try-catch-finally处理
如果声明的是RuntimeException可处理可不处理,如果处理和上述一样

继承关系中的声明异常
1)父类的方法声明了Exception类型的异常,子类在重写方法时,可以声明也可以不声明,但是如果子类
重写后的方法使用super关键字调用父亲的方法,那么要求必须对异常进行处理
2)如果父类的方法没有异常,那么子类的方法一定会有Exception或Checked异常,要求子类必须自己使
用try-catch处理,或者给父类方法加上异常的声明
3)如果子类在重写父类的方法时,产生的异常是RuntimeException异常时,那么可以不用处理

throw抛出异常对象
写在方法里
在捕获一个异常前, 必须要有一段代码先 生成异常对象并把它抛出,这个过程我们以手工做,也可以由
JRE来实现,但是他们调用的都是throw子句

throws 和 throw 
1)throws 用于声明方法可能会产生的异常类型
throw 手动抛出异常对象
2)throws 写在方法名的后面
throw用于写在方法里

常见的简单异常的解决方法
运行时异常RuntimeException
1)算术异常ArithmeticException
2)空指针异常NullPointerException
3)类型转换异常ClassCastException
4)数组下标越界异常  ArrayIndexOutOfBoundsException
5)期望的数据类型与实际类型不匹配  InputMismatchException
检查时异常Checked  Exception
1)SQLException
2)IOException
3)ParseException

自定义异常
在程序中,可能会遇到任何标准异常类都没有充分的描述清楚问题,这种情况下可以创建自己的异常类
自定义的步骤
1)继承Exception或RuntimeException
2)定义构造方法
3)使用异常

常用类
包装类的基本用法
八个基本数据类型对应八个包装类  byte-Byte   boolean-Boolean  short-Short  char-Character
int-Integer   long-Long  float-Float   double-Double
Character 和Boolean直接继承 Object     其他的继承Number,然后Number继承Object
Integer int  String可以相互转化,
Integer->int  包装类.intValue()                         int->Integer 包装类.valueOf(int)
String->int    包装类.parseInt()                         int->String   int+""或者是包装类.valueOf(int)
String->Integer 构造方法                                 Integer->String toString方法

自动装箱autoboxing
基本数据类型自动封装到与它相同的类型的包装类中   Integer i  =100;编译器自动调用valueOf()方法
Integer i = Integer.valueOf(100);Integer中有个缓存类IntegerCache(内部类),Cache为【-128,127】
IntegerCache有个静态的Integer数组,在类加载的时候将-128-127的Integer对象创
建了,并保存在cache
数组中,一旦程序调用valueOf()方法,如果取值是在-128-127之间就直接在cache缓存数组中去取Integer
对象,超出范围就new一个对象
自动拆箱unboxing
包装类对象自动转换成基本数据类型   int a  =  new Integer(100)  
编译器为我们添加了   int a = new Integer(100).intValue();

String类的底层分析  JDK源码分析

不可变字符序列和可变字符序列的深入
Javap是JDK自带的一个工具,可以反编译,也可以查看Java编译器生成的字节码,是分析代码的一个好工具
javap -c 

java.util.Date类  有三个子类分别是   java.sql.Date   java.sql.Time    java.sql.Timestamp  用于数据库
java.text.DateFormat是抽象类,其子类   java.text.SimpleDateFormat   用于时间对象和字符串之间的转换
java.util.Calendar 日历,其子类  java.util.GregorianCalendar对日期和时间进行运算

GregorianCalendar是Calendar一个具体的子类,提供了世界上大多数国家/地区的标准日历系统
注意:
月份:一月是0,以此类推
星期:周日是1,以此类推

Math类,ceil向上取整再转double,floor向下取整转double,abs绝对值,sqrt根号,round四舍五入
pow,random 
静态导入,省略类名,直接写方法

File  delete从磁盘直接删除,exists文件是否存在 ,  getAbsolutePath。获取绝对路径   getPath相对路径
isFile是否是文件     文件有后缀,目录没有      mkdir创建一个单层目录,mkdirs创建多层目录

枚举,Enum,不是类,  没有构造方法


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值