上集 (Java小细节(一))
函数
1,运行类时,在内存中划分一块栈内存(类似于弹夹,先进为栈底)
2,加载主函数,在栈内存中划分一块main内存
3,当主函数加载到其他函数时,再在栈内存中划分一块内存,用于加载其他函数,压栈(先进后出)
4,当其他函数加载完之后,释放空间。弹栈(后进先出)
- 重载(overload):在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同。
数组
- 虚拟机(JVM)内存划分:
1, 寄存器(给CPU)
2, 本地方法区(跟系统相关)
3, 方法区
4, 栈内存:
存储局部变量和方法体。变量属的作用域一旦结束,变量就会在内存中自动释放
5, 堆内存:
存储数组和对象(数组其实就是对象)凡是new的都在堆里。不会随时释放。
特点:
1,每一个实体都有首地址值。(首地址就是该变量所占的存储区域中的第一个单元的地址)
2,堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同。整数是0,小数0.0或者0.0f,boolean是false,char‘\u0000’
3,垃圾回收机制 - 常见问题
‘[’:代表数组类型;‘I’:int类型。 - 进制转换(二进制转十六进制)
- 二维数组内存图解
- 二维数组定义
int[][] arr=new int[3][];
arr[1]=new int[2];//为二维数组的小数组初始化
arr[0]=new int[4];//各小数组长度可不同
int[][] arr2={{3,1,7},{0,5,4,8},{6,4}};