java的final关键字

——修饰类、接口和抽象类

    final可以修饰方法,属性,类!但是不能修饰接口,抽象类;因为 接口和抽象类本身就是用来继承或者实现的,与final的作用相斥!

    A、修饰类(class)。

         1、该类不能被继承。

         2、类中的方法不会被覆盖,因此默认都是final的。 

         3、用途:设计类时,如果该类不需要有子类,不必要被扩展,类的实现细节不允许被改变,那么就设计成final类

    B、修饰方法(method)

         1、该方法可以被继承,但是不能被覆盖。

         2、用途:一个类不允许子类覆盖该方法,则用final来修饰 

         3、好处:可以防止继承它的子类修改该方法的意义和实现;更为高效,编译器在遇到调用final方法转入内嵌机制,提高了执行效率。 

         4、注意:父类中的private成员方法不能被子类覆盖,因此,private方法默认是final型的(可以查看编译后的class文件)

    C、修饰变量(variable) 

          1、用final修饰后变为常量。包括静态变量、实例变量和局部变量这三种。 

          2、特点:可以先声明,不给初值,这种叫做final空白。但是使用前必须被初始化。一旦被赋值,将不能再被改变。

    D、修饰参数(arguments) 

           1、用final修饰参数时,可以读取该参数,但是不能对其作出修改。

☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟修饰变量☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟☟

——修饰变量

    一、final修饰变量

        final修饰变量不可变,这里是指引用不可变(Java中共提供两种数据类型,原始数据类型8种和引用类型),即它只指向初始时指向的那个对    象,而不关心指向对象内容的变化。

        final修饰的变量必须初始化。初始化根据变量类型而不同:

            1、static变量。只能在定义,或者静态块中初始化。

            2、普通实例变量。可以在定义,非静态块,构造函数中初始化。

            3、局部变量。只能在定义时初始化。

注:static变量无法再非静态块和构造函数中初始化,因为静态变量在二者之前加载。同理,实例变量也无法在静态块中初始化,因为静态块加载时实例变量还没有定义。

public static void main(String[] args) {

    final int aInt =10;//必须初始化aInt =1;//编译期间错误System.out.println("aInt = "+aInt);

final StringBuffer s =new StringBuffer("Hello");

    s.append(" World!");

    System.out.println(s);//结果为Hello World!

    final StringBuffer s1 = new StringBuffer(" Hello");

    s1 = new StringBuffer("Hello World!"); //编译期间错误,不可以指向别的对象.

    /*

    * 不可变有两层含义:1 引用不可变 2 对象不可变

    * 综上,final指的是引用不可变,只能指向初始时指向的那个对象,而不关心对象内容的变化.

    * */

}

final数据另一种分类方法:

1.一个永不改变的编译时常量,还有static时命名全部大写:public static final int VALUE_ONE = 99;

2.一个在运行时初始化的值,而你不希望它被改变。private int i = (Random)random.nextInt(20);数值在运行时内被初始化时才会显现,编译时不知道。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,930评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 11,937评论 0 62
  • 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的...
    WilsonMing阅读 3,741评论 0 5
  • 落大雨的时候 我独自在家里 外面的雨不知会落到何时 其实 就算是晴好的天气 我也是独自在家里 只是 不管晴或雨 每...
    铃兰空地阅读 1,098评论 1 4
  • 她们又吵架了。 她们是两个小姑娘,一起上班一起生活。加完班两个小姑娘手挽手,一起去买夜宵。夏天下过雨的夜,来一碗云...
    我也不知道该叫啥阅读 2,555评论 2 0