• 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) 对排序后的数组二分查找指定的值

  • 相关阅读:
    SpringMVC原理讲述
    财务费用分析怎么分析
    iText7高级教程之构建基础块——6.创建动作(Action)、目标(destinations)和书签(bookmarks)
    (零代) MDD 开创低代码领行设计模式
    [发布] 一个测试 WebService 和数据库连接的工具 - DBTest v1.0
    20个提升效率的JS简写技巧,告别屎山!
    CityJSON
    直接插入排序、希尔排序详解。及性能比较
    贪吃蛇游戏代码(C语言项目)
    kafka+zookeeper群集
  • 原文地址:https://blog.csdn.net/weixin_62427168/article/details/125429795