JAVA初学笔记&宋红康JAVA基础、高级篇(其六)

数组

由多个相同类型数据按一定顺序排列的集合,并用一个名字命名,并且通过编号的方式对这些数据进行统一管理

  1. 特征

    • 数组名

    • 下标(或索引),内数据有序排列

    • 元素

    • 数组的长度

  2. 分类

    • 维数:一维数组、二位数组等
    • 数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
  3. 使用

    //初始化
    /*
    里面元素是整型(int):0
    里面元素是浮点型(float/double):0.0
    里面元素是char型:0或者'\u0000',不是'0'!
    里面元素是boolean型:False
    里面元素是引用数据类型(例如String):Null
    */
    //声明
    int[] ids;
    //静态初始化
    ids = new int[]{1,2,3,4};
    //动态初始化
    String[] names = new String[5];
    
    //错误示范
    int[] arr1 = new int[];  // 没有定义数组大小
    int[5] arr2 = new int[5];  // 重复
    int[] arr3 = new int[3]{1,2,3};  // 数组‘超载’
    
    //调用
    arr3[0];
    
    //获取数组长度
    arr_names,length;
    
    //遍历
    for(int i = 0; i<arr_names,length;i++){
        System.out.println(arr_names[i]);
    }
    
  4. C++的引申

    int a[10]和int a=new int[10]]的区别*

    • int a[10]使用简单,系统会自动进行内存分配与回收。

    • int* a = new int[10]需要判断内存是否分配成功,需要搭配delete[] a进行手动释放。

    • 如果要分配大量空间,例如1w,只能用 int* a=new 。

      因为int a[] 这种方式,内存是存放在栈上。int* a = new 内存是放在堆上

      栈是连续内存/堆是非连续内存

      可分配空间少/可分配空间大

      注意:这里指的是单个new,多个new出来的就不是连续内存了

    • 两者相比,后者有动态分配内存的优势。

  5. 内存结构说明

    看到网上有文章讲的比视频还详细

    JVM内存结构简单认识

你可能感兴趣的:(教程)