Java中的数组和内存分配

理解数组

  • 概念:数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
    数组既可以存储基本数据类型,也可以存储引用数据类型,只要所有的数组元素具有相同的数据类型即可
  • 定义数组的方法
    ①:type[] arrayName;(推荐使用这种方式)
    ②:type arrayName[];
    注意:定义数组时不能指定数组的长度
  • 数组的初始化
    Java中的数组必须先初始化,才能使用,初始化就是给数组中的元素分配内存空间和赋值
    ①:静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
    语法格式:
    arrayName = new type[]{element1, element2, element3, ...};
    或者简写成:type[] arrayName = new type{element1, element2, element3, ...};(在定义时直接完成初始化)
    例如:int[] intArr = new int[]{1, 2, 3, 4};
    或者: int[] intArr = {1,2,3,4};
    ②:动态初始化:只指定数组的长度,由系统为每个数组元素分配默认值
    格式:type[] arrayName = new type[length];
    举例:int[] intArr = new int[3];
    说明:定义了一个int类型的数组,这个数组可以存放3个int类型的值

二维数组

定义二维数组的三种格式:

  1. type arrayName[][] = new type[m][n];
  2. type[][] arrayName = new type[m][n];//推荐
  3. type[] arrayName[] = new type[m][n];

举例:
定义一个二维数组,int[][] arr = new int[3][2],二维数组中有3个一维数组,分别为arr[0],arr[1],arr[2],这三个一维数组又分别包含两个元素,比如数组arr[0]中有两个元素,分别为arr[0][0]arr[0][1]
说明:二维数组就是数组中的数组


Java中的内存分配问题

我们知道,变量的初始化需要在内存中分配内存,所以,为了提高内存的运行效率,对内存空间 进行了不同区域的划分,每一份区域都有特定的处理数据和内存管理的方式;
Java中的内存结构:栈、堆、方法区、本地方法区、寄存器

  1. 栈内存:暂时存储,用于存储局部变量,当数据使用完,所占空间会自动释放。
  2. 堆内存:存储数组和对象,通过 new 建立的实例都存放在堆内存中,任何的”引用数据类型”的”值”都存在堆里。
  3. 方法区:静态存储区、构造函数、常量池、线程池,方法字节码
  4. 本地方法区:被系统占用,window 系统占用 ,被定义为 native 的方法
  5. 寄存器:存储正要准备交给 CPU 处理的字节码

这里写图片描述

猜你喜欢

转载自blog.csdn.net/tuckEnough/article/details/79993270