ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

final和finally关键字的区别

2022-11-10 12:38:48  阅读:328  来源: 互联网

标签:final finally 关键字 方法 java


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

标签:final,finally,关键字,方法,java
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有