黑马程序员技术交流社区

标题: 关于main方法的问题 [打印本页]

作者: 黄或俊    时间: 2012-4-23 17:27
标题: 关于main方法的问题
static修饰的成员都放在内存的方法区中,为什么main()方法会放在栈内存中呢!~
求原理求真相!
作者: 王勃    时间: 2012-4-23 17:56
本帖最后由 王明(1988) 于 2012-4-24 15:25 编辑

额,static修饰的成员变量,由于是静态变量要放在data segment中(内存的数据段中),老师说的方法区不专业(查一下组成原理就知道内存到底分哪些区,额jvm中也可以叫方法区,刚知道来改下我的错误),而main方法是一个方法,
jvm调用main方法之前,是将main中的代码暂存在内存的code segment中(内存的代码段,如果你做过反汇编破解就有共鸣了),在执行main中的语句时,将一些局部变量放入栈中,
当然每一个方法对应有一个方法栈,里面存储局部变量。main结束局部变量也从栈里释放了。
看我黑马日记第三蛋:http://bostonivy4me.blog.163.com/blog/static/19156133120123234105442/
作者: 王勃    时间: 2012-4-23 17:58
不是main这个方法放在栈内存,main中的代码放在代码段,而执行时变量放在栈里面。。。。分清了就ok
作者: 孙魁星    时间: 2012-4-23 21:09
main方法放在代码段中。执行时变量放在栈里面
作者: 周毅中    时间: 2012-4-24 07:41
很赞同2楼的观点,分析的不错哦
作者: suiabing    时间: 2012-4-25 00:45
  Main函数详解
public static void main(String[] args)
主函数特殊之处:
1,格式是固定的。
2,被jvm所识别和调用。
public:因为权限必须是最大的。
static:不需要对象的,直接用主函数所属类名调用即可。
void:主函数没有具体的返回值。
main:函数名,不是关键字,只是一个jvm识别的固定的名字。
String[] args:这是主函数的参数列表,是一个数组类型的参数,而且元素都是字符串类型。

我的面向对象总结里面有,论坛里找找吧





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