在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。

1、修饰类:  当用final修饰一个类时,表明这个类是最终类,不能被继承。如果一个类你不想让它被继承,就可以用final进行修饰。

2、修饰方法:使用final修饰的方法不能被子类重写。(最终方法)

3、修饰变量: 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

由final修饰的变量,是常量,一旦初始化后,它的值不能被修改,即不能被重新赋值,主要是项目中应用的常量的抽取:比如URL常量、路径常量、数字常量等.不能让人轻易修改。

注意: 当final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。

 public static final String URL_GET = "/Api/GetMaintenanceType.html";//保养列表

————————————————————————————————>

Static关键字:  只能用于修饰成员变量和成员方法。

Static修饰的成员变量就成了类变量,随着类的加载而加载,生命周期和类一样。

Static修饰的成员方法变成了类方法,可以直接通过类名调用。和.class一样存在于方法区。

非静态的成员方法与成员变量的调用,只能通过创建对象调用。类名.方法名等;而静态的成员可以通过类名和创建对象调用(尽量用类名调用,不要创建对象)。

被修饰的成员有以下特点:

1)随着类的加载而加载、

2)优先于对象存在、

3)被所有对象所共享(比较节约空间)、(可以用代码证明)

4)可以直接被类名调用, Constant.BASE_URL、NetManager.getData();

注意事项:

1)静态方法只能访问静态的成员变量,不能访问非静态的成员变量。 为什么?因为静态成员先于对象存在,比对象先创建。当静态成员存在时,对象还没有创建。他们的生命周期不一样。但是非静态的可以访问静态的。

2)静态方法中不可用this/super关键字。为什么:this指向调用本方法的对象的引用(对象还没有创建呢)

由static修饰的成员变量、成员方法和类同时进行加载到内存,所以优先于对象存在。

一般在工具类中使用静态、static;

类是什么时候加载到内存的?  对象是什么时候加载到内存的?

内存分区图:

堆内存:  用于存储对象

栈内存:  用于存储基本类型变量区,使用完成后,所占空间会自动释放。

方法区: 
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

静态成员与非静态成员的区别:

生命周期:

静态成员随着类的加载而加载,随着类的消失而消失,生命周期长;

普通成员随着对象的存在而存在,随着对象的消失而消失。

存放位置:静态成员存在于方法区中,非静态成员存在于堆中。

static对性能的影响:

为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。

static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!  常量必须要加static关键字修饰

static就是静态变量,声明为static的变量实质上就是全局变量,如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象!

内部类 viewHolder需要加static,下面这种写法影响性能
    class ViewHolder {TextView item_by_text1,item_by_text2;}

没有必要时请不用使用静态变量,生命周期比较长,不能被回收,占用内存。

static与final关键字相关推荐

  1. Java:static和final关键字的区别与比较

    文章目录 前言 一.final关键字 二.static关键字 总结 前言 本文记录笔者在复习Java基础期间学习的static和final关键字 一.final关键字 final关键字具有如下特点 f ...

  2. Java 中关于this、static、final 关键字的使用

    this关键字 this 关键字主要有以下几种作用: 1:当类成员变量与局部成员变量重名时,可以用this 关键字把局部成员变量赋值给类成员变量 2:this可以用来在构造函数中调用其他构造函数    ...

  3. [转载] java(三)对象的序列化与static、final关键字

    参考链接: Java中的final最终变量 java对象的序列化 Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程.java中存有Clon ...

  4. java static final关键字_Java的static与final关键字

    版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创! 恰饭广告 static:(静态修饰符)面向对象中static修饰的内容是隶属于类,而不是直接隶属于对象的,所以static修 ...

  5. JAVA day07 权限,封装,JavaBean(规范代码),static、final关键字

    1.权限 在Java中提供了四种访问权限,使⽤不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限: public:公共的 protected:受保护的 default(friendly):默认 ...

  6. 黑马程序员——static和final关键字

    ---------------------- android培训.java培训.期待与您交流! ---------------------- 一丶Static关键字 1.static是一个修饰符,用于 ...

  7. (1)访问控制 (2)final关键字 (3)对象创建的过程 (4)多态

    1.访问控制(笔试题) 1.1 常用的访问控制符 public - 公有的 protected - 保护的 啥也不写 - 默认的 private - 私有的 1.2 访问控制符的比较 访问控制符 访问 ...

  8. 浅谈Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  9. 浅析Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  10. 【转】浅析Java中的final关键字

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. ...

最新文章

  1. Endnote X8云同步:家里单位实时同步文献笔记,有网随时读文献
  2. Oracle经典教程学习笔记
  3. 如何在开发资源或能力不足的情况下进行敏捷开发?
  4. BZOJ2705 [SDOI2012]Longge的问题 欧拉函数
  5. 专家:我国青少年网络安全立法还需完善
  6. 14门Linux课程,打通你Linux的任督二脉!
  7. 微软面向初学者的机器学习课程:1.4-机器学习技术
  8. 工业以太网交换机选机攻略
  9. CarAppFocusManager
  10. python sqlite3
  11. SQLServer 2012 可视化窗口中,设置“时间”默认值为“当前时间
  12. MySQL之mysqldump的使用
  13. 博客园鼠标点击烟花特效
  14. 【linux】安装python依赖库confluent_kafka
  15. 拓端tecdat|使用Python中Keras的LSTM递归神经网络进行时间序列预测
  16. 一次非常成功的项目经验分享和糟糕项目的对比
  17. unity商店demo学习:跑酷游戏
  18. API接口设计的五大公共参数
  19. c语言中1 2 3怎么运算符号,C语言运算符和表达式(一)
  20. 树莓派2B使用360随身WiFi2代连接WiFi

热门文章

  1. PPPoE技术白皮书
  2. 线程安全单例模式(C++)
  3. 全球及中国分布式光纤传感(DFOS)行业动态及十四五前景预测报告2022-2027
  4. ctf misc 图片题知识点
  5. linux免费商用字体,免费可商用字体~文泉驿正黑体
  6. 树莓派学习2-连接蓝牙音箱进行语音播放
  7. Mac上好用的web前端开发工具
  8. IDEA 导出UML类图
  9. 最新苹果CMSV10视频电影网站源码+自适应手机版
  10. 计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文