黑马程序员技术交流社区

标题: 关于static关键字的使用问题 [打印本页]

作者: 熊玖帅    时间: 2012-3-5 22:55
标题: 关于static关键字的使用问题
static关键字一方面对内存的消耗比较大,一方面又提供了方便,什么时候该用什么时候不该用呢?如果存在很多被多个对象共享的属性呢,首先考虑节省内存还是追求代码方便?
作者: 骆龙    时间: 2012-3-5 23:29
静态的弊端在于:1,声明的变量(方法)生命周期过长 2,访问出现局限性(静态只能访问静态)
鉴于这2个弊端 使用静态时主要看 这个变量(方法)是不是有很大的共享性(在专门的方法区存放 节省了空间 不需要每次都new对象存储)  在对一些对象描述进行共性抽取过程中 可以定义静态部分 便于我们调用使用方便也提高代码的复用性
作者: 王杰    时间: 2012-3-6 00:05
正如上面那个兄弟说的:静态的弊端在于:1,声明的变量(方法)生命周期过长 2,访问出现局限性(静态只能访问静态)
所以,通常情况下,你可以将共享的数据都定义成静态的,那样有利于代码的复用性,向你说的那种共享数据过多,那么多少叫做多呢一兆还是十兆?我想你大可不必钻牛角尖,你想想让你用静态定义十兆的数据那有多庞大呀,所以我认为你说的是特殊的不能再特殊的情况,你可以不予考虑,就算真的遇上了,你就得从共享数据和计算机性能上去考虑了。
作者: 黑马肖凯骏    时间: 2012-3-6 00:08
需要一个数据对象为整个类而非某个对象服务,同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见时用static

作者: 袁野    时间: 2012-3-6 07:22
楼上说的很对
某个属性是每个对象共享的数据(值)可以使用静态修饰变量,而不必每个对象中存在,在使用这个变量时 ,通过类名.的方式调用
关于静态方法! 方法中没有对象变量的时候 且这个方法想提高复用性并且很多对象使用就可以 使用静态去修饰这个方法。

慢慢的去理解
作者: 王利强    时间: 2012-3-6 08:13
所有对象公共的变量考虑用,如全局变量;不需要创建对象的时候考虑用,如某些常量。static 除非必要的时候 不建议使用, 因为static是程序刚启动的时候 就加加载static进内存。这样就算你的代码没使用这个static对象,这个static对象也已经在内存里了。
作者: 肖发腾    时间: 2012-3-6 08:22
苳眠 发表于 2012-3-6 00:05
正如上面那个兄弟说的:静态的弊端在于:1,声明的变量(方法)生命周期过长 2,访问出现局限性(静态只能 ...

说的很对,我们开发中必然要面对很多选择,每个选择都有其本身的优缺点,此时我们最求的是平衡,平衡的方法才好,如果,开发一个系统的大小是十来G,系统占用内存也要1G,而由static产生的内存是10来兆,那么显然,这些内存微不足道,而由这些内存的消耗带来的是更高的效率,更好的系统稳定性,更方便的开发,在我们的概念中没有什么可取不可取,应该在开发过程中考虑整体,全局驾驭




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2