java类的执行顺序过程:
1 静态的属性成员初始化(类属性, 不管这个类创建了多少个对象,所有的对象共用这个成员变量)
2 static区域的代码
3 main函数代码
//在main函数里创建对象时才会有4, 5步
4 类属性成员初始化
5 构造函数
测试代码:
public class Main { public static int num = 88; public int num2 = 789; static { System.out.println("in static zone: num " + num); } public Main() { System.out.println("num2 = " + num2); } public static void main (String args[]) { System.out.println("num = " + num); Main m = new Main(); } }输出结果: in static zone: num 88 num = 88 num2 = 789
java代码里的异常处理:
try { 有可能会发生异常的代码 }catch (异常类型 ) { 异常处理的代码 }finally { 一定要执行的代码 }//当使用java里封装好的类时,如类里会有抛出(throw)异常的可能时,我们就需要用”try … catch …”的方式来包含有可能抛出异常的代码。也可以不用”try …catch”方式来处理,只要在函数声明会抛出异常,由调用此函数者来处理异常.
在java里也可以从Exception类扩展出一个自定义的异常类, 如:
class MyException extends Exception { private static final long serialVersionUID = 3461899582505930473L; //自动产生一个序列号,用于区分异常的类型 private String error; //存放异常信息字符串 public MyException(String st) { //构造函数,用于指定此异常类型的字符串信息 error = st; } public String toString() { //当用System.out.println(对象)调用时,输出异常信息字符串内容 return error; } }//自定义的异常类在代码里的使用.
class Student { public void eat(String food) throws MyException { //声明此函数有可能会抛出异常 if (food == "fish") { //当调用此eat(...)函数时,如传入的字符串内容为"fish"时就抛出异常 //System.out.println("no fish"); throw new MyException("raw fish"); } System.out.println("food " + food); } } public class Main { public static void main(String[] args) { Student s = new Student(); //异常处理 try { s.eat("fish"); } catch (MyException e) { System.out.println(e); } } }