final和finally的区别


final与finally的却别

先说final

final可修饰:

     1.修饰变量

      2.修饰方法

      3.修饰类

首先来看第一种情况,如果final修饰的是一个基本类型,就表示这个变量被赋予的值是不可变的,它是个常量,  final在修饰方法的传入参数时,则传入参数时不可修改的;
如果final修饰的是一个对象,就表示这个变量被赋予的引用是不可变的,这里这个不可改变的只是这个变量所保存的引用,并不是这个引用所指向的对象。

在final修饰方法时,方法是不可以被该类的子类所继承的.
在final修饰类是,被修饰的类是不可以被继承的

被fianl修饰的变量必须被初始化,初始化的方式有:

      1.在定义的时候初始化

       2.在构造器中初始化,但静态的final是不可以的

         3.final变量可以在构造块中初始化,如果是静态的就不能再非静态的构造块中初始化

代码验证:

.public class Test {  
.    // 在定义时初始化  
.    public final int A = 10;  
.  
.    public final int B;  
.    // 在初始化块中初始化  
.    {  
.        B = 20;  
.    }  
.  
.    // 非静态final变量不能在静态初始化块中初始化  
.    // public final int C;  
.    // static {  
.    // C = 30;  
.    // }  
.  
.    // 静态常量,在定义时初始化  
.    public static final int D = 40;  
.  
.    public static final int  E;  
.    // 静态常量,在静态初始化块中初始化  
.    static {  
.        E = 50;  
.    }  
.  
.    // 静态变量不能在初始化块中初始化  
.    // public static final int F;  
.    // {  
.    // F = 60;  
.    // }  
.  
.    public final int G;  
.  
.    // 静态final变量不可以在构造器中初始化  
.    // public static final int H;  
.  
.    // 在构造器中初始化  
.    public FinalTest() {  
.        G = 70;  
.        // 静态final变量不可以在构造器中初始化  
.        // H = 80;  
.  
.        // 给final的变量第二次赋值时,编译会报错  
.        // A = 99;  
.        // D = 99;  
.    }  
.  
.    // final变量未被初始化,编译时就会报错  
.    // public final int I;  
.  
.    // 静态final变量未被初始化,编译时就会报错  
.    // public static final int J;  
.}  



finally语句?

finally就比较简单了,它只能用在try/catch语句中,并且附带着一个语句块,表示这段语句最终总是被执行。
即使在try语句中有return等结束方法或循环的代码被执行后,finally中的内容仍然会被执行

public class Test2{
   public static  void main(String[] args){
         try{
            System.out.println("return之前!");
            return;
            System.out.println("return之后!");
            }catch(Exception e){
                System.out.println("程序抛出了异常");  
            }finally{
                      .  System.out.println("finally被执行了!");  
                    }
   }
}
运行结果:

return之前!

finally被执行了!

从结果上我们看到finally中的代码被执行,即使程序被return中断,这是因为return的返回并没有彻底返回,而是在finally中的语句执行完后,彻底返回,结束


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值