数组

数组

数组的定义

  • 相同类型数据的有序集合
  • 每一个数据称作一个数组元素,每个数组元素可以通过一个下标去访问

数组的创建

必须声明数组变量,才能在程序中使用数组。

dataType[] arrayRefVar;    //首选方法
dataType arrayRefVar[];    //效果相同,但不是首选

Java语言中使用new操作符来创建数组

dataType[] arrayRefVar = new dataType[arraySize];
int[] nums = new int[10];  //声明和创建一起进行

数组的元素通过索引访问,从0开始。合法区间:[0,length-1]

创建数组之后给其赋值,若有某个位置没赋值,则为该类型的默认值

内存分析

Java内存:

    • 存放new的对象和数组
    • 可以被所有的线程共享,不会存放别的对象引用
    • 存放基本变量类型(会包含这个基本类型的具体数值)
    • 引用对象的变量(会存放这个引用在堆里面的具体地址)
  • 方法区
    • 可以被所有的线程共享
    • 包含了所有的class和static变量
  • ...
int[] array;           //在栈里新建了个名为array的空间
array = new int[10];   //在堆里开辟了一个空间,里面有十个小空间。声明的时候不存在,new的时候才会产生
                       //赋值就是给小空间里填上值

在赋值之后,如果输出array[10],则会提示ArrayIndexOutOfBoundsException,即数组下标越界

数组的三种初始化

  • 静态初始化

    int[] a = {1,2,3};  //一旦定义数组的大小就不可改变
    Man[] men = {new Man(1,1),new Man(2,2)};
    
  • 动态初始化

    int[] a = new int[2];
    a[0] = 1;
    a[1] = 2;
    
  • 默认初始化

    数组是引用类型,其元素相当于类的实例化变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化

数组的四个基本特点

  • 长度确定,一旦被创建,大小不可改
  • 元素类型必相同,但是类型可以是任意的数据类型,包括基本类型和引用类型
  • 数组本身属于引用类型,可以看成是对象,每个元素相当于该对象的成员变量。Java中对象在堆中,因此数组对象本身是在堆中的

数组使用

直接输出数组并不是输出数组里的元素,而是一串数组的hash码

数组可以做为参数输入进函数里

//打印数组元素
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i] + " ");
        }
    }

也可以做为函数的返回值

 //反转数组(数组做为返回值)
    public static int[] reverse(int[] arrays)
    {
        int[] result = new int[arrays.length];
        for (int i = 0,j = result.length-1; i < arrays.length; i++,j--) {
            result[j] = arrays[i];
        }
        return result;
    }

多维数组

多维数组可以看成数组的数组,比如二维数组就是一个特殊的一维数组,每一个元素都是一个一维数组。

int a[][] = new int[2][5];

以上二维数组可以看成一个两行五列的数组

  • 在学习面向对象编程之后,一般不会用到维度特别高的数组

Arrays类

数组的工具类java.util.Arrays。

数组对象本身没有什么方法可以调用,但是API中提供了一个工具类Arrays供我们使用(查看JDK帮助文档),从而可以对数据对象进行一些基本的操作。

Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而不用使用对象来调用(注意是“不用”而不是“不能”)

常用的功能:

  • 给数组赋值:fill方法
  • 对数组排序:sort方法
  • 比较数组:equals方法比较是否相等
  • 查找数组元素:binarySearch方法对已序数组二分查找

方法都是人写的,已有的方法当然可以自己实现,但是既然有了拿来直接用比重复造轮子轻松很多

posted @   20220629  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示