锁定老帖子 主题: 什么时候使用 static 最恰当
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-27
static的优点:节省内存(class 中static 方法 变量 在类被虚拟机加载的时候就被分配了内存,以后所有调用,就从这里调,不同虚拟机除外)。(大家补充) static的缺点:不过他们修饰的方法、变量被没被使用,只要类加载就开辟了他们自己一片小天地。(大家修正补充); 综上所述:如果不是经常使用的方法或变量,那么就不应该用static。(大家补充)。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-06-27
没有必要 内存方面 从硬件上克服一下就可以了
带来的问题在实际中是很难发现的 代价太大 能不用就不用 |
|
返回顶楼 | |
发表时间:2007-06-27
ddandyy 写道 没有必要 内存方面 从硬件上克服一下就可以了
您所说的问题,通常指什么方面的?
带来的问题在实际中是很难发现的 代价太大 能不用就不用 |
|
返回顶楼 | |
发表时间:2007-06-27
多线程
|
|
返回顶楼 | |
发表时间:2007-06-27
ddandyy 写道 多线程 如果多线程会让static出现问题,那么web应用程序里不能用static,这显然是不对的嘛!
虽然是多线程,但是用的是同一个虚拟机,当多线程访问该类的时候,也是要到虚拟机中检测该类是否已经存在,如果存在,不加载;否则,加载;这不会对static有任何问题。 web本身就是多线程,在我们的项目中用过我没看到出现了任何问题,如果多线程出问题,那么有没有什么测试程序。 |
|
返回顶楼 | |
发表时间:2007-06-27
static的本意就是类共享的成员,和你说的这些都没有啥关系。
对于一般类,类实例的所有成员需要共享的变量就用;另外就是工具方法都是static的。 |
|
返回顶楼 | |
发表时间:2007-06-27
明白什么叫会用就行了!
|
|
返回顶楼 | |
发表时间:2007-06-28
public class ByGoodsOrderStatusAction extends BaseAction { private static Map map = new HashMap(); public ActionForward first(ActionMapping mapping, ActionForm form, SessionWrapper session, HttpServletRequest request, Map requestMap, HttpServletResponse response) throws Exception { map.put("111",requestMap.get("111")); map.get("111"); } 这个东西就会有问题 当然也不完全是和static有关 而是和全局变量有关 而且这个也和框架有关 比如我们用的是struts 1 就会有问题 ww是否有问题没有试过 |
|
返回顶楼 | |
发表时间:2007-06-28
小子我愚钝,没看出什么问题,请ddandyy 做进一步解释,我用过webwork好像没有问题(idc跑着呢,至今未发现)。
|
|
返回顶楼 | |
发表时间:2007-06-28
hamburg 写道 小子我愚钝,没看出什么问题,请ddandyy 做进一步解释,我用过webwork好像没有问题(idc跑着呢,至今未发现)。
webwork的action是线程安全的。 另外,多线程只对共享数据产生影响。 |
|
返回顶楼 | |