final的作用

final意为最终的

修饰类:表示类不可被继承

修饰方法:表示方法不可被子类覆盖,但是可以被重载

修饰变量:表示变量一旦被赋值就不可以更改它的值
(1)修饰成员变量

  • 如果final修饰的是类变量,那么就只能在静态初始化块中指定初始值、或者在声明该类变量时指定初始值
  • 如果final修饰的是成员变量,可以在非静态块初始化、或者在声明该变量时初始化、又或者在构造器中初始化

(2)修饰局部变量

  • 系统不会为局部变量进行初始化,局部变量必须由程序员进行初始化。因此在使用final修饰局部变量时,既可以在定义时指定默认值(后面的代码不能对变量再赋值),也可以不指定默认值,而再后面的代码中对final变量赋值(仅可一次)
public class FinalTest{
    
    final static int var1 = 0;//在声明的时候就需要赋值,或者在静态代码块中赋值
    /** 
        static {
            var1 = 0;
        }
    */
    
    final int var2 = 0; //在声明的时候就需要赋值,或者在代码块中赋值,又或者在构造器中赋值
    /**
        {
            var2 = 0;
        }
    */
    
    public static void main(String [] args){
        final int localVar1; //局部变量只声明没有初始化,不会报错,与final无关。
        localVar1 = 0; // 但是在使用前一定要赋值
        // localVar1 = 1;  × 不允许第二次赋值
    }
}

(3)修饰基本数据类型和引用数据类型

  • 如果修饰基本数据类型的变量,则数值一旦初始化之后便不能更改。
  • 如果修饰引用数据类型的变量,则在对其初始化之后便不能再让其指向另一个对象。但引用的值是可变的
 public class FinalReference{
     
     public static void main(String [] args){
         
         final int[] arrs = {1,2,3,4};
         arrs[2] = 3; //合法
         arrs = null; //非法,对arrs不能重新赋值
         
         final Student stu = new Student(18);
         stu.setAge(23);//合法
         stu = null; //非法
     }
     
 }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值