温馨提示:和谐,温馨,快乐的网上家园(*^__^*) 嘻嘻……

虾米论坛's Archiver

落地 发表于 2011-2-14 11:55

[11/02/14] JAVA 私塾第八、九章笔记整理

[table=100%,#FFECEC][tr][td][size=9pt][发帖际遇]: [url=http://www.mxxm.cc/event.php]落地在开心农场里偷了淡总家的鸡蛋,卖了虾米币2个.
[/url][/font][/td][/tr][/table]

JAVA 私塾第八、九章笔记整理

第八章 异常和断言

一. 异常的分类

     java.lang.Throwable类充当所有对象的父类,可以使用异常处理机制将这些对象超出并捕获。有Error和Exception两个基本子类。

         错误(Error):JVM 系统内部错误、资源耗尽等严重情况,程序员不可控制
         例外(Exception):其它因编程错误或偶然的外在因素导致的一般性问题,程序可  以控制
         当发生Error时,比如说内存益处,不可能指望程序能处理这样的情况,只能让程序终止。而对于Exception,有补救或控制的可能,程序员也可以预先防范。
         【此处有图,需要的可以到JAVA 私塾官网下载完整笔记:w ww.javass.cn】

    RuntimeExceptioni是因设计或实现方式不当导致的问题。也可以说是因为程序员的原因导致的,本来可以避免发生的情况。
    包括IOException在内的其他Exception,则可以认为是描述运行时遇到的困难,他通常由环境而并非程序员的原因引起的,可以进行处理。
    Java程序处理异常的原则为:
    [color=red](1) 对于Error和RuntimeException,可以在程序中进行捕获或处理,但不是必须的。
    (2) 对于IOException及其他异常,必须在程序中进行捕获或处理。[/color]

二.异常的处理
    try块:在try语句中包含可能会产生异常的语句。
    catch块:用来捕获并处理try中抛出的异常的代码块。
        [color=red]当多个catch块存在的时候,从上往下catch块的范围应该从小到大,否则会产生一个编译异常。[/color]

    finally块:[color=red]无论是否出现异常都运行的块。[/color]
    try,catch,finally块的关系
      (1) try块不能单独存在,后边必须跟catch块或finallly块。
      (2) 三者之间的组合为:try—catch,try—catch—finally,try—finally
      (3) 一个try块可以有多个catch块,从上到下多个catch块的范围从小到大。

    Throws用来在方法定义时声明异常。就是向外抛异常不做处理。

三.自定义异常
    写一个类继承Exception
    用户自定义异常通常属Exception范畴,依据惯例,应以Exception结尾,应该由人工 创建并抛出。

四.断言和断言的使用:
    断言用于证明和测试程序的假设。
    [color=red]断言可以在运行时从代码中完全删除,所以对代码的运行速度没有影响。[/color]
    断言有两种方法:
        一种是 assert<<布尔表达式>>
        另一种是 assert<<布尔表达式>>:<<细节描述>>。
            如果布尔逻辑表达式的值为false,将抛出AssertError异常:细节描述是AssertError异常的描述文本。
        [color=red]使用javac-source 1.4MyClass.java的方式进行编译。[/color]

        运行时要屏蔽断言:java –disableassertions 或java -da
        运行时要允许断言:java –enableassertions 或 java –ea

五. Throw和Throws的功能和使用方法:
    throw 指编程人员主动抛出一个异常
    throw new NullPointerExeption();
    [color=red]throws指程序遇到异常情况自动的被动抛出一个异常[/color]
    public void test() throws Exeption{}

第九章 集合框架

    集合框架基本概念
    【此处有图,需要的可以到JAVA 私塾官网下载完整笔记:w ww.javass.cn】

    Set接口继承自Collection接口,无顺序,不能重复。
    List接口继承自Colleciton接口,有顺序,可重复。
    Map接口不继承自Collection接口,定义了键”(key)—值(value)”映射对的方法,键不可重复。

    Collection接口:用于表示任何对象和元素组。
    Set接口:接口继承自Collection接口,集合中元素无顺序,且不允许集合中出现重复项。依靠添加的对象的equals()方法来检查等同性。

        HashSet类和TreeSet类
        HashSet用来存储重复自由的集合。添加到HashSet的对象需要采用恰当的散列码的方式来实现hashCode()方法。
        添加到TreeSet的元素必须是可排序的。[code]
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {
    public static void main(String [] args){
      Set set = new HashSet();
      set.add("Bernadine");
      set.add("Elizabeth");
      set.add("Gene");
      set.add("Elizabeth");
      set.add("Clara");
      System.out.println(set);
      Set sortedSet = new TreeSet(set);
      System.out.println(sortedSet);
   }
}[/code]输出结果:
      [Bernadine, Gene, Clara, Elizabeth]
      [Bernadine, Clara, Elizabeth, Gene]

    List接口:继承了Collection接口以定义一个允许重复项的有序集合。
              List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可根据序号存取容器中的元素
              ArrayList类和LinkedList类
              ArrayList读快改慢,LinkedList改快读慢。[code]
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ListExample {
    public static void main(String [] args){
    List list = new ArrayList();
    list.add("Bernadine");
    list.add("Elizabeth");
    list.add("Gene");
    list.add("Elizabeth");
    list.add("Clara");
    System.out.println(list);
    System.out.println("2:" + list.get(2));
    System.out.println("0:" + list.get(0));
    LinkedList queue = new LinkedList();
    queue.addFirst("Bernadine");
    queue.addFirst("Elizabeth");
    queue.addFirst("Gene");
    queue.addFirst("Elizabeth");
    queue.addFirst("Clara");
    System.out.println(queue);
    queue.removeLast();
    queue.removeLast();
    System.out.println(queue);
    }
}[/code]输出结果:
    [Bernadine, Elizabeth, Gene, Elizabeth, Clara]
    2:Gene
    0:Bernadine
    [Clara, Elizabeth, Gene, Elizabeth, Bernadine]
    [Clara, Elizabeth, Gene]

    Map接口:不是从Collection接口继承,用来存储键值对。Map中存储的键值对通过键来标识,所以键是不能重复的。键和值都可以为null。
    Map的两个实现类:HashMap和TreeMap
        HashMap:在Map中插入,删除和定位元素。
        TreeMap:按键的顺序遍历。[code]
import java.util.*;

public class MapExample {
    public static void main(String [] args){
       HashMap map = new HashMap();
       Integer ONE = new Integer(1);
       for(int i=0, n=args.length;i<n; i++){
           String key = args[i];
           Integer frequency = (Integer)map.get(key);
           if(frequency == null){
              frequency = ONE;
           }else{
              int value = frequency.intValue();
              frequency = new Integer(value+1);
           }
           map.put(key, frequency);
       }
       System.out.println(map);
       TreeMap sortedMap = new TreeMap(map);
       System.out.println(sortedMap);
    }
}[/code]输出结果:
<one=2, world=1, dream=1>
<dream=1, one=2, world=1>

    Comparable接口:容器中可以排序的类都实现了java.lang.Comparable接口
         Comparable接口中只有一个方法:
             Public int compareTo(Object obj)
             返回 0 表示 this == object;
             返回正数表示 this>object;
             返回负数表示 this<object.[code]
public class Student implements java.io.Serializable,Comparable {
    private String name;
    private String result;

    public int compareTo(Object o) {
        Student s = (Student) o;
        return Integer.valueOf(result) > Integer.valueOf(s.result) ? -1
              : (Integer.valueOf(result) == Integer.valueOf(s.result) ? 0 : 1);
    }
}[/code]Iterator接口:所有实现Collection的类都有一个Iterator方法以返回一个实现了Iterator 接口的对象。
        Iterator对象称作迭代器,用以方便的实现对容器元素的遍历操作。
        Iterator接口定义了如下方法:
        hasNext():Boolean;
        next():Object;
        remove():void;[code]
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.TreeSet;

public class TestIterator {
   public static void main(String [] args){
      Collection collection = new HashSet();
      collection.add("1");
      collection.add("2");
      collection.add("3");
      collection.add("4");
      collection.add("5");
      collection.add("6");
      Iterator iterator = collection.iterator();
      while(iterator.hasNext()){
         Object element = iterator.next();
         System.out.println(element);
      }
   }
}[/code]输出结果:  352461

小白 发表于 2011-2-14 13:14

[table=100%,#FFECEC][tr][td][size=9pt][发帖际遇]: [url=http://www.mxxm.cc/event.php]小白在三元大酒店和MM HAPPY一晚, 花费虾米币50个.
[/url][/font][/td][/tr][/table]

不错。学习了呀

笑笑 发表于 2011-5-29 17:17

经过你的指点 我还是没找到在哪 ~~~

爱上吧 发表于 2011-5-31 08:08

扯淡啊,感觉你在开玩笑啊

蓝色兵鸽 发表于 2011-7-23 03:23

@,@..是什么意思呀?有点不明白,希望楼主解释一下。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.