有几个问题想问问大家1、凡是声明在方法、构造方法、代码块外的变量或者常量都叫做字段,对吗?2、静态字段和实例字段有什么区别?3、实例变量也叫成员变量,静态变量也叫类变量,对吗?4、实例变量在jvm运行时会被放在主存中,然后工作线程拷贝一份副本过去,对吗?5、因为4,所以就会产生线程是否安全的问题,对吗?6、是不是所有类的实例变量都会被放在主存中呢,如果对实例变量声明private,那么能防止别的线程使用这个实例变量吗?还会产生线程安全吗?7、单实例多线程并发访问,就像servlet的访问一样,多线程是不是都要等待这个实例被其他线程使用完才能使用呢?如果时间不足,可以随意提示一点tip给我,哪怕只是只言片语,先谢谢大家的不吝赐教!
2 回答
冉冉说
TA贡献1877条经验 获得超1个赞
字段是什么?从学JAVA开始就没听说过叫字段的说法。。。。。
你要么叫变量,要么叫属性,我暂且理解你说的字段就是变量,静态变量和实例变量,
语法区别:静态变量需要static关键字修饰,实例变量不需要。
程序运行时的区别:静态变量从属于类,实例变量从属于对象。
实例变量必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量;
静态变量即类别量,只要程序加载了类的字节码,静态变量就会被分配空间,即可使用。
综上,实例变量必须创建对象后通过这个对象来使用,静态变量可以直接使用类名来引用
你先搞清楚实例变量的声明周期自然就知道了jvm的原理跟线程问题
多线程不需要等待实例用完,多线程跟实例用不用完没什么关系
new几个对象就会在内存中分配几个空间,堆和栈的关系你去搞清楚
添加回答
举报
0/150
提交
取消