浅谈静态方法与静态变量
生命周期
静态方法与静态变量初始化是第一次访问时由CLR自动分配一块特殊的内存用于存储静态的代码,进程结束时回收。
关于性能
很多初学者会产生一个误区,认为声明静态后不会回收,会导致系统变慢,当然太多静态的静态的会这样,一般来说一个几百万字的函数也就几兆而已,在一般计算机上对性能影响并不大。静态方法比非静态方法少一个this参数,也不需要进行虚函数解析,效率上会高一些。
静态变量的并发
静态变量发生并发时,会出现与时间有关的错误,一般通过加锁解决。
静态方法何时使用
如果某些操作不依赖具体实例,那它就是静态的,反之如果某些操作是依赖具体实例的(例如访问一个特定会员的名称),那它就应该是实例化的。
静态方法不用new对象可以直接调用
1.与类相关与对象无关
2.不需要对象的“轻”方法
3.工厂方法
如果某个方法是用频率较高,或者方法本身通用性较强,无需初始化类成员变量,则可以使用静态方法,那样方便,速度也快.
可以直接拿来就用的方法,就算是静态的.
肯定不涉及具体对象,因为静态方法内,是无法直接使用任何非静态成员的。
1.制作工具类
2.可以当作"作局"对象或方法来使用
不需要生成对象的
经常频繁使用的
工具类里的(如SqlHelper)
所有对象共有的方法
再不关系到任何于特定对象相关的操作
比如学生的年龄就是学生的相关。
修改学生的年龄就不适合用静态方法。
一般来说,如果你的方法里没有用到this关键字,
那就适合用静态方法
通常通用的类中一些常用的方法可以设计为静态类
只要是没有用到类的状态信息,只从参数获取信息的都可以为静态的
可以实现某些特殊的设计模式:如Singleton
由于没有this指针,可以把某些系统API的回调函数以静态函数的形式封装到类的内部
总之,从OOA/OOD的角度考虑,一切不需要实例化就可以有确定行为方式的函数都应该设计成静态的
注:上述一部份取自大牛博文,欢迎大家批阅。
转载于:https://www.cnblogs.com/yanglongv/p/3853011.html
浅谈静态方法与静态变量相关推荐
- java中virtual关键字_浅谈virtual、abstract方法和静态方法、静态变量理解
说点对这几个容易混淆的词的理解: 1.c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识. 2.virtual与abstract关键字的不同之处在 ...
- python中 是什么类型_浅谈python中的变量默认是什么类型
浅谈python中的变量默认是什么类型 1.type(变量名),输出的结果就是变量的类型: 例如 >>> type(6) 2.在Python里面变量在声明时,不需要指定变量的类型,变 ...
- linux中sh+$0,浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释
摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: ...
- 浅谈 举家搬迁静态文件到CDN
为什么80%的码农都做不了架构师?>>> 由于七牛CDN最近做活动,对于标准用户可以免费使用如下优惠 10 GB 存储空间 10 G/月 下载流量 10 万次/月 PUT/DE ...
- 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释
浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...
- Java 静态类、静态方法和静态变量
转载自Java 静态类.静态方法和静态变量 Java 静态类.静态方法和静态变量 static 是Java中的一个关键字,我们不能声明普通外层类或者包为静态的.static用于下面四种情况. 1.静态 ...
- 浅谈 JAVA中静态初始化块和非静态初始化块的区别
众所周知在JAVA编程语言中有两种初始化块: 静态初始化块 非静态初始化块 他们到底有什么区别呢?今天就浅谈一下JAVA中静态初始化块和非静态初始化块的区别 静态初始化块 定义: static{} 执 ...
- java static 变量存在哪_Java中的静态方法和静态变量存储在哪里?
小编典典 静态方法(实际上是所有方法)以及静态变量都存储在PermGen堆的部分中,因为它们是反射数据(与类相关的数据,而不与实例相关的数据)的一部分. 更新说明: 请注意,只有变量及其技术值(原始或 ...
- 静态方法 和静态变量——Java
什么是静态方法--也叫类方法 当一个方法前有static时此方法就是一个静态方法.静态方法可以直接通过类名调用: 类变量和类方法 类变量(也叫静态变量,由static修饰的变量:)也叫静态属性:可以被 ...
- java:静态方法,静态变量,实例方法,实例变量的关系 ----李雪
下面的例子可以解释这几个的关系 public class Test { int a= 8; static int b = 10; Test(){ } //静态方法 public static void ...
最新文章
- 1小时教你做360度全景“小星球”效果图 Skillshare – Create a Panoramic ‘Little Planet’ from Anywhere
- Eclipse解决JSP页面乱码问题
- rsync 常用命令及格式
- 计算机课题推荐人意见,课题推荐人意见怎么写
- gradle 命令行_Gradle命令行便利
- 鱼c论坛python课后作业_三日速成python?打工人,小心钱包,别当韭菜
- 抓住眼球的美食海报模板|总有设计技法,吸引住你
- 颜值与特色并存!各大高校“中秋限定款”月饼刷屏,你酸了吗?
- 航空公司客户价值分析的实验报告
- python爬楼梯问题_python解决上楼梯问题
- 谷歌、斯坦福联合发文:我们为什么一定要用大模型?
- 小米怎么快速回到顶部_打开小米这3个设置,手机越用越好用啦!你现在还不知道吗?...
- STDIN_FILENO与stdin
- ORACLE的连接模式——专用服务器和共享服务器
- 背景图页面缩小会变形_CSS背景图拉伸不变形
- 学python重点是什么_如果只有1小时学Python,看这篇就够了
- Android预置默认输入法
- 谈谈我对云原生与软件供应链安全的思考
- 聊一聊JAVA指针压缩的实现原理(图文并茂,让你秒懂)
- X Window 程式设计入门--第三章 绘图(Graphic)
热门文章
- Snmp的学习总结——Snmp的基本概念
- python报错:Exception Value:can only concatenate str (not bytes) to str
- Assets.car 解压工具 cartool 使用报错 segmentation fault cartool 解决方案
- bootstrap基础样式学习(二)——栅格
- python序列化-复习
- CodeForces - 721E
- 开发WCF/Silverlight须知
- JMX系列之JmxMBeanServer
- Linux的用户和组
- Oracle ORA-01555(快照过旧)