湖南工业大学论坛
欢迎来到湖南工业大学论坛,工大30000师生的交流平台!

希望你能玩得愉快!

Join the forum, it's quick and easy

湖南工业大学论坛
欢迎来到湖南工业大学论坛,工大30000师生的交流平台!

希望你能玩得愉快!
湖南工业大学论坛
Would you like to react to this message? Create an account in a few clicks or log in to continue.

J***A 私塾第八、九章笔记整理

向下

JAVA 私塾第八、九章笔记整理 Empty J***A 私塾第八、九章笔记整理

帖子 由 luodis 周二 二月 15, 2011 2:37 pm

J***A 私塾第八、九章笔记整理

第八章 异常和断言

一. 异常的分类

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

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

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


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

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

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

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

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

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

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

第九章 集合框架

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

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

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

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

 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);
  }
}

输出结果:
[Bernadine, Gene, Clara, Elizabeth]
[Bernadine, Clara, Elizabeth, Gene]

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

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);
    }
}

输出结果:
[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:按键的顺序遍历。
代码:

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);
    }
}

输出结果:



Comparable接口:容器中可以排序的类都实现了java.lang.Comparable接口
Comparable接口中只有一个方法:
Public int compareTo(Object obj)
返回 0 表示 this == object;
返回正数表示 this>object;
返回负数表示 this
代码:

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);
    }
}

Iterator接口:所有实现Collection的类都有一个Iterator方法以返回一个实现了Iterator 接口的对象。
Iterator对象称作迭代器,用以方便的实现对容器元素的遍历操作。
Iterator接口定义了如下方法:
hasNext():Boolean;
next():Object;
remove():void;
代码:

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);
      }
  }
}

输出结果: 352461
luodis
luodis

帖子数 : 21
注册日期 : 10-12-30

返回页首 向下

返回页首


 
您在这个论坛的权限:
不能在这个论坛回复主题