java内存分配,数组内存图
1.Java内存分配
Java运行将内存区域划分成以下几个区域
- 栈
- 堆
- 方法区
- 本地方法栈
- 寄存器
2. 两个变量指向同一个数组
public class Test{
public static void main(String[] args){
int[] arr1 = new int[]{11, 22, 33};
int[] arr2 = arr1; //将arr1的地址赋值给arr2
System.out.println(arr1); //输出arr1的地址
System.out.println(arr2); //输出arr2的地址
arr2[1] = 99;
System.out.println(arr1[1]); //99
System.out.println(arr2[1]); //99;由于arr1与arr2指向同一片地址,故输出的值相同,
}
}
3.数组使用的常见问题
- 问题一:如果访问的元素位置超过最大索引,执行时会出现ArrayIndexOutOfBoundsException(数组索引越界异常)
- 问题二:如果数组变量中没有存储数组的地址,而是null,在访问数组信息时会出现NullPointerException(空指针异常)