浅谈对static的理解
相信很多朋友在面试过程中都遇到过关于static的相关题目,接下来我们来分析一下static。
static(静态的),用来修饰成员变量,成员方法,它随着类的加载而加载,使用static修饰的数据可以直接使用类名来调用。由此可以得出,静态的方法是不可以访问非静态的成员方法和成员变量的,因为非静态需要依赖对象来调用。但是相反的,非静态的方法是可以访问静态的成员方法和成员变量的。
使用static修饰的方法不能使用this,这是因为static随着类的加载而加载,不存在依赖对象的情况。
根据上述两点我们可以总结出来静态的特性:只在类加载时执行一次,根据这个特性还可以得出静态使用的地方,那就是在创建对象前就需要调用方法或者变量。
最后大家可以看一下下面这个题的运行结果
public class son extends Farther{
static {
System.out.println("子类的静态代码块被调用了");
}
public son() {
System.out.println("子类的构造方法执行了");
}
public static void main(String[] args) {
new son();
}
}
class Farther {
static {
System.out.println("父类的静态代码块被调用了");
}
public Farther() {
System.out.println("父类的构造方法执行了");
}
}
| 执行结果 |
|---|
| 父类的静态代码块被调用了 |
| 子类的静态代码块被调用了 |
| 父类的构造方法执行了 |
| 子类的构造方法执行了 |
我们现在来分析一下这道题,首先进来后程序先准备加载son,发现son是farther的子类后,开始加载farther,由于静态代码块是随着类的加载而加载的,就首先输出了“父类的静态代码块被调用了”,
随后输出“子类的静态代码块被调用了”,这时类加载完毕,执行主方法,主方法是创建son的对象,son是farther的子类,所以执行父类的构造方法,随后执行子类的构造方法。
经过上述的描述,大家应该也对static有了初步的认识,如果有问题可以在评论中提出来,我会及时更改或者回答大家的问题的。
我是一个正在偷偷努力学习java的大胖子,有任何问题大家都可以发在我的个人公众号上边,我也会尽量帮大家解决,当然,我也只是一个正在学习java的人,并不能保证“每个(其实是大部分问题都不能)”问题都能回答上来。
还有我的个人公众号会不定时更新我的java学习之路,大家如果也在学习java可以在公众号上边与我交流哦。

浅谈对static的理解的更多相关文章
- 浅谈 Attention 机制的理解
什么是注意力机制? 注意力机制模仿了生物观察行为的内部过程,即一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制.例如人的视觉在处理一张图片时,会通过快速扫描全局图像,获得需要重点关注的目 ...
- 浅谈-对modbus的理解
浅谈-对modbus的理解 一.简介 Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准.1996年施耐德公司推出基于以太网TCP/IP的Modbus协议:ModbusTCP ...
- 委托学习总结(一)浅谈对C#委托理解
初入社会,对于我这个初级程序员来说要学的东西实在太多了,公司最近在做一个winform框架开发的桌面应用程序,众所周知,winform也好,webform也好,里面随处可见的事件驱动,有事件,当然也少 ...
- 浅谈Js原型的理解
一.js中的原型毫无疑问一个难点,学习如果不深入很容易就晕了! 在参考了多方面的资料后,发现解释都太过专业,对于很多还没有接触过面向对象 语言的小白来说,有理解不了里面的专有名词!如果你没 ...
- 浅谈对MVC的理解
1.MVC设计模式理解 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界 ...
- 浅谈对java-GC的理解
前段时间,一个线上项目忽然很卡,通过监控,发现内存很高,果不其然在几个小时后,OOM.虽说有人很快处理好了.但我还是想站在我的角度,对这件事发表一下自己的观点. 内存溢出,多发生在项目上线后,而且在系 ...
- 浅谈iOS触摸事件理解
iOS的触摸事件个人总结,分为两步: 第一步:是找到哪个视图上触摸 第二步:分析由谁去响应(响应者连) 1.寻找被触摸的视图原理如下图 hitText:withEvent:的方法处理流程: 首先会在当 ...
- 浅谈对NaN的理解
1.NaN : Not a Number 不是一个数字 2.NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内 3.判断是否是NaN, 方法一 :is.NaN(变量): 方法二 :Nu ...
- 手撸ORM浅谈ORM框架之基础篇
好奇害死猫 一直觉得ORM框架好用.功能强大集众多优点于一身,当然ORM并非完美无缺,任何事物优缺点并存!我曾一度认为以为使用了ORM框架根本不需要关注Sql语句如何执行的,更不用关心优化的问题!!! ...
随机推荐
- Win8 Metro(C#)数字图像处理--2.49Zhang二值图像细化算法
原文:Win8 Metro(C#)数字图像处理--2.49Zhang二值图像细化算法 [函数名称] 二值图像细化算法 WriteableBitmap ThinningProcess ...
- mysql索引创建&查看&删除
1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有 ...
- 关于SetLocaleInfo()
原文:关于SetLocaleInfo() 此函数用于设置系统的一些本地信息, 非常有用. 比如日期格式为'yyyy/mm/dd'时, 稍微不注意,有些程序语句会报错. 以下资料网络收集: 1. Set ...
- windows界面程序设计,设置一个窗口始终在屏幕最前,SetWindowPos函数
有时这种需求还是很必须的,比如现在做的一个登录验证系统,如果在windows登录界面点击到窗口外面,那窗口就会永远隐藏掉没法再启用了.这种情况必须设置该窗口一直在最前. 使用函数SetWindowPo ...
- Linux文件系统操作与磁盘管理
简单文件操作 df---->report file system disk space usage du---->estimate file space usage 2.简单的磁盘管理 d ...
- C# 遍历窗体控件顺序问题
今天在做C# winform 窗体控件遍历时遇到控件顺序的问题,也就是控件被遍历的先后问题.实际情况如下所述. 窗体界面如下: 界面构成是:主界面有一个 Panel (Panel_14),Panel_ ...
- 实现js与Qt程序的交互(使用QtWebkit)
在QtWebkit的javascript里访问QObject的最关键的关键就是下面这个方法: void QWebFrame::addToJavaScriptWindowObject ( const Q ...
- Qt 之 样式表的使用——样式选择器(上下篇,很详细)
http://blog.csdn.net/goforwardtostep/article/details/60884870 http://blog.csdn.net/goforwardtostep/a ...
- 转载几篇文章URL
读了百伯在线Jobbole的几篇文章,转给需要的朋友.如下: 产品小设计大体验:http://blog.jobbole.com/39593/ 苹果是一家有工程师的设计公司:Google是一家有设计师的 ...
- Md2All:好用的markdown文件转换工具,文章迁移微信公众号的利器
目录 简介 使用体验 极速上手 更多功能 总结 简介 markdown以简单的语法和强大的功能,征服了无数技术创作者,几乎主流的技术博客网站都开始支持markdown语言撰写博客.但是微信公众号的文章 ...