【讨论帖】用局部变量好一点还是全局变量好一点【讨论帖】用局部变量好一点还是全局变量好一点【讨论帖】

xiaozuidazhi 2004-11-02 11:30:09
使用java也有两年了,以前是用局部变量多一点,后来自己体会到,还是全局变量更能体现面向对象的思想:类的内部应该体现强耦合性,类和类之间应该体现弱耦合性;再说了,每个类要是只是方法堆砌出来的,也没有意思了。

但是近来,和一个高手做项目,他却要求除过把几个不太变化的对象声明为全局变量外,其它的变量都是用局部变量,我们这个项目比较庞大一点,他的理由是:
1.全局变量始终占用内存,多了一笔开销
2.我们写的类到时候要被多线程调用的,所以局部变量更好一点

我觉得,使用全局变量和使用局部变量相比,内存好像是多占用了一点,但是不会造成内存不足,
而且,变量是全局的还是局部的,和多线程调用并无关系,到时只要在总方法上加上synchronized就
好,而且,即使变量是局部的,要是多线程调用时,也得加上同步不是?
...全文
1105 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
wandou999 2004-11-04
  • 打赏
  • 举报
回复
我觉得不能一概而论,他们各有个的好处.
willpower88 2004-11-03
  • 打赏
  • 举报
回复
用局部还是全局,要根据具体情况而定吧?
当然不提倡大量使用全局变量,那样会牵一发而动全身的.
bluehale 2004-11-03
  • 打赏
  • 举报
回复
如果一些很多类,方法中都用到的变量,我感觉可以统一放在一个类中,算是一种变形的抽象吧。
xiaohaiz 2004-11-03
  • 打赏
  • 举报
回复
半生零落酬知己,一朝啼血为红颜 .... 好名字啊,此帖亮点之一啊~
  • 打赏
  • 举报
回复

号外:我怎么一看到 ConfigLoader就感觉这么熟呢 ^_^
fly2sky2000 2004-11-03
  • 打赏
  • 举报
回复
我认为同意那个高手的意见.全局变量是不应该使用的.
在java中也不存在全局变量的概念.
如果是全局的就用单例.
全局变量会导致使用的扩散,无法控制对该变量的调用.
而且对于现在的趋势,硬件的成本远远低于软件的成本.
蒋晟 2004-11-03
  • 打赏
  • 举报
回复
所谓临时变量,就是为了方便起见申明的变量,存放一些中间结果。有点像中学几何里
面的辅助线。
如果基于性能的考虑,避免每次调用的时候为临时变量分配空间,就可以将它声明为成
员变量,例如临时压缩缓冲区。
如果基于性能的考虑,避免每次访问的时候访问成员变量(尤其在循环的时候),就可
以将它声明为临时变量。
如果要在避免在函数之间传递大量参数,也可以用成员变量来节约参数个数和占用的空


变量可以在任何类中申明,但是逻辑关系要清楚。
  • 打赏
  • 举报
回复

该用全局的就用全局的。
单件的模式应该相当于全局变量的模拟,如果它就是全局唯一的而且是经常被引用的,你能让他局部化吗?这样作的话只会影响效率和导致差的设计,当然同时要也要考虑这个单件的大小对内存的影响。我想类内的情形也差不多! 局部变量需要一个快的cpu,全局变量需要一个大的内存,呵呵,各位以为呢。
cdcx 2004-11-03
  • 打赏
  • 举报
回复
你说的"全局变量",通常认为是"实例变量".
jvm中对函数调用中实例变量和局部变量的操作处理不同.
"实例变量"类中所有成员的函数都使用同一个引用.所以函数并行调用会互相影响.
而"局部变量",当函数被调用时,jvm会为函数开辟一个独立的statck frame,并在这里存放局部变量的分配空间,调用完成后statck frame就释放,由于相同函数使用独立的stack frame,所以并行调用不会互相影响.
所以说"实例变量"使用是线程不安全,而局部变量的使用是线程安全.

如果你的应用程序需要线程安全的操作,建议不要使用实例变量.当然你可以用synchorize,但这需要付出代价.
ahandsomedog 2004-11-03
  • 打赏
  • 举报
回复
同意使用局部变量~
fengyun1314 2004-11-03
  • 打赏
  • 举报
回复
要看情况的
study2002 2004-11-03
  • 打赏
  • 举报
回复
强烈建议制定“面向对象编程中变量使用ISO9000标准”,以示后人!
现成立“面向对象编程中变量使用ISO9000标准”委员会,开始接受报名!
treeroot 2004-11-02
  • 打赏
  • 举报
回复
尽量使用局部变量!
cold_blooded 2004-11-02
  • 打赏
  • 举报
回复
同意楼上的
Tasia 2004-11-02
  • 打赏
  • 举报
回复
很久之前就开始遵循一个原则:变量的最小作用域原则。
即是尽量不要扩大一个变量的可见范围。
大道如海 2004-11-02
  • 打赏
  • 举报
回复
局部变量!
westwin 2004-11-02
  • 打赏
  • 举报
回复
局部变量
haode 2004-11-02
  • 打赏
  • 举报
回复
Java程序中 ,不能在所有类之外定义全局变量。所以说Java中没有全局变量~

不过可以通过在一个类中定义公用、静态的变量来实现一个全局变量。

我个人认为应该少用全局变量。但是象楼主遇到的那个高手说得那么绝对也是不对的。
廖雪峰 2004-11-02
  • 打赏
  • 举报
回复
有没有搞错?这个问题还要讨论????????

java中根本就没有全局变量!!!!!!!!!!!!!!!!

如果说变量定义在方法中还是类成员,能定义在方法中当然定义在方法中了!!!!!!
xiaozuidazhi 2004-11-02
  • 打赏
  • 举报
回复
有那么点相似之处~
加载更多回复(26)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧