Java基础:Java数组

一、数组的概念

数组(array)是一种数据结构,用来存储同一类型值的集合

  • 它是有序数据的集合。
  • 通过一个整型下标可以访问数组中的每一个值。
  • 根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。

二、数组的特点

在计算机语言中数组是非常重要的集合类型,大部分计算机语言中数组具有如下三个基本特性:

  1. 一致性:数组只能保存相同数据类型元素,元素的数据类型可以是任何相同的数据类型。
  2. 有序性:数组中的元素是有序的,通过下标访问。
  3. 不可变性:数组一旦初始化,则长度(数组中元素的个数)不可变
  4. 数值数组元素的默认值为 0,而引用元素的默认值为 null。
  5. 数组的索引从 0 开始,如果数组有 n 个元素,那么数组的索引是从 0 到(n-1)。
  6. 数组元素可以是任何类型,包括数组类型。Java 的数组既可以存储基本类型的数据,也可以存储引用类型的数据,只要所有的数组元素具有相同的类型即可。
  7. 数组可以是一维数组、二维数组或多维数组。

三、数组的声明

type[] arrayName;    // 数据类型[] 数组名;在声明数组的时候,不需要加数组的长度。
或者
type arrayName[];    // 数据类型 数组名[];在声明数组的时候,不需要加数组的长度。

代码如下:

String[] name;    // 存储商品名称,类型为字符串型

四、数组的分配空间(创建数组)

声明了数组,只是得到了一个存放数组的变量,并没有为数组元素分配内存空间,不能使用。 在 Java 中可以使用 new 关键字来给数组分配空间 。

代码如下:

name = new String[20];//分配一个长度为20的空间给组数,也就是数组长度为20。

五、数组的属性和方法

名称返回值
方法clone()Object
equals(Object obj)boolean
getClass()Class<?>
hashCode()int
notify()void
notify All()void
toString()String
wait()void
wait(long timeout)void
wait(long timeout,int nanos)void
属性lengthint

六、初始化一维数组

初始化一维数组:

int[] arr = new int[5];
arr[0] = 1;
//或者
int[] arr = new int[]{1, 2, 3, 5, 8};
//或者
int[] arr = { 1, 2, 3, 4 };

获取数组下标的元素: index 表示下标,下标为 0 表示获取第一个元素,下标为 array.length-1 表示获取最后一个元素。当指定的下标值超出数组的总长度时,会拋出 ArraylndexOutOfBoundsException 异常。

int a = arr[0];//获取第一个元素
int b = arr[4];//获取最后一个元素
//获取全部元素,也可以用for循环
for(int val:arr) {
    System.out.print("元素的值依次是:"+val+"\t");
}

七、初始化二维数组

Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数 。 img

三种初始化数组的语法:

type[][] arrayName = new type[][]{1,2,3,,值 n};    // 在定义时初始化
type[][] arrayName = new type[size1][size2];    // 给定空间,在赋值
type[][] arrayName = new type[size][];    // 数组第二维长度为空,可变化

例如:

int[][] temp = new int[][]{{1,2},{3,4}};
int[][] temp = new int[2][2];
int[][] temp = new int[2][];

获取单个元素:

arrayName[i-1][j-1];

获取全部元素:需要遍历:

public class DemoTest {
    public static void main(String[] args) {
        // 创建一个二维矩阵
        int[][] matrix = new int[5][5];
        // 随机分配值
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = (int) (Math.random() * 10);
            }
        }
        System.out.println("下面是程序生成的矩阵\n");
        // 遍历二维矩阵并输出
        for (int k = 0; k < matrix.length; k++) {
            for (int g = 0; g < matrix[k].length; g++) {
                System.out.print(matrix[k][g] + "");
            }
            System.out.println();
        }
    }
}

八、初始化不规则数组

int intArray[][] = new int[4][]; //先初始化高维数组为4
// 逐一初始化低维数组
intArray[0] = new int[2];
intArray[1] = new int[1];
intArray[2] = new int[3];
intArray[3] = new int[3];

内存空间:

不规则数组访问

九、数组的工具类Arrays

Arrays 类是一个工具类,其中包含了数组操作的很多方法。这个 Arrays 类里均为 static 修饰的方法(static 修饰的方法可以直接通过类名调用),可以直接通过 Arrays.xxx(xxx) 的形式调用方法。

方法名方法说明
Arrays.toString(ints)返回数组的字符串格式
Arrays.sort(ints);数组按照升序排序
Arrays.sort(ints,0,4);排序其他用法,对指定下标范围进行排序
Arrays.fill(ints,1);给数组元素填充相同的值1
Arrays.deepToString(ints)返回多维数组的字符串格式
Arrays.equals(ints[0],ints[1]))比较两个数组的元素是否相等

十、数组的排序

有几种方法:

1. Arrays.sort()
2. 冒泡排序
3. 快速排序
4. 选择排序
5. 直接插入
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值