A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wuyuwen 中级黑马   /  2014-12-19 11:02  /  1922 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wuyuwen 于 2014-12-19 20:46 编辑

静态和非静态的区别,它们在内存中到底是如何执行的呢?

7 个回复

倒序浏览
静态修饰的变量和方法,在内存中是存放在常量池中的,这里说下内存分配
1.寄存器(你不需要关注他,因为你不能控制)
2.堆栈 (变量如果不在使用就会销毁,生命周期短)
    变量都放在这个地方
3.堆(java的垃圾回收机制来清理,不需要你操心)
    用来存java对象的
4.常量存储
    比如静态修饰的都放这里,因为它在程序开始就一直存在直到程序结束,这是因为静态修饰的变量值是不能在改变的
回复 使用道具 举报
1.静态和非静态之间区别是比较大的。
使用时:
2.static修饰的成员变量和成员方法,在调用的时候可以用  类名.静态成员变量     类名.静态成员方法   调用。但是需要注意的是,也可以使用类的对象来调用静态成员变量和方法。
3.非static的成员变量和方法,需要创建类的对象,然后用对象来调用。  
加载时:   
4.static修饰的成员变量和成员方法,在类加载的时候就加载了,而非static的成员和方法是在创建对象的时候加载的。也可以这么说  ,static的成员变量和方法与类同生共死,非static的成员和方法与对象同生共死

差不多就这些,嘿嘿

评分

参与人数 2技术分 +2 收起 理由
lwj123 + 1
杨佳名 + 1

查看全部评分

回复 使用道具 举报
jxlovqqvo 发表于 2014-12-19 15:09
静态修饰的变量和方法,在内存中是存放在常量池中的,这里说下内存分配
1.寄存器(你不需要关注他,因为你 ...

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

恩恩 谢谢
回复 使用道具 举报
存储的地点都不同
静态在方法区的静态区中
回复 使用道具 举报
I空空 中级黑马 2014-12-19 22:28:43
7#
楼下的回答的很好,学习了
回复 使用道具 举报
静态在内存中是独一无二的;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马