final和finally关键字的区别

final和finally的区别

一. final关键字

final可以声明变量,形参,方法,类

1.当用final修饰变量时,该变量变为常量,常量的值不可改变.例如char[]arr={1,2,3,4,5},当定义一个数组时,数组默认被final修饰即不可改变,且final直接初始化赋值时用static修饰

(1)static final int a=10; (2)若声明的为成员变量final int b;则在构造方法中进行赋值

public class FinalDemo {  
   static int b=20;   
   final int a;    
   public FinalDemo(int a) {  
      this.a = 10;    
  }
}

当用final修饰形参时,形参的值不可在改变.

2.当用final修饰方法时,被修饰的方法不能再被子类重写,但可以在本类中重载

public final static void xx(){   
}    
public final static void xx(int a){           
}

3.当用final修饰类的时候,该类不能被继承

public final class FinalDemo {}

二.finally关键字

finally是对java的一种异常处理机制,finally是对java异常处理模型的最佳补充

finaly{}结构的代码块使其中的代码在出现异常,虚拟机停止运行时仍会执行执行final代码块中的内容.

public class FinallyDemo {    
    public static void main(String[] args) { 
        System.out.println(sout(10,0));   
    }    
    public static int sout(int a,int b){ 
        try {            
            return a / b;//当使用try+finally类型时,此处没用处理异常,try中一旦出现问题后,执行完finally中代码块,虚拟机停止
        }finally {            
            System.out.println("..............");          
        }   
    }
}

finally与catch执行顺序

1.当catch中没有return语句时,执行顺序为try-----catch-----finally

2.当catch中有return语句而finally没有return语句,执行try代码块------执行catch中return之前的代码------finally中的代码块------最后执行catch中的return

3.当catch和finally中都用return语句,时执行顺序为try-----catch-----finally,但最后finally中的return语句会覆盖catch中的return语句,返回的是finally中的return语句.

eg:

public class ReturnExceptionDemo {
	static void methodA() {
		try {
			System.out.println("进入方法A");1
			throw new RuntimeException("制造异常");3
		} finally {
			System.out.println("用A方法的finally");2
		}
	}

static int methodB() {
	try {
		System.out.println("进入方法B");4
		 throw new Exception();
		return 1;
	} catch (Exception e) {
		return 3;
	} finally {
		System.out.println("调用B方法的finally");5
		 return 2;6
	}
}

public static void main(String[] args) {
	try {
		methodA();
	} catch (Exception e) {
		System.out.println(e.getMessage());
	}
	int i = methodB()
	System.out.println(i);2
}

}

结果:

进入方法A
用A方法的finally
制造异常
进入方法B
调用B方法的finally
2

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值