zoukankan      html  css  js  c++  java
  • Java--static、final、static final的区别

    一、final

    • final修饰类:表示该类不能被继承;final类中的方法默认是final的;
    • final修饰方法:表示该方法无法被重写;
    • final修饰方法参数:表示在变量的生存期中它的值不能被改变;
    • final修饰变量:包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值;

    成员变量与局部变量的区别:

    1. 在类中位置不同。成员变量:在类中方法外。局部变量:在方法定义中或者方法声明上。
    2. 在内存中的位置不同。成员变量:在堆内存。  局部变量:在栈内存。
    3. 生命周期不同。成员变量:随着对象的创建而存在,随着对象的消失而消失。 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。
    4. 初始化值不同。成员变量:有默认值初始化。局部变量:没有默认值初始化,必须定义,赋值,然后才能使用。
    5. 另外,局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

    二、static

    • 修饰成员变量:将其变为类成员,从而实现所有对象对于该成员的共享;
    • 修饰成员方法:将其变为类方法,可以直接使用“类名.方法名"的方式调用,常用于工具类;
    • 静态代码块:将多个类成员放在一起初始化,用来优化程序性能,它只会在类加载的时候执行一次。

    静态变量和非静态变量的区别是:

    1. 静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
    2. 非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

    三、static final:同时使用static和final修饰的成员在内存中只占据一段不能改变的存储空间。

    • 修饰变量:表示一旦给值就不可修改,可以通过类名可以直接访问;
    • 修饰方法:表示不可覆盖,可以通过类名直接访问。
  • 相关阅读:
    ubuntu 16.04常见错误--Could not get lock /var/lib/dpkg/lock解决
    Ubuntu 16.04 LTS安装搜狗拼音输入法网易云音乐 Remarkable
    Ubuntu 16.04 LTS(入门一)国内快速更新软件源
    C语言程序注释风格
    【译】基于主机的卡仿真(Host-based Card Emulation)
    NFC Spy:基于Android 4.4及以上手机的非接智能卡跟踪仪
    Ubuntu 16.04 Vim安装及配置
    Alpha阶段 第九次Scrum Meeting
    Alpha阶段 第八次Scrum Meeting
    Alpha阶段 第七次Scrum Meeting
  • 原文地址:https://www.cnblogs.com/fqfanqi/p/10674336.html
Copyright © 2011-2022 走看看