浅谈static关键字的四种用法
1、修饰成员变量
在一个person类中,一个成员变量例如 String name,当new2个person()对象时候,这2个对象在堆的位置是不同的,给name赋值张三、李四,这两个对象的name是互相不影响的。


该修饰只会在特定情况下使用,例如给一个数量统计count一个初始化值0,后续根据代码逻辑增加。可以修饰为例如:private static int count=0;
2、修饰成员方法
static修饰方法后,最大的作用就是可以"类名.方法名"调用该方法。但是在实际开发中也少用到该方式,因为一是static修饰后的方法资源共享,在多线程场景不安全。二是静态资源常驻内存,很难被回收;
扩展:
构造器是静态方法么?
构造器中可以有"this",并且当创建对象时必须new Person();此时用到了构造器。而static方法没有this,也不属于任何对象,并且构造器也不是方法。所以构造器不是静态方法;
3、静态块
static修饰静态块后,将要修饰的成员同一放在一个static中。该静态化会在第一次使用类时,最先初始化static修饰的静态块。并且在程序运行过程中,只需要初始化一次,不会进行多次初始化;


输出结果:
animal staticcat staticanimal constructor
cat constructor
加载顺序:首先运行main方法,但是在运行main方法之前会先加载类,发现Test继承Base类,所有先加载Base类,再加载Test类。加载类的时候运行静态代码块,所以依次输出animal static、cat static。加载完类后执行main方法,创建对象new Cat(),执行构造器,先执行父类,再执行子类,则依次输出animal constructor、cat constructor。(构造器在new对象后才会去初始化)
4、静态导包
静态导包指在导入包前用static修饰,作用是当使用静态导包后,引用导入类的方法(变量)时,可以不用XXX=类名.方法,直接XXX=方法();(变量也是一样);
但是有一个缺点,如果频繁使用静态导包,会降低代码可读性。并且如果导入的不同类有相同方法名(或变量名),可能会冲突。
参考文章:https://www.cnblogs.com/dolphin0520/p/3799052.html
浅谈static关键字的四种用法的更多相关文章
- 【转载】java static 关键字的四种用法
原文链接点这里,感谢博主分享 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构 ...
- [java]static关键字的四种用法
在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一下stat ...
- Static 关键字的 5 种用法,你会几种?
); System.out.println(Thread.currentThread().getName() ...
- 浅谈Static关键字
1.使用static关键字声明的属性为全局属性 未使用static关键字指定city之前,如果需要将Tom,Jack,Mary三人的城市均改成Beijing,需要再次声明三次对象的city为Beiji ...
- C# this关键字的四种用法
Go to below URL to find more details and example. http://blog.csdn.net/longlong821/article/details/7 ...
- C# this关键字的四种用法(转)
用法一 this代表当前类的实例对象 namespace Demo { public class Test { private string scope = "全局变量"; pu ...
- C#中 this关键字 四种用法
/// <summary> /// 主程序入口 /// </summary> /// <param name="args"></param ...
- 【转载】java final 关键字的几种用法
原文链接点这里,感谢博主分享 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构 ...
- [java]final关键字的几种用法
在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...
随机推荐
- 7I - 数塔
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目 ...
- elementUI表格排序问题
elementUI表格排序: 问题:得不到排序后的数组,每次打印的总是一开始的数据 <el-table ref="passTable" :data="passTab ...
- Hello The Merciless World!
这里是一名FJ蒟蒻OIer的Blog,ID在上面自己不会看嘛QAQQQ是GldHkkowo(很随性的名字w 联系方式:QQ:735900335 加 Q Q 看 蒟 蒻 WA 题 爱好? 死宅的爱好是什 ...
- rds
数据库:提供数据的高可用保证,至少要用双节点(一主已备,经典高可用架构:采用基于binlog的数据复制技术维护数据库的可用性和数据一致性.同时,高可用版的性能也可以满足业务生产环境的需求,配置上采用物 ...
- 2019-1-24 Spark 学习 --总体架构
2019-1-24 Spark 学习 --总体架构 新建 模板 小书匠 1548339392539.jpg 1548339357270.jpg 1548339372461.jpg 1548339345 ...
- JavaBean动作元素
用动作标签创建Javabeans实例 <jsp:useBean id="实例对象名" class="com.po.Users(类全名)" scope=&q ...
- Java:ConcurrentHashMap支持完全并发的读
ConcurrentHashMap完全允许多个读操作并发进行,读操作并不需要加锁.(事实上,ConcurrentHashMap支持完全并发的读以及一定程度并发的写.)如果使用传统的技术,如HashMa ...
- Python——我所学习的turtle函数库
1基础概念 1.1 画布(canvas) 画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置. 常用的画布方法有两个:screensize()和setup(). (1)tur ...
- Flask web 开发出现错误:TypeError: Allowed methods have to be iterables of strings, for example: @app.route(..., methods=["POST"])
没有发现普通都语法错误,然后一一比对官方教程里面的代码,发现是在“@bp.route('/<int:id>/delete', methods=('POST'))”这一行代码里面method ...
- Kalman Filters
|—定位—|—蒙特卡洛方法(定位自身) | |—卡尔曼滤波器(定位其他车辆) |—高斯函数 |—循环两个过程—|—测量(测量更新) | ...