采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
反射这一节讲到编译时和运行时,编译时是将java代码编译成.class文件的过程,不涉及内存方面的任何事情。将静态存储区是,说程序编译时内存就分配好了。这两个“编译”,我有点糊涂,是同一个概念吗?
问题的描述没有突出重点,我困惑的是:静态存储区,说程序编译时内存就分配好了,但是“编译时”不是不设计内存方面的事儿吗?这两种说法是不是有矛盾?
这两个不是同一个概念: 第一个"编译时": 是说把java代码编译成.class文件,只涉及对java的语法是否正确之类的检查; 第二个"编译时": 是说, 在你写的代码还未被执行之前, JVM会把你的代码加载到 静态存储区 ,然后才去执行你的代码,才会有后面的对应的栈 , 堆.
补充: JVM会把你的静态代码(static修饰的方法 / 变量)加载到 静态存储区
多谢了,听你这样解释能理解了
编译时: 将java源代码编译成.class文件
运行时: 内存已被分配成 静态存储区, 栈, 堆
非常正确!
登录后可查看更多问答,登录/注册
值得信赖的Android面试课程,赢取称心offer的不二之选
924 8
745 7
1.1k 6
875 5
654 5