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 String  A(){
    	 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.

你可能感兴趣的:(java)