• Java基础回顾-数组的内存结构/常用方法


    一、数组元素的默认初始值

    数组元素类型默认初始值
    byte0
    short0
    int0
    long0L
    float0.0F
    double0.0
    char0或’\u0000‘
    booleanfalse
    引用数据类型null

    二、内存的简化结构

    内存结构可分为三部分:

            :存放局部变量(例如方法内的变量)。

            堆:存放new出来的结构,如类的对象数组等等。

            方法区:包括静态域、常量池等。

    三、一维数组的内存解析

            如下图代码所示,在 main() 方法内创建了两个一维数组:arr1arr,其实就是两个指针变量。它们两个在中存储,分别指向数组第一个元素,也就是说它们存放的是地址值

            如果我给arr1重新new了一个数组,那中就会在新的地址(0x5566)上划分一块数据区域,arr1会指向这个新区域,而舍弃掉原来的那个区域(0x12ab)。

     四、二维数组的内存解析

            对于二维数组的理解,我们可以看成是一维数组 array1又作为另一个一维数组array0的元素而存在。其实,从数组底层的运行机制来看,没有所谓多维数组,本质上就是套娃。

            同样看下面的图,在main() 中创建arr1数组,指定4行,但没有指定列。那就在中创建一个指针变量arr1,中创建一个存放4个数据的区域(0x1234),让arr1指向这个区域。

            接下来每new一个,就在中创建出一块数据区域,并让0x1234区域中的元素指向新区域。这样的话,arr1 和 arr1[i] 中存放的就都是地址了。这不就是套娃嘛? 

    五、数组常用的几个方法 

            首先 import java.util.Arrays

            1. Array.equals(int[] a,int[] b)     判断两个数组是否相等

            2.Arrays.toString(int[] a) 数组内容转为String格式输出

            3 Array.fill(int[] a,int val) 将指定值填充到数组之中

            4 Array.sort(int[] a) 对数组进行排序

            5 Array.binarySearch(int[] a,int key) 对排序后的数组二分查找指定的值

  • 相关阅读:
    stack(hdu)
    ElasticSearch性能原理拆解
    不是所有数据增强都可以提升精度
    有向图的邻接表和邻接矩阵
    java框架-Dubbo
    数据结构--图
    中国港口年鉴2019(EXCEL版)
    springboot-RedisTemplate
    爱数SMART 2022峰会开启,分享数据战略与建设数据驱动型组织方法论
    C++多态、虚函数、纯虚函数、抽象类
  • 原文地址:https://blog.csdn.net/weixin_62427168/article/details/125429795