数组的内存图

  1. Java内存分配:
    1.         方法区:字节码文件(.class)加载时所进入的内存。

                           栈:(由JVM虚拟机,自动调用main方法运行的时候,进入栈内存)方法运行的时候,要进入的内存。

                           堆:new出来的东西,都会进入堆内存。

                                   -开辟空间

                                   -产生地址值

一维数组内存图: 

       

二维数组:一种容器,该容器用于存储一维数组。

       使用情况:若要操作的多组数据,属于同一组数据就可以考虑使用二维数组行维护。

        二维数组静态初始化格式:

                格式:数据类型[ ] [ ] 数组名= new 数据类型  [ ] [ ]{{元素1,元素2},{元素1,元素2}};

                简化格式:数据类型[ ] [ ] 数据名={{元素1,元素2},{元素1,元素2}};

                范例:int[ ][ ] arr=new int[ ] [ ] {{11,22},{33,44}};

                           int[ ][ ] arr= {{11,22},{33,44}};

public static void main(String[] args){
        int[][] arr={{11,22,33},{44,55,66}};
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);

//二维数组储存一维数组的时候,具体储存的也是地址值;
//二维数组的元素访问:数组名[m索引][n索引]
//m索引:你要访问哪一个一维数组
//n索引:你要访问一维数组中的哪一个元素

        System.out.println(arr[1][1]);
}


//二维数组的遍历操作
//1、遍历二维数组,获取到每一个一维数组
//2、继续遍历一维数组,获取具体的元素
public static void main(String[] args){
      
    int[][] arr={{11,22,33},{44,55,66}};
//遍历二维数组,获取到每一个一维数组
    for(int i=0;i<arr.length;i++){
        //遍历一维数组,获取具体的元素
        for(int j=0;j<arr[i].length;j++){

            System.out.println(arr[i][j]);

        }
     }
}

        二维数组动态初始化:

                格式:数据类型[ ][ ] 数据名=new 数据类型 [m][n];

                m:这个二维数组可以存放多少个一维数组

                n:每一个一维数组中可以存放多少元素

        可以将提前创建好的一维数组存入二维数组中。

 二维数组内存图:

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的 栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动 释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。 堆内存用来存放由 new 创建的对象和数组,在堆中分配的内存,由 Java 虚拟机的自动垃圾回收器来管理。在堆中产生了一个数 组或者对象之后,还可以在栈中定义一个特殊的变量,让栈中的这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个 变量就成了数组或对象的引用变量,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或者对象,引用变量就相当于是为 数组或者对象起的一个名称。引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组 和对象本身在堆中分配,即使程序运行到使用 new 产生数组或者对象的语句所在的代码块之外,数组和对象本身占据的内存不会 被释放,数组和对象在没有引用变量指向它的时候,才变为垃圾,不能在被使用,但仍然占据内存空间不放,在随后的一个不确定 的时间被垃圾回收器收走(释放掉)。这也是 Java 比较占内存的原因。 实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值