java - viewpager里几个相同的fragment,他们的静态变量会共享吗?
迷茫
迷茫 2017-04-18 09:07:07
[Java讨论组]
mFragments.add(DrawFragment.newInstance(1));
mFragments.add(DrawFragment.newInstance(2));
mFragments.add(DrawFragment.newInstance(3));

DrawFragment中有个静态变量,如果在其中一个fragment中修改了它,其他fragment中的会变化吗?为什么?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(3)
阿神

会发生变化。原因如下:

直白的回答:
静态变量跟类绑定,而你的Fragment实例是同一个类的实例,因此修改类的静态变量,所以类的其他实例都会发生变化。

复杂的回答:
JAVA将内存划分为:方法区、虚拟机栈,native方法栈,堆,程序计数器这五个部分。而静态变量属于类变量,分配在方法区上,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象均对修改可见,是线程非安全的。

阿神

会改变,静态成员变量是属于类的而不是属于对象的,所以实际上在不同对象上操作的静态成员变量是同一个

黄舟

会的, 静态变量属于类, 在访问权限许可时可被所有实例共享

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号