wangning6252820 发表于 2013-2-3 14:02:52

java基础知识5

1. instanceof 编译时,前面要么是后面类的子类,要么是后面类的父类,要么和后面类相同, 否则就会出现编译错误
 
2. 对于单例对象的序列化和反序列化 可以在单例类中实现下面方法,在反序列化的时候,调用,就能保证单例。
    private Object readResolve()throws ObjectStreamException{
            return instance;
    }
 
3. 重载时,如果能同时满足多个方法,如果某个方法的形参要求参数范围越小, 那这个方法就越精确,也就会调用这个方法。P198
 
4. catch
    catch进行捕获时,先捕获小异常,再捕获大的异常;
 
5. 子类重写父类的方法时,不能声明抛出比父类方法类型更多,范围更大的异常,
    也就是说子类只能声明抛出父类方法所声明抛出的异常的子类
   
6. finally和return
   
public class A {   public static StringA(){   try{   System.out.println("1");   return "aaa";   }finally{   System.out.println("2");   return "bbb";   }   }   public static void main(String []args){   String s=A();   System.out.println(s);   }} 
系统输出:
1
2
bbb
这是由于当try执行到return语句时,会立即执行finally中的代码,这时里面的return语句就会导致该方法的结束。所以try里的return语句不会执行
 
7. finally遇到System.exit()的处理
  
public class A {   public static void main(String []args){   try{   System.out.println("main");   System.exit(0);   }catch(Exception e){   System.out.println("Exception");   }finally{   System.out.println("finally");          }   }} 
输出结果:
main
 
System.exit将立即停止所有的程序线程,它并不会使finally语句块得到调用,但是它在停止VM之前会执行关闭挂钩操作(这此挂钩操作是注册到Runtime.addShutdownHook上的线程),这对于释放VM之外的资源很有帮助。
 
8.finally 和 Runtime.getRuntime().exit(0)的处理同上
 
9.
页: [1]
查看完整版本: java基础知识5