浅谈静态方法(static关键字)?

1、静态方法的好处:不用生成类的实例(new一个对象)出来就能直接调用。即,只要通过类名就可以访问,多用于工具类Utils。

2、static关键字:表示静态的,在类加载时虚拟机就会把它放到方法区。大多使用都与final配合,表示一个常量。

被本类以及本类所以实例共用的,另外,一个方法是所有实例公共的,那么声明为static。

3、从面向对象的角度看,static失去了继承,多态.

4、工具类的来由与静态方法:由于代码重用度很高,所以会使用方法来进行封装,便于调取使用。

不需要耗费资源反复创建对象,能够节省空间,否则每个实例初始化时方法都要分配到内存,减少了不同实例调用时,对内存的开销,以及构造对象时的消耗。(这里说的开销及消耗是指实例化不同对象的所占用的不同内存,因为静态方法的好处第1项,不用new对象直接类名访问,不要和下面的方法混淆)

5、不建议使用太多,内存用的太多影响其它业务。因为在程序第一次加载的时候就已经在内存中了,直到程序结束该内存才会释放,不像非static修饰的成员在使用完之后该内存就会被回收。(公用的方法,属性,类常常用到除外)

6、方法占不占用更多内存,和它是不是static没什么关系?

无论是静态方法还是非静态方法,在内存中都只分配一份内存,也就是所占内存空间大小是一样的.但是,

因为

字段是用来存储每个实例对象的信息,所以字段会占有内存,并且因为每个实例对象的状态都不一致(即同一个类的不同对象),所以每个实例对象的所有字段都会在内存中拷贝一分,也因为这样才能区分操作的是哪个对象。  

方法不一样,不论有多少个实例对象,它的方法的代码都是一样的,所以只要有一份代码就够了。因此无论是static还是non-static的方法,都只存在一份代码,也就是只占用一份内存空间。  

7、我们为什么要把方法区分为:静态方法和实例化方法 ?
拿别人一个例子说事:
比如说“人”这个类,每个人都有姓名、年龄、性别、身高等,这些属性就应该是非静态的,因为每个人都的这些属性都不相同;但人在生物学上属于哪个门哪个纲哪个目等,这个属性是属于整个人类,所以就应该是静态的——它不依赖与某个特定的人,不会有某个人是“脊椎动物门哺乳动物纲灵长目”而某个人却是“偶蹄目”的。

8、若感觉对你有所帮助点个赞

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值