黑马程序员技术交流社区

标题: 静态与非静态 [打印本页]

作者: wuyuwen    时间: 2014-12-19 11:02
标题: 静态与非静态
本帖最后由 wuyuwen 于 2014-12-19 20:46 编辑

静态和非静态的区别,它们在内存中到底是如何执行的呢?
作者: jxlovqqvo    时间: 2014-12-19 15:09
静态修饰的变量和方法,在内存中是存放在常量池中的,这里说下内存分配
1.寄存器(你不需要关注他,因为你不能控制)
2.堆栈 (变量如果不在使用就会销毁,生命周期短)
    变量都放在这个地方
3.堆(java的垃圾回收机制来清理,不需要你操心)
    用来存java对象的
4.常量存储
    比如静态修饰的都放这里,因为它在程序开始就一直存在直到程序结束,这是因为静态修饰的变量值是不能在改变的

作者: duluhua    时间: 2014-12-19 17:44
1.静态和非静态之间区别是比较大的。
使用时:
2.static修饰的成员变量和成员方法,在调用的时候可以用  类名.静态成员变量     类名.静态成员方法   调用。但是需要注意的是,也可以使用类的对象来调用静态成员变量和方法。
3.非static的成员变量和方法,需要创建类的对象,然后用对象来调用。  
加载时:   
4.static修饰的成员变量和成员方法,在类加载的时候就加载了,而非static的成员和方法是在创建对象的时候加载的。也可以这么说  ,static的成员变量和方法与类同生共死,非static的成员和方法与对象同生共死

差不多就这些,嘿嘿
作者: wuyuwen    时间: 2014-12-19 20:41
jxlovqqvo 发表于 2014-12-19 15:09
静态修饰的变量和方法,在内存中是存放在常量池中的,这里说下内存分配
1.寄存器(你不需要关注他,因为你 ...

就是堆栈如何运行不清楚,不过现在大概知道啦
作者: wuyuwen    时间: 2014-12-19 20:42
本帖最后由 wuyuwen 于 2014-12-19 20:45 编辑
duluhua 发表于 2014-12-19 17:44
1.静态和非静态之间区别是比较大的。
使用时:
2.static修饰的成员变量和成员方法,在调用的时候可以用  类 ...

恩恩 谢谢
作者: kenhe    时间: 2014-12-19 22:25
存储的地点都不同
静态在方法区的静态区中
作者: I空空    时间: 2014-12-19 22:28
楼下的回答的很好,学习了
作者: qowoeo7538    时间: 2014-12-23 00:07
静态在内存中是独一无二的;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2