为了账号安全,请及时绑定邮箱和手机立即绑定

java中,静态字段和实例字段有什么区别?

java中,静态字段和实例字段有什么区别?

千巷猫影 2018-07-18 11:14:37
有几个问题想问问大家1、凡是声明在方法、构造方法、代码块外的变量或者常量都叫做字段,对吗?2、静态字段和实例字段有什么区别?3、实例变量也叫成员变量,静态变量也叫类变量,对吗?4、实例变量在jvm运行时会被放在主存中,然后工作线程拷贝一份副本过去,对吗?5、因为4,所以就会产生线程是否安全的问题,对吗?6、是不是所有类的实例变量都会被放在主存中呢,如果对实例变量声明private,那么能防止别的线程使用这个实例变量吗?还会产生线程安全吗?7、单实例多线程并发访问,就像servlet的访问一样,多线程是不是都要等待这个实例被其他线程使用完才能使用呢?如果时间不足,可以随意提示一点tip给我,哪怕只是只言片语,先谢谢大家的不吝赐教!
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

实例字段要实例化才能使用,没有实例化不能使用。静态字段反之
普通字段要在实例化时候才分配内存空间,而静态字段在装载程序集的时候就分配内存空间了

查看完整回答
反对 回复 2018-08-10
?
冉冉说

TA贡献1877条经验 获得超1个赞

字段是什么?从学JAVA开始就没听说过叫字段的说法。。。。。
你要么叫变量,要么叫属性,我暂且理解你说的字段就是变量,静态变量和实例变量,

语法区别:静态变量需要static关键字修饰,实例变量不需要。

程序运行时的区别:静态变量从属于类,实例变量从属于对象。

  实例变量必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量;

  静态变量即类别量,只要程序加载了类的字节码,静态变量就会被分配空间,即可使用。

综上,实例变量必须创建对象后通过这个对象来使用,静态变量可以直接使用类名来引用

你先搞清楚实例变量的声明周期自然就知道了jvm的原理跟线程问题

多线程不需要等待实例用完,多线程跟实例用不用完没什么关系

new几个对象就会在内存中分配几个空间,堆和栈的关系你去搞清楚


查看完整回答
反对 回复 2018-08-10
  • 2 回答
  • 0 关注
  • 2482 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信