final

final关键字顾名思义代表“最后的”,意味着不能被更改。它的定义,可以概括地分为以下三点:

  1. 被final修饰的类不能被继承;
  2. 被final修饰的方法不能被重写;
  3. 被final修饰的变量不能被改变。注:引用类型的变量,引用不可变,但是引用所指向的内容是可变的

如果一个方法被final修饰,那么在编译阶段,JVM会为其寻求内联,即相当于将该方法中的语句都添加到调用该方法的代码中,去除这个方法。函数的调用是需要一定的开销的:保护现场、建立堆栈、恢复现场等,对于一些代码量不大,又频繁调用的函数来说,时空的消耗都是很大的,所以内联有助于提升Java的效率。因此如果已经确定某一个方法不会被继承,就尽量用final来修饰。

static

static关键字同样可以用于修饰类、方法和变量,但它修饰的类只能是内部类,它所修饰的方法和变量可以称为“静态方法”、“静态变量”,也可以称为“类方法”、“类变量”,后一种称呼显然更贴近于它的实际含义。相对于“类方法”、“类变量”的是“实例方法”、“实例变量”,也就是没有用关键字static修饰的方法和变量。一个类可以有很多对象(实例),对于非静态变量,每个对象都拥有,而静态变量,则是所有对象共有。

  • 静态资源是独立于类而存在的,所有实例共享,在类初始化的时候加载;
  • 非静态资源是在new一个新对象的时候加载,即生成实例的时候。

通过以上两点,可以得出:
当类只进行了初始化,还未产生实例的时候,非静态资源是未被加载出来的,因而在静态方法中引用非静态资源是错误的
当父类子类都存在静态资源和非静态资源的时候,new第一个子类对象时,调用资源的顺序是:父类静态资源 -> 子类静态资源 -> 父类构造函数 -> 子类构造函数。由于静态 资源初始化只需一次,new第二个子类对象时,调用资源的顺序就是 父类构造函数 -> 子类构造函数

转载于:https://www.cnblogs.com/sy130908/p/11429521.html

final+static相关推荐

  1. java中abstract,interface,final,static的区别

    2019独角兽企业重金招聘Python工程师标准>>> 关键字: abstract, interface, final, static 一,抽象类:abstract 1,只要有一个或 ...

  2. 数组声明为public final static缺陷

    本期主题为数组声明为public final static缺陷漏洞的相关介绍. 一.什么是数组声明为public final static缺陷? 程序声明一个public final static的数 ...

  3. 【Java4】实例初始化,类初始化,/接口,多态,final/static,权限修饰符/native

    文章目录 1.实例初始化过程:有几个构造器,就会有几个实例初始化方法 2.实例初始化和类初始化结合:先类(静态)后实 3.接口:只有abstract可省 3.1 鸟类案例:Flyable相当于父类的一 ...

  4. JVM—堆栈 堆 方法区 静态区 final static 内存分配

    原文作者:一夜丶鱼龙舞 原文地址:JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解(转) 一.栈(stack)和堆(heap) (1)内存分配的策略 按照编译原理的观点,程 ...

  5. java final内存机制_Java中的内存处理机制和final、static、final static总结

    装载自:http://blog.csdn.net/wqthaha/article/details/20923579 Java程序运行在JVM上,可以把JVM理解成Java程序和操作系统之间的桥梁,JV ...

  6. static java 内存_final, static,final static 分别放在jvm内存的什么地方?

    比如我写一个类:public class JvmTest { public static String st_static = "hello static"; public fin ...

  7. java 关键字final static

    final的概念 继承的出现提高了代码的复用性, final的特点 l  final修饰类不可以被继承,但是可以继承其他类. class Yy {} finalclass Fu extends Yy{ ...

  8. 抽象类实例化 使用原功能 c++_java 学习笔记 day08 final/static关键字、抽象类和接口...

    1.final关键字 final修饰类:此类不能被继承 final修饰变量:则变量不能被修改,是常量 final修饰方法:父类的方法被final修饰时,不能被重写 2.static关键字 2.1被st ...

  9. 关键字—final static const的区别

    关键字 解释 修饰类 修饰方法 修饰变量 final:终态 这个关键字的含义是"这是无法改变的"或者"终态的": 这个类不能被继承,这个类的所有方法都是fina ...

最新文章

  1. 识别User Agent屏蔽一些Web爬虫防采集
  2. Java开发-Redis客户端Jedis
  3. 【转】MySQL中select * for update锁表的问题
  4. Qt文档阅读笔记-QGraphicsBlurEffect官方解析与实例
  5. eclipce 快捷键
  6. 在大公司天天调参数,感觉快废了
  7. window 下的mysql_Window下mysql的安装
  8. 靠谱测试人员需要具备专业技术能力
  9. Linux export 命令设置环境目录
  10. Docker到底是什么?为什么它这么火!
  11. 机器学习入门——分类算法的评价
  12. 【企业开源】小米开源:站在巨人肩膀上的创新
  13. total commander
  14. i7 9750h和i511400h差距
  15. 树莓派3B+ 引脚图说明
  16. BASLER Pylon 抓取策略
  17. AD5541输出控制
  18. Day1 命名规范 静态函数 构造析构 指针引用
  19. 我曾七次鄙视自己的灵魂 -- 纪伯伦
  20. 恒生电子2015春季校招笔试题

热门文章

  1. android+note2+分辨率,5.5英寸720p屏全新RGB像素排列_三星 GALAXY Note II_手机Android频道-中关村在线...
  2. 1262. 可被三整除的最大和(贪心||动态规划)
  3. codeforces(牛客网dp专题,排序)
  4. 9.Excel数据透视表
  5. 使左对角线和右对角线上的元素为0
  6. springboot 打印乱码_Springboot中使用logback输出日志中文乱码
  7. 华为服务器如何修改ftp密码,ftp怎么改服务器密码
  8. 仿生蛇类机器人 特点_今日项目:功能表面仿生激光强化及其修复再造技术
  9. 下一代CAN通信技术CAN XL简介
  10. android 铃声位置