博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态类和非静态类的区别
阅读量:4963 次
发布时间:2019-06-12

本文共 1002 字,大约阅读时间需要 3 分钟。

转自:

静态方法与非静态方法区别使用大致如下

● 生命周期(Lifecycle):

静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭。

非静态方法(Non-Static Method)又叫实例化方法,属于实例对象,实例化后才会分配内存,必须通过类的实例来引用。不会常驻内存,当实例对象被JVM 回收之后,也跟着消失。 

 ● 
效率

 静态方法的使用效率比非静态方法的效率高。

 

按照上面的概念,只要内存够用,都可以使用静态的。使用静态方法会带来什么问题呢

● 线程安全

静态方法是共享代码段,静态变量是共享数据段。既然是“共享”就有并发(Concurrence)的问题。

非静态方法是针对确定的一个对象的,所以不会存在线程安全的问题。

静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别。

 

  • 不需要生成对象的  经常频繁使用的  工具类里的(如SqlHelper)
  • 适当地使用static方法本身并没有什么,当一个人从来不懂使用多态、接口设计时,很自然地会滥用static方法。
  • 个人理解在多个类中需要调用并且是与对象无关的方法可设为静态方法,方便调用。
  • 所有对象共有的方法
  • 再不关系到任何于特定对象相关的操作  比如学生的年龄就是学生的相关。  修改学生的年龄就不适合用静态方法。  一般来说,如果你的方法里没有用到this关键字,  那就适合用静态方法
  • 通常通用的类中一些常用的方法可以设计为静态类
  • 只要是没有用到类的状态信息,只从参数获取信息的都可以为静态的
  • 可以实现某些特殊的设计模式:如Singleton
  • 由于没有this指针,可以把某些系统API的回调函数以静态函数的形式封装到类的内部
  • 可以封装某些算法,比如数学函数,如ln,sin,tan等等,这些函数本就没必要属于任何一个对象,所以从类上调用感觉更好
  • 总之,从OOA/OOD的角度考虑,一切不需要实例化就可以有确定行为方式的函数都应该设计成静态的
  • 静态方法与非静态方法最明显的区别就是如果某个方法是公共静态的,那么可以直接通过类名.方法名的方法来调用,而公共实例方法则需要事先实例化对象,然后才能调用。

 

转载于:https://www.cnblogs.com/huaxi-baobao/p/6924595.html

你可能感兴趣的文章
axure的html按钮设置背景,axure制作网页如何适应不同计算机的分辨率?制作网页时如何设置背景?...
查看>>
html form callback,Promise.fromCallback
查看>>
计算机软件科学专利,计算机软件专利有哪些
查看>>
html画布显示PPT,【前端】有没有办法让HTML5 canvas显示/预览word/excel/powerpoint 文档?...
查看>>
ad10搜索快捷键_AD10设计所需快捷键(席雪晴)
查看>>
抖音创作规范_抖音内容规范,运营抖音的十五条经验
查看>>
怎么样向云服务器上传文件_如何阿里云服务器上传文件
查看>>
python学习手册四版中文_Python学习手册(第4版) 中文版.pdf 全文免费
查看>>
rabbitmq 持续获取_rabbitMq创建和获取消息
查看>>
echarts x轴 splitline_数据可视化工具之echarts
查看>>
delphi制作上下开幕效果_2019中国国际消费电子博览会在青岛开幕 引领消费电子行业进入物联时代...
查看>>
delphi 皮肤 改变字体颜色_王者荣耀S22赛季版本更新爆料③;贵族8可以领一个新传说皮肤...
查看>>
vasp计算压电系数_低压电器元件的选型【精华】
查看>>
axure内联框架和动态面板_Axure 教程:如何通过滚动鼠标查看长篇幅内容的效果?...
查看>>
河北省电子工程高级职称公示_电子信息工程高级职称合并仅剩五类 热门专业如何选...
查看>>
jq遍历子元素_LeetCode基础算法题第140篇:最长的连续增加子序列
查看>>
三实系统地址是什么意思_切换IP地址是什么意思
查看>>
英语 语义分割_答题技巧 | 英语阅读要注意的“九大符号秘密”
查看>>
static在内存层面的作用_php中static关键字的理解
查看>>
大学物理实验长度的测量实验报告_辅导 |大学物理实验报告
查看>>