• 对java中final关键字的理解


    在java语言中,final关键字指的是“它是无法改变的”,使用到final关键字有三种情况:数据、方法和类。

    一个既是static又是final的字段只占据一段不能改变的存储空间。

    用final关键字定义的数据:

    1)如果是基本类型的数据,那么final使数值恒定不变;(八种基本类型:boolean,char,byte,short,int,long,float,double)

    2)如果是对象的引用,那么final使对象的引用恒定不变,也就是说一旦指向了某个对象的引用,就无法再把它指向其它对象了;但是对象本身是可以修改的。

    class Foo {
    private String fooName;

    public Foo() {
    // TODO Auto-generated constructor stub
    }

    public String getFooName() {
    return fooName;
    }

    public void setFooName(String fooName) {
    this.fooName = fooName;
    }
    }

    public class TestFoo
    {
    private final Foo foo;

    public TestFoo() {
    foo = new Foo();
    //默认设置fooname
    foo.setFooName("default Foo Name");
    }

    public Foo getFoo() {
    return foo;
    }
    //error,定义为final对象不能被修改
    /*
    public void setFoo(Foo f) {
    this.foo = f;
    }
    */

    public static void main(String[] args) {
    TestFoo tf = new TestFoo();
    Foo f = tf.getFoo();
    System.out.println(f.getFooName());//输出default Foo Name
    f.setFooName("test1");
    System.out.println(f.getFooName());//输出test1
    }
    }

    用final关键字修饰方法:

    1)把方法锁定,以防任何继承类修改(private声明的方法隐式的指定为final,private修饰的方法是无法继承的,可以在private方法上加final进行修饰,但没有任何额外的意义,反而是画蛇添足);

    2)提高效率。如果将一个方法指定为final,那么编译器将针对该方法的所有调用转为内嵌调用。

    用final关键字修饰类:

    当将某个类整体定义为final时,就表明了这个类不会被其它类继承,而且也不允许别人这样做。



  • 相关阅读:
    elasticsearch 索引清理脚本及常用命令
    git 快速入门及常见用法
    第01章-成本,你真的算对过吗?
    windows mysql安装及常用命令
    centos7 systemctl配置开机自启动服务
    python pip手动安装二进制包
    centos7使用nginx+uwsgi部署python django项目
    python json.loads()、json.dumps()和json.dump()、json.load()区别
    比阿里云快2倍的InfluxDB集群,我们开源了
    为什么是InfluxDB | 写在《InfluxDB原理和实战》出版之际
  • 原文地址:https://www.cnblogs.com/linxyz/p/2396746.html
Copyright © 2020-2023  润新知