Java中的异常和递归

(一)HashMap
(1)HashMap集合本身基于哈希表

它可以保证键的唯一性(Map都是针对键有效)
HashMap<String,String>

  • String:人的ID编号
  • String:人的姓名
    HashMap<Integer,String>

  • Integer:年龄
  • String:姓名

    HashMap<String,Student>

  • String:学号
  • Student:学号对应一个学生:有姓名和年龄
    HashMap<Student,String> 键:是一种自定义类型
    Student:学生:年龄和姓名
    String:朝代
  • 如果对象的成员变量值一样,认为同一个人.
    *HashMap底层哈希表
    哈希表:依赖于两个方法 hashCode() ,equals()方法
    (2)LinkedHashMap<K,V>
    LinkedHashMap<K,V>:是Map接口基于哈希表和链接列表实现的

    哈希表保证键的唯一性
    链接列表保证元素有序性(存储和取出一致)

    (3)
    TreeMap基于红黑树结构的Map接口的实现

    (4)线程安全的类:

  • StringBuffer :字符串缓冲区
  • Vector :List集合
  • Hashtable :Map集合的
    (5)Collection
    Collectio 和Collections的区别:
  • Collection:顶层次单列集合的根接口,它是一个集合,是一个接口
  • Collections:是针对集合操作的工具类,有一些功能:随机置换,集合里面的二分查找,将集合的元素进行反转
  • *集合的二分查找

  • public static <T> int binarySearch(List<T> list, T key)
  • static T max(Collection coll):获取集合中的最大值
  • public static void reverse(List<?> list):将集合中的元素顺序反转
  • public static void shuffle(List<?> list):将集合中的元素打乱
  • public static void sort(List<T> list)
    (二)Exception
    (1) 当程序出现一些问题的,可以是严重问题,可以是一种异常,将这些通常为Throwable
    Throwable 类是 Java 语言中所有错误或异常的超类
  • Throwable
  • error
  • exception
  • 举例:
    张三去山上旅行
    1)张三骑车去旅行,山路崩塌了,不能前行了----->不可抗力因素
    2)张三骑车去旅行,骑着发现轮胎没气了------->需要检查的问题
    3)骑着,山路有石子,他就非得往石子上骑,导致车胎没气了---->自己原因造成的,no zuo no die

    不抗力因素----->error: 属于严重问题 内存溢出了 (加载页面中大量图片的时候,程序会挂掉---使用第三方的框架去处理:ImageLoader)

  • 异常:
  • 编译时期异常:只要出现的不是运行时期异常,统称为编译时期 日期的文本格式---解析 java.util.Date类型:ParseException:解析异常
  • 编译时期异常:开发者必须处理!
  • 运行时期异常:RuntimeException
  • 编译通过了,但是开发者代码不严谨(NullPointerExceptino等等...)
    (2)异常的处理分为两种:
    1)try...catch...finally (标准格式) :捕获异常
    2)throws ... 抛出异常

    变形格式...
    try...catch...
    try...catch...catch...
    catch....

    try{
    一些代码
    try里面的代码越少越好
    代码包含了可能会出现问题的代码
    }catch(异常类 异常类对象){
    try出现异常了,描述的异常刚好就是catch的异常类,就会执行catch里面代码
    //处理异常
    }
    (3)如何处理多个异常
    两个或两个以上的异常的时候怎么办?

    try{
    可能出现问题的代码
    }catch(异常类 对象名){
    处理异常的代码
    }

    try{
    可能出现问题的代码
    int[] arr = {1,2,3} ;
    Sop(arr[3]);
    int a = 10 ;
    int b =0 ;
    Sop(a/b) ;

    }catch(异常类名1 对象名1){
    //异常处理
    }catch(异常类名2 对象名2(){

    //异常处理

    }
    dk7以后出现另一种方式处理多个异常
    try{

            可能出现问题的代码;

    }catch(异常类名1 | 异常类名2 |... 对象名){

    处理异常

    }
    (4)编译时期异常和运行时期异常的区别?

    编译时期:开发者必须进行显示处理,不处理,编译不能通过,
    运行时期异常:无需进行显示处理,可以像编译时期一样进行处理

    处理异常的第二种方式:使用throws 抛出异常 (跟在方法的后面)
    xxx 返回值 方法名() throws 异常类名{
    }
    标准格式 try{ ... }catch(异常类 对象){ // 异常处理 } 执行try里面的代码
    ,如果出现了问题,它会通过代码的问题创建一个异常对象,然后通过异常对象和catch里面的异常类是否一致
    如果一致的情况,就会出现catch里面的代码,执行Throwable里面的方法

  • public String getMessage() :消息字符串
  • public String toString(): 异常的简短描述 ":
  • ":由冒号和空格组成

  • public void printStackTrace():返回值void 直接调用, 包含了消息字符串,还有": "
  • 信息描述,具体出现异常的代码定位以及定位的源码上
    (5)throw:表示也是抛出异常,抛出的一个异常对象 (throw new 异常类名() :匿名对象的方式)
    try...catch...finally
  • finally语句体是一定会执行的,除非是Jvm退出了
    (6)自定义异常类,两种方式
  • 1)自定义一个类,这个继承自Exception
  • 2)继承RuntimeException
    异常中的注意事项:
    子类继承父类的时候的注意事项
  • 1)子类重写父类的方法的时候,子类的方法的抛出的异常必须要么是父类的方法异常一样,要么是父类方法异常的子类
  • 2)子类重写父类方法的时候,如果父类中的这个方法没有抛出异常,那么子类重写的这个方法也不能抛出异常,只能try...catch
    (三)File类
    (1)File类:表示文件或者目录的路径的抽象表现形式. IO流就是对文件进行操作的
  • public File(String pathname):表示pathname的抽象路径表现的形式 (开发中使用这种方式)
  • public File(String parent,String child)
    根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
    public File(File parent, String child):根据一个file对象和一个文件路径来构造File实例
    (2)跟创建相关的功能:
  • public boolean createNewFile():创建文件,当文件不存在的时候,创建此抽象路径下的文件
  • public boolean mkdir():创建一个文件夹,如果文件夹存在,不创建
  • public boolean mkdirs():创建文件夹,如果父目录不存在,会创建此目录
    (3)删除功能
  • public boolean delete() :删除文件或者文件夹(目录不能是空的) :逐一删除文件或者目录的

    如果创建一个文件/目录,没有写盘符的时候,会创建在哪里呢?
    会创建在当前项目路径下
    (4)绝对路径:c:\xxx\xxx.txt
    相对路径:a.txt

    回想:html页面(以后jsp页面)
    后台地址 :URI 统一资源定位符

    <form action="http://localhost:8080/Web工程名称/后台(XXX.servlet)"  metod="提交方式">
            用户名:<input type="text" name="username"/>
            密码:<input type ="password" name="pwd"/>
                <input type ="hidden" name="hid"/>
            <img src="图片的路径"/>
    </form>

    页面的重定向/转发
    response.sendRedirect("/工程名称/xxx.jsp") ;

    File 的重命名功能:

  • public boolean renameTo(File dest)重新命名此抽象路径名表示的文件。
    如果路径名一致的情况,那么只是重命名
    如果两次路径名称不一致,那么不只是重命名,并且剪切
    (5)File类的判断功能
  • public boolean isDirectory():判断是否是文件夹
  • public boolean isFile() :判断是否是文件
  • public boolean canRead(): 是否可读
  • public boolean canWriter():是否可写
  • public boolean exists() :是否存在
  • public boolean isHidden():是否是隐藏文件
    (6)File类的获取功能:
  • public String getAbsolutePath():获取抽象文件的绝对路径
  • public String getPath():获取相对路径的字符串
  • public String getName()返回由此抽象路径名表示的文件或目录的名称
  • public long length()返回由此抽象路径名表示的文件的长度。
  • public long lastModified():文件最后一次被修改的时间(时间毫秒值)
    (7)File的高级功能
  • public String[] list() :获取当前某个路径下的所有的文件夹以及文件名称的字符串数组
  • public File[] listFiles() :获取当前某个路径下所有的文件夹以及文件的File数组
    (四)IO流
    (1)IO:在设备和设备之间的一种数据传输!
    IO流的分类:
    按流的方向分:
  • 输入流: 读取文件 (e:\a.txt):从硬盘上文件读取出来后输出这个文件的内容
  • 输出流: 写文件:将e:\a.txt 内容读出来--->写到f盘下
    按数据的类型划分:
    字节流
  • 字节输入流:InputStream :读取字节
  • 字节输出流:OutputStream :写字节
    字符流
  • 字符输入流:Reader :读字符
  • 字符输出流:Writer :写字符
    (2)FileOutputStream
    关于字节输出流写数据的方法
  • public void write(int b):一次写一个字节
  • public void write(byte[] b) :一次写一个字节数组
  • public void write(byte[] b, int off,int len):一次写一部分字节数组
    问题:如何末尾追加数据呢
  • public FileOutputStream(File file, boolean append):指定为true,末尾追加数据
    (3)FileInputStream
    构造方法: public FileInputStream(String name)读数据方式:
  • public abstract int read():一次读取一个字节
  • public int read(byte[] b):一次读取一个字节数组 (读取实际的字节数)
    (五)递归
    递归:只的是方法调用方法本身的一种现象
    Math类:max() 方法 Math.max(10,Math.max(15,20)); 方法嵌套

    举例
    方法递归:

    public void show(int n){
        if(n<0){
            System.exit(0) ;//jvm退出了
        }
    
        System.out.println(n) ;
        show(n--) ;
    }

    方法递归的三个必要条件:

  • 1)方法递归必须有出条件
  • 2)必须满足一些规律
  • 3)一定要写方法
  • *注意:构造方法不存在方法递归的
    举例
    从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
    从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
    从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
    从前有座山,山里有个庙,庙里有个老和尚和小和尚,老和尚给老和尚讲了一个故事是:
    条件结束:山塌了,或者和尚挂了

转载于:https://blog.51cto.com/13670525/2117642

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值