疯狂java  进行回顾

java集合 - 容器
      作用: 用于装对象。调用它的方法装对象、取对象、删除对象、遍历对象……


   方法的用法 - 用对象.方法名(参数值)




Map
      Map里存的东西是:key-value对。
      假如要存放用户的成绩,要用如下数据结构:
         语文:89
         数学:87
         英语:56


      假如要存放一个的身体状况:
         身高:183
         体重:69
         血压:55/133


      Map不允许key重复!
    
     ....


     在这种数据中,每项数据都是 key-value 对 组成。


     假如我们把value,当成是key的“附属物”,
     Map存储key-value对时,只要考虑key的存储即可,key存储之后,value跟着key即可。


     再进一步:如果只管Map里的key,并把所有的key收集起来 —— 就变成了Set。




     Map与Set是一一对应。


      HashSet底层是靠HashMap实现,HashMap用“hash”算法控制“一个萝卜一个坑”。
      TreeSet底层是靠TreeMap实现,TreeMap就是真正的红黑树。




对于Map而言,由于value只是附属物,因此Map对value几乎没有要求。


Map对key有要求。


====HashMap====


    - 它会根据key的hashCode()方法的返回值来计算key的存、取位置。


    HashMap怎样才算两个key重复?
         A。 通过equals比较返回true.
         B。 两个key的hashCode()返回值相等。




    Hashtable与HashMap的区别:
       1. Hashtable是从JDK1.0就有的,尽量少用。
       2. Hashtable不允许使用null作为key、value。但HashMap允许!
       3. Hashtable是线程安全的(实现不好),
          HashMap是线程不安全的。HashMap性能好。
      除此之外,Hashtable与HashMap的几乎是相同。
     
       
====TreeMap====
   
    - 底层的红黑树只对key进行排序。


    TreeMap要求key必须是可比较大小。
       A。 自然排序。要求所有key实现Comparable接口。
       B。 定制排序。要求创建TreeMap时提供一个Comparator接口。
     
    TreeMap怎样才算两个key重复?
       A。 通过compareTo()比较大小时返回0,这就表明两个元素相等。








异常处理
  
    异常机制,用于保障我们的程序更加健壮性(鲁棒性)。


    以一个例子来说明,程序员开发的程序,无论用户怎么操作,它都可以正常应对。


    对于一个五子棋来说,下面是比较“完善”的处理机制




    if(用户输入包含非数字、逗号之外的其他字符)
    {
//  进行错误处理
    }
    else if(用户输入逗号)
    {
         // 在进行错误处理
    }
    else if(用户输入座标超出了范围)
    {
         // 又要进行处理
    }
    ……
    { 
         // 最后才进行业务处理。
    }


  


    这种机制有如下两个问题:
     A。 永远不可能“穷举”所有错误,并进行处理。
     B。 代码“臃肿”得难以忍受。


    牛人就想,能不能把上面代码简化为:


    if(一切正常)
    {
          //进行业务处理。
    }
    else if(出现任何各种错误)
    {
//  进行错误处理
    }                           还是喜欢着个判断,哈哈


    这就是Java 的异常处理。
    


    try  // 尝试让它执行业务处理,如果可以执行完成,就代表了一切正常。
    {
          // 正常业务处理
    }
    catch(异常1 e1)
    {
//  进行异常1处理
    }
    catch(异常2 e2)
    {
//  进行异常1处理
    }
   
    不同的catch块负责对不同的异常进行处理。


    ■ 对于一个异常,最多只有一个catch块能捕捉到该异常。
    ■ 多个catch块捕捉异常,应该是先捕捉小的异常,再捕捉大的异常。
                                   先捕捉子类异常,再捕捉父类异常。


JDK 7提供了新功能:多异常捕捉。
    catch (类1 | 类2 | 类3 ... ex)




访问异常对象:


   当catch块捕捉到异常时,异常对象会作为catch块的参数被传入。


   因此在catch块可通过该参数来访问实际的异常对象。


     - getMessage           返回异常的描述信息。
     - 输出异常的跟踪栈(堆栈)信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值