一.异常定义
在Java中,程序运行时可能发生的错误分为两类:Exception和Error。Exception是指经过程序员修正之后还能继续运行的错误,称为异常在方法执行的过程中,如果发生了异常,该异常方法或者JVM会生成对应的一个异常对象。这个对象包含了异常类型和程序运行状态等,这被称为抛出(throw)。
Throwable包含了错误(Error)和异常(Excetion两类) Exception又包含了运行时异常(RuntimeException, 又叫非检查异常)和非运行时异常(又叫检查异常)
空指针异常(NullPointerException)
String str=null;
System.out.println(str.length());
数组下标越界
int[] ary={1,2,3}
for{int i=0;i<=3;i++){
System.out.println(ary[i]);
}
类型转换异常
class Animal{
}
class Dog extends Animal{
}
class Cat extends Animal{
}
public class Test{
public static void main(String[] args){
Animal a1=new Dog();
Animal a2=new Cat();
Dog d1=(Dog)a1;
Dog d2=(Dog)a2;
算数异常
int one=12;
int two=0;
System.out.println(one/two);
ClassCastException:类型强制转换异常
package com.darkmi.basic;
public class Test {
public static void main(String[ args) {testParse("aa");}}
集合
集合类是用来存放某类对象的。
Collection是一个基本的集合接口,Collection中可以容纳一组集合元素。
Map没有继承Collection接口,与Collection是并列关系。Map提供键(key)到值(value)的映射。一个Map中不能包含相同的键,每个键只能映射一个值。
Collection有两个重要的子接口List和Set。
Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,JavaSDK提供的类都是继承自Collection的“子接口”如List和Set
List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,
ArrayList
transient Object[] elementData
LinkedList
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
}
Vector
protected Object[] elementData;
泛型
简单的泛型类
public class Generics<T> {
private T o;
public Generics(T o){
this.o=o;
}
public T getObject() {
return o;
}
public void setObject(T o) {
this.o = o;
}
public String getType() {
return o.getClass().getName();
}
}
public class FanXingLeiDemo<T> 这里是泛型,可以传任意的参数
泛型类
private T obj;
public T getObj() {
return obj;
}
public void setObj(T obj) {
this.obj = obj;
}
}
泛型方法:
public class FanXingMethod {
public <T> void show(T t)
{
System.out.println(t);
}
}
泛型接口:
public interface Inter<T> {
public abstract void show(T t);
}
通配符
void printCollection(Collection<Object> c){
for (Object e : c) {
System.out.println(e);
}
}
泛型使用的注意事项
泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。我们可以使用这个泛型类的各种类类型的版本,不过泛型并不支持基本数据类型。
泛型的类型参数可以有多个。
不能对确切的泛型类型使用instanceof操作。如下面的操作是非法的,编译时会出错。