zoukankan      html  css  js  c++  java
  • 对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时,就表明了这个类不会被其它类继承,而且也不允许别人这样做。



  • 相关阅读:
    web前端的发展态势
    AngularJs 简单入门
    css代码优化篇
    git提交报错:Please make sure you have the correct access rights and the repository exists.
    Activiti工作流框架学习
    遍历map集合的4种方法
    js设置日期、月份增加减少
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    webservice_rest接口_学习笔记
    相互匹配两个list集合+动态匹配${}参数
  • 原文地址:https://www.cnblogs.com/linxyz/p/2396746.html
Copyright © 2011-2022 走看看