final的作用

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。final的作用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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; //非法
     }
     
 }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/204364.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!