final+static

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序代码编辑器和浏览器代码编辑器&代码可视化执行过程

tutorialspoint http://www.tutorialspoint.com/codingground.htm 1. Sublime Text :http://blog.l1n3.net/editor/sublime-text-introduce/ 下载 :http://www.sublimetext.com/3 2. Notepad https://notepad-plus-plus.org/zh/ 更多细节请查看 htt…

匿名对象+内部类

匿名对象 普通的类对象在使用时会定义一个类类型的变量,用来保存new出来的类所在的地址。而匿名类取消掉了这个变量,这个地址由编译器来处理,并且在new出来之后,它占用的内存会有JVM自动回收掉。后续无法再使用了。例如 public cl…

听技术播客:一边学Python编程一边学英语

本文转自:http://codingpy.com/article/recommended-python-podcasts/ 学技术的朋友一般都会关注不少技术博客(blog),但是关注技术播客(podcast)的人估计不会太多。这里一方面也是由于相关的播客数量&#…

mysql补充

mysql补充 mysql使用流程 开启服务端,mysqld或者net start mysqlcmd下键入mysql -u root -p,输入设置好的密码,连接mysql客户端show databases;展示所有的mysql仓库创建一个库:create database CRM;然后sho…

编程书单:十本Python编程语言的入门书籍

本文转自:http://codingpy.com/article/10-python-beginner-books/ 本文与大家分享一些Python编程语言的入门书籍,其中不乏经典。我在这里分享的,大部分是这些书的英文版,如果有中文版的我也加上了。有关书籍的介绍,大…

JavaScript异步

JavaScript异步类型 延迟类型:setTimeout、setInterval、setImmediate监听事件:监听new Image加载状态、监听script加载状态、监听iframe加载状态、Message带有异步功能类型: Promise、ajax、Worker、async/awaitJavaScript常用异步编程 Prom…

Sublime配置与各种插件

本文转自:http://www.cnblogs.com/yyhh/p/4232063.html Sublime Text 3 安装Package Control 点击View -> Show Console 在下方命令行内,输入以下命令。 import urllib.request,os;pfPackage Control.sublime-package;ippsublime.installed_packages_…

把Sublime Text 2打造成一个轻量级Python的IDE

本文转自:http://blog.l1n3.net/python/sublime-text-to-python-ide/ 因为这段时间迷上了Python,所以想吧Sublime Text 2弄成一个Python的简易IDE,Python自带的IDLE简直太难用!!!! 配置Python环…

数据库表操作、数据类型及完整性约束

数据库表操作、数据类型及完整性约束 库操作补充 数据库命名规则: 可以由字母、数字、下划线、@、#、$区分大小写唯一性不能使用关键字如 create select不能单独使用数字最长128位表操作补充 #语法: create table 表名…

算法第一次作业

1.代码规范(由于日后可能会用C和Java,就找了两种) Google C代码规范:https://blog.csdn.net/freeking101/article/details/78930381 Ggoogle Jave代码规范:https://www.jianshu.com/p/4e50269037ed 2.《数学之美》读后…

Sublime Text官方文档 中英文版本

英文版本:http://docs.sublimetext.info/en/latest/index.html 中文翻译版本:http://sublime-text.readthedocs.org/en/latest/reference/build_systems.html

第99:真正理解拉格朗日乘子法和 KKT 条件

转载于:https://www.cnblogs.com/invisible2/p/11441485.html

有了CodinGame,玩着游戏就能学编程

本文转自:http://www.codingpy.com/article/learning-to-code-becomes-a-game/ 今天编程派向大家推荐一个有趣的编程练习平台,而它与其他平台的差异,就在于它将编程练习变成了一个个游戏。这个平台的名字叫CodinGame,是一家法国创…

第98:svd原理

SVD分解:任何矩阵都可以分解成第一行的形式,3个相乘。UV都是正交矩阵,中间的是奇异值。 3个相乘的形式可以拆分。即奇异值*第一行*第一列。在相加。 奇异值有时很小,在这种情况下,丢掉,可以减少计算量&…

Python学习(变量与字符串)

print()、input()、if/else就可以做一个简陋的游戏 print() # 打印函数,将信息打印出来input() # 将信息打印,并且要求输入一段话,并且把这段话。input函数,这个函数会将字符串显示在IDLE上,并且让用户输入信息&#…

第97:一文读懂协方差与协方差矩阵

转载于:https://www.cnblogs.com/invisible2/p/11442777.html

Python清屏小结

1. cmd–>python import os i os.system(cls) 2.通用的清屏 def cls(): print("\n"*100) 3.为idle增加一个清屏的扩展ClearWindow 首先下载clearwindow.py(点击可直接下载,不能下载的可以右键保存,格式为py结尾&#xff0…

设计模式之模板方法模式实战解析

本文微信公众号「AndroidTraveler」首发。 背景 最近在看《设计模式之禅》,为了能够更加深入的理解设计模式,达到学以致用。 这边记录一下自己的一些感受和看法,并结合具体代码实战来进行说明。 模板方法模式 但凡和设计模式挂上钩&#xff0…

LIBSVM在MATLAB中的使用及SVM最优参数选取示例代码

1. 参考网站: LIBSVM 库下载:http://www.csie.ntu.edu.tw/~cjlin/libsvm/ https://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html?js1#svm-toy-js 视频: http://v.youku.com/v_showMini/id_XMjc2NTY3MzYw_ft_131.html 详解&#xff1…

Date类+DateFormat

Date 类 Date 表示特定的瞬间,精确到毫秒。 毫秒概念:1000毫秒1秒 毫秒的0点: System.currentTimeMillis() 返回值long类型参数 用于获取当前日期的毫秒值 时间的原点:公元1970年 一月一日,午夜0:00&#…