程序编译后会把可运行的字节码文件放到方法区,一运行main方法就会进栈,就在栈区开辟一块空间存储main方法,局部变量也是在main方法中进行声明的。通过动态创建的数组是有默认值的。
创建对象的时候,对象的属性会存到堆中。因为属性会有差异,而方法都是一样的,如果也存到堆中就会浪费空间,所以方法会存到方法区中。在堆中只需存储方法的地址即可。当对象调用方法时就会加载方法区里面的方法进栈执行方法,方法执行完之后就会进行弹栈。main方法也弹栈后,堆区和方法区也会进行回收。
引用数据类型作为参数传递时,传递的是它的地址,而基本数据类型传递的是它的值。引用数据类型作为返回值返回时返回的也是地址值。