1、public interface 接口名 extends 父接口名列表/接口体;/常量域声明 public static final 域类型 域名=常量值;/抽象方法声明 public abstract native返回值 方法名(参数列表)throw异常列表;从上面的语法规定可以看出,定义接口与定义类非常相似,实际上完全可以把接口理解成为一种特殊的类,接口是由常量和抽象方法组成的特殊类。(1)接口中的属性都是用 final修饰的常量,在这个类中,所有的成员函数都是抽象的,也就是说它们都只有说明没有定义;(2)接口中的方法都是用abstract修饰的抽象方法,在接口中只能给出这些抽象方法的方法
2、名、返回值和参数列表,而不能定义方法体,即仅仅规定了一组信息交换、传输和处理的“接口”。在类的声明部分,用implements关键字声明该类将要实现哪些接口如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须实现指定接口的所有抽象方法,即为所有抽象方法定义方法体,而且方法头部分应该与接口中的定义完全一致,即有完全相同的返回值和参数列表如果实现某接口的类是abstract的抽象类,则它可以不实现该接口所有的方法一个类在实现某接口的抽象方法时,必须使用完全相同的方法头接口的抽象方法,其访问限制符都已指定是public,所以类在实现方法时,必须显式地使用public修饰符自定义异常类
3、本例中,当a的值小于10或大于100时,将产生异常。class MyException1 extends Exceptionint num;MyException1(int a)num=a;public String toString()return num+100!rn值必须小于100;声明抛出异常是一个子句,只能加在方法头部的后边。语法格式如下:throws 如:public int read()throws IOException .真正抛出异常的动作是由抛出异常语句来完成的。格式如下:throw ;其中:必须是Throwable类或其子类的对象。如:throw new Exceptio
4、n(这是一个异常);下面的语句在编译时将会产生语法错误:throw new String(能抛出吗?);这是因为String类不是Throwable类的子类。从键盘读入汉字,打印出其机内码。注意不是UNICODE码。若按了a键,则立即抛出异常。import java.io.*;public class Ex_Exception3 public static void main(String args)int c;try while(c=System.in.read()!=-1)if(c=a)throw new Exception(键a坏了!);System.out.println(c);cat
5、ch(IOException e)System.out.println(e);catch(Exception e)System.out.println(e);Java中使用try-catch-finally语句来捕获并处理异常,try-catch-finally语句的语法格式如下:try/可能会产生异常的程序代码catch(Exception_1 e1)/处理异常Exception_1的代码 catch(Exception_2 e2)/处理异常Exception_2的代码 .catch(Exception_n en)/处理异常Exception_n的代码 finally/通常是释放资源的程序代
6、码 整个语句由try块、catch块和可以缺省finally块三部分组成。当 产 生 异 常 时,程序从上往下依 次 判 该 异 常 是 不 是catch(Exception_x e)块中Exception_x类或其子类的对象。try-catch-finally语句的嵌套。try-catch-finally语句的try块、catch块、finally块中的程序代码都可以嵌套另外的try-catch-finally语句,且嵌套层次数任意。对Error类或其子类的对象,程序中不必进行处理 对RuntimeException类或其子类,程序中可以不必进行处理 除此之外的异常,程序员都应该在程序中进行
7、处理。要么用try-catch-finally进行捕获处理,要么明确表示不处理从而声明抛出异常,要么先捕获处理然后再次抛出。Java的异常处理机制(try-catch-finally语句、throws 子句、throw 语句)带来Java程序代码结构上的改变 不能滥用异常机制。简单的出错判断建议用if语句 不要过分细分异常staticClass forNameforName(StringclassName)Returns the Class object associated with the class or interface with the given string name.Obje
8、ct newInstancenewInstance()Creates a new instance of the class represented by this Class objectObject Boolean Character Number Class Byte Short Integer Long Float Double import java.util.*;class StudentString name;int number;float score;Student(String name,int number,float score)this.name=name;this.
9、number=number;this.score=score;public class LinkListThreepublic static void main(String args)LinkedList mylist=new LinkedList();Student stu_1=new Student(赵好民,9012,80.0f),stu_2=new Student(钱小青,9013,90.0f),stu_3=new Student(孙力枚,9014,78.0f),stu_4=new Student(周左右,9015,55.0f);mylist.add(stu_1);mylist.add
10、(stu_2);mylist.add(stu_3);mylist.add(stu_4);Iterator iter=mylist.iterator();while(iter.hasNext()Student te=(Student)iter.next();System.out.println(te.name+te.number+te.score);import java.util.*;class Examplepublic static void main(String args)Vector vector=new Vector();Date date=new Date();vector.ad
11、d(new Integer(1);vector.add(new Float(3.45f);vector.add(new Double(7.75);vector.add(new Boolean(true);vector.add(date);System.out.println(vector.size();Integer number1=(Integer)vector.get(0);System.out.println(向量的第向量的第1个元素:个元素:+number1.intValue();Float number2=(Float)vector.get(1);System.out.println
12、(向量的第向量的第2个元素:个元素:+number2.floatValue();Double number3=(Double)vector.get(2);System.out.println(向量的第向量的第3个元素:个元素:+number3.doubleValue();Boolean number4=(Boolean)vector.get(3);System.out.println(向量的第向量的第4个元素:个元素:+number4.booleanValue();date=(Date)vector.lastElement();System.out.println(向量的第向量的第5个元素:个
13、元素:+date.toString();if(vector.contains(date)System.out.println(ok);Hashtable示例vimport java.util.*;class Student int english=0;String name,number;Student(String na,String nu,int e)english=e;name=na;number=nu;public class HT public static void main(String args)Hashtable hashtable=new Hashtable();hasht
14、able.put(199901,new Student(199901,王小林,98);hashtable.put(199902,new Student(199902,能林茂,70);hashtable.put(199903,new Student(199903,多种林,93);hashtable.put(199905,new Student(199905,夹贸林,77);hashtable.put(199906,new Student(199906,噔林可,55);hashtable.put(199908,new Student(199908,纠林咯,76);Student stu=(Stud
15、ent)hashtable.get(199902);/检索一个元素。System.out.println(stu.number+stu.name+stu.english);hashtable.remove(199906);/删除一个元素System.out.println(散列表中现在含有:+hashtable.size()+个元素);Enumeration enum=hashtable.elements();while(enum.hasMoreElements()/遍历当前散列表。Student s=(Student)enum.nextElement();System.out.println
16、(s.number+s.name+s.english);v设计一个能自动测试排序算法性能(比较次数compare_count、交换次数exchange_count、探测次数probe_count)的类体系。v要求:用一个类来描述一个排序算法,类中的sort方法通过调用比较、交换方法来实现数组排序。v(1)写一个final参数类M,包括比较次数、交换次数、探测次数属性,并重写构造器和toString方法。v(2)写一个抽象类A,其中包括要排序的数据。提供三个final方法,分别完成比较、探测、交换操作的同时,正确改变私有的M类对象成员的相关属性。并提供一个虚方法doSort,同时提供一个final方法sort(先设置M对象初值,然后调用doSort方法,返回M对象引用)v(3)写三个采用不同方法排序的A类的派生类A1,A2,A3v(4)写一个测试类作为主类,分别生成A1,A2,A3的对象并调用sort方法,显示三个方法在排序时候的性能参数。v(5)谈谈这种类设计的合理性以及可以改进之处。(6)*试验设计一个可计时接口来改进本程序,并谈谈你的想法。要求交书面作业。且必须老师再机房检查代码后才有效。