Java中的数组

目录

1. 数组的定义

2. 数组的初始化

2.1 静态初始化

2.2 动态初始化

3. 数组的使用

4. 数组的内存视图


1. 数组的定义

数组是一种用于存储相同类型数据的容器。数组的大小是固定的,一旦创建就无法更改。数组可以存储基本数据类型(如int、float、char、string)或引用类型(如对象)。

数组分为一维数组和二维数组,一维数组类似数轴,每个元素占一个空间,二维数组是数组的数组,用来表示矩阵或表格数据。

2. 数组的初始化

2.1 静态初始化

静态初始化是指在声明数组的同时直接赋予数组初始值。这种方式适用于在数组声明时就已经知道数组元素的具体值的情况,简洁且易于理解。

int[] arr1=new int[]{1,2,3,4,5};
int[] arr2={1,2,3,4,5};

上述两种方式都是静态初始化,第一种为完整,第二种较为简洁。格式为 数据类型[] 数组名 = {元素1,元素2}

也可以对字符串等其他类型数组进行初始化。

String[] fruits = {"Apple", "Banana", "Cherry"};

这种初始化的特点就是

1.数组的长度由初始化时的元素个数自动确定,不需要手动指定。

2.初始化方式简洁明了,适用于在定义数组时就能确定初始值的场景。

3. 在数组声明的同时完成赋值,不需要逐个赋值操作。

2.2 动态初始化

指在声明数组时先指定数组的长度,然后在运行时通过程序逻辑或条件为数组元素赋值。这种方式适用于当数组的初始值在程序运行过程中才确定的情况。

格式为  数据类型[] 数组名 = new 数据类型[数组长度];

public class Demo {
    public static void main(String[] args){
        int[] array = new int[5];
        array[0]=1;
        array[1]=2;
        array[2]=3;
        array[3]=4;
        array[4]=5;
    }
}

这种初始化的特点是

1.数组元素的值可以根据运行时的条件、计算结果或用户输入等动态确定

2.适用于数组的初始值在编写代码时不确定的情况,可以根据程序的具体需求进行赋值。

3.与静态初始化不同,动态初始化的数组在创建时只有长度确定,元素的具体值需要手动赋值。

与静态初始化的使用要区分开来,灵活运用。

3. 数组的使用

要用会使用数组,就要知道数组的索引(index),例如array[0]指的是数组中的第一个元素,索引从0开始,此外,数组有一个属性——length,它指的是数组的元素个数,length-1就是索引的最大值,超出最大索引值的元素全被赋予为null,即空值。

此外可以通过length来完成对数组的遍历。

public class Demo {
    public static void main(String[] args){
        int[] array = {1,2,3,4,5};
        for(int i=0;i<array.length;i++){
            System.out.println("数组的第"+(i+1)+"个元素是"+array[i]);
        }
    }
}

结果如下

 

此外,数组创建后里面的元素是可以修改,删除的,极大的方便了数组的后续使用。

4. 数组的内存视图

数组在内存中是连续存储的,这意味着数组的所有元素依次存放在相邻的内存地址中,每个元素占据相同大小的内存空间。

public class Demo {
    public static void main(String[] args){
        int[] array = {10,20,30,40};
        System.out.println(array);
    }
}

这是数组的初始地址,为[I@10f87f48,这是哈希码

  • [:表示这是一个数组。[ 是一个特殊的符号,表示这个对象是一个数组类型。

  • I:表示数组的元素类型。Java 中的一些常见类型符号包括:

    • I 表示 int 类型。
    • D 表示 double 类型。
    • F 表示 float 类型。
    • J 表示 long 类型。
    • B 表示 byte 类型。
    • C 表示 char 类型。
    • Z 表示 boolean 类型。
    • L<class name>; 表示一个对象类型,<class name> 是类的完整名称。

    在这个例子中,I 表示这是一个 int 类型的数组。

  • @:分隔符,用于分隔类型信息和哈希码。

  • 10f87f48:这是该数组对象的哈希码的十六进制表示。这个值是基于数组对象的内存地址生成的,但它并不直接是内存地址。

 如果将一个数组赋值给另一个数组,二者所指向的内存空间是一致的,是原数组的空间,此外空间分配时,各个变量的空间不会重复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值