(一)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

Java中的异常和递归相关推荐

  1. 八股文系列:Java中的异常和错误

    Java异常架构与异常关键字 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制. Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程 ...

  2. 关于Java中的异常,面试可以问的都在这里了!

    Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制. Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性.在有效使用异常的情况 ...

  3. 深入探讨Java中的异常与错误处理

    Java中的异常处理机制已经比较成熟,我们的Java程序到处充满了异常的可能,如果对这些异常不做预先的处理,那么将来程序崩溃就无从调试,很难找到异常所在的位置.本文将探讨一下Java中异常与错误的处理 ...

  4. Java中的异常和处理详解

    Java中的异常和处理详解 参考文章: (1)Java中的异常和处理详解 (2)https://www.cnblogs.com/lulipro/p/7504267.html 备忘一下.

  5. 完成这个例子,说出java中针对异常的处理机制。

    有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常.在客户端有一个类为TestC,有一个方 ...

  6. JAVA中的异常的触发_java中的异常

    在日常的程序开发中难免会出现遗漏并且就算代码没有问题可是由于程序运行环境的内存不够了,磁盘满了,网络连接问题等这些非正常的情况在java中都称之为异常.在java中对异常的处理有统一的异常处理机制,今 ...

  7. Java中的异常 Exception

    Java中的异常 Exception java.lang.Exception类是Java中所有异常的直接或间接父类.即Exception类是所有异常的根类. 比如程序: public class Ex ...

  8. java中的异常种类和区别以及处理机制和区别

    java中的异常种类和区别以及处理机制和区别 按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeExce ...

  9. Java 中的异常和处理详解

    2019独角兽企业重金招聘Python工程师标准>>> 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退 ...

最新文章

  1. 如何编写多client多公司的增强
  2. 【Electron】C++ 扩展Node 系列 (一)
  3. 带你掌握不同平台下,探索JDK源码所需的native方法
  4. 软件工程的迷途与沉思
  5. dump排查内存异常 java_如何排查Java应用内存泄漏问题
  6. A Belief Propagation Algorithm for Multipath-Based SLAM IEEE TWC2019阅读
  7. html如何让单元格超链接,怎样使超链接引用单元格时,显示引用的单元格 – 手机爱问...
  8. Python语言的适用范围
  9. 蓝桥杯练习题(三):Python组之算法训练提高综合五十题
  10. Mysql 刷题笔记 0104 求出NAME中每组累加/每组总数的比例大于0.6的ID和NAME
  11. 有些人二十几岁就提前退休了,凭什么?
  12. OSF SDN在云计算网络虚拟化中的应用
  13. 【日常】FAB法则在产品设计的应用
  14. java 线程池超时_线程池中如何控制超时时间?
  15. 【历史上的今天】11 月 5 日:初代安卓系统公开发布;诺基亚更名为微软 Lumia;开放手持设备联盟成立
  16. Hadoop重点难点:Shuffle过程中的环形缓冲区
  17. 最好用的ssh连接工具 - mobaxterm
  18. 数字藏品交易平台 nft数字藏品交易平台 数字藏品平台
  19. JS -- 网页轮播
  20. C/C++编程:右值引用

热门文章

  1. Tarjan算法学习笔记
  2. pthread_create用法
  3. XMPP文件传输协议笔记
  4. 面试官:说说Java中的信号量?Semaphore
  5. vue-cli3集成typescript,sass variables,多页打包
  6. 在centos6.4下安装python3.5
  7. vue this.$router.push()传参
  8. 代码实现UISlider 和 UISwitch
  9. JS脚本语言 JavaScript
  10. 如何提高UI自动化测试的质量