A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 熊玖帅 中级黑马   /  2012-3-5 22:55  /  2328 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态的弊端在于:1,声明的变量(方法)生命周期过长 2,访问出现局限性(静态只能访问静态)
鉴于这2个弊端 使用静态时主要看 这个变量(方法)是不是有很大的共享性(在专门的方法区存放 节省了空间 不需要每次都new对象存储)  在对一些对象描述进行共性抽取过程中 可以定义静态部分 便于我们调用使用方便也提高代码的复用性

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
static关键字一方面对内存的消耗比较大,一方面又提供了方便,什么时候该用什么时候不该用呢?如果存在很多被多个对象共享的属性呢,首先考虑节省内存还是追求代码方便?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

6 个回复

倒序浏览
正如上面那个兄弟说的:静态的弊端在于:1,声明的变量(方法)生命周期过长 2,访问出现局限性(静态只能访问静态)
所以,通常情况下,你可以将共享的数据都定义成静态的,那样有利于代码的复用性,向你说的那种共享数据过多,那么多少叫做多呢一兆还是十兆?我想你大可不必钻牛角尖,你想想让你用静态定义十兆的数据那有多庞大呀,所以我认为你说的是特殊的不能再特殊的情况,你可以不予考虑,就算真的遇上了,你就得从共享数据和计算机性能上去考虑了。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
需要一个数据对象为整个类而非某个对象服务,同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见时用static

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
楼上说的很对
某个属性是每个对象共享的数据(值)可以使用静态修饰变量,而不必每个对象中存在,在使用这个变量时 ,通过类名.的方式调用
关于静态方法! 方法中没有对象变量的时候 且这个方法想提高复用性并且很多对象使用就可以 使用静态去修饰这个方法。

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

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