Java基础知识:最开始标识符、命名规范、常亮分类、基本数据类型、数据类型转换、运算符、表达式、判断(if)、选择(switch)、循环(for、while、do-while)等最基础知识难度都不大。 在涉及方法后,就会接触到方法的参数、变量、常量在内存中的划分问题。 Java内存划分为5部分:分别是栈(stack)、堆(heap)、方法区(method area)、本地方法栈(native method stack)、寄存器(pc register)。 Class文件被jvm执行时,文件加载到方法区。 方法的参数分为基本数据类型参数和应用数据类型参数。 对于基本数据类型:方法被加载到栈中后,开始执行代码,当方法结束后,方法出栈,方法内的变量被移除内存。 对于基本数据类型:方法被夹在到栈中后,当遇到引用数据类型数据(new对象)后,会在堆中开辟一片空间来装引用数据类型,并且会把其地址值返回给堆中,堆中返回给引用数据类型的对象名。堆中的数据不会随着栈中方法的出栈而短时间内消失。 成员变量在堆中初始化,而成员方法在方法区被加载,加载后直接有一个地址,当要调用这个成员方法的时候是通过地址找到他从而进栈来执行。 其中,当有静态变量时候,静态变量是在方法区中开辟静态区直接被创建的,不会经过堆,调用时直接在类中(方法区)中进栈的。 简单阐述下数据在内存中的情况,如有错误望体谅,指正。
|