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

luodis 发布于 2011/02/15 09:20
阅读 161
收藏 2
JAVA 私塾第八、九章笔记整理 第八章 异常和断言 一. 异常的分类 java.lang.Throwable类充当所有对象的父类,可以使用异常处理机制将这些对象超出并捕获。有Error和Exception两个基本子类。 错误(Error):JVM 系统内部错误、资源耗尽等严重情况,程序员不可控制 例外(Exception):其它因编程错误或偶然的外在因素导致的一般性问题,程序可 以控制 当发生Error时,比如说内存益处,不可能指望程序能处理这样的情况,只能让程序终止。而对于Exception,有补救或控制的可能,程序员也可以预先防范。 【此处有图,需要的可以到JAVA 私塾官网下载完整笔记:www.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 私塾官网下载完整笔记:www.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 Comparable接口:容器中可以排序的类都实现了java.lang.Comparable接口 Comparable接口中只有一个方法: Public int compareTo(Object obj) 返回 0 表示 this == object; 返回正数表示 this>object; 返回负数表示 this
加载中
0
红薯
红薯

这文章咋看啊?

返回顶部
顶部