【Java】数组

数组是编程语言中常见的数据结构,用来存储一组相同数据类型的数据,可以通过整型索引访问数组中的每一个值。需要注意,同一个数组中存储的所有元素的数据类型必须相同。

根据数组存放元素的组织结构,可将数组分为一维数组、二维数组以及多维(三维及以上)。

创建数组:

data_type[ ]varName;

data_type varName[ ];

data_type -数据类型

varName-数组名

[ ]-是一维数组的标识,可放置在数组名前面或者后面

示例:

//声明一个整型数组

int a[ ];

//声明一个单精度浮点型数组

float b[ ];

//声明一个字符型数组

char c[ ];

//声明一个双精度浮点型数组

double  d[ ];

//声明一个布尔型数组

boolean e[ ];

此时只是声明了数组变量,在内存中并没有给数组分配空间,因此还不能访问这些数组。要访问数组需在内存中给数组分配存储空间,并指定数组的长度,通过new操作符来创建一个整型数组,其长度为100;

int[ ] array = new int [100];  //int(4个字节),会分配100个int类型数据所占用的空间

访问数组中某个元素的格式:

数组名[下标索引],其中数组的下标索引是从0开始的。即要访问数据中第n个元素,可以通过array[n-1]来访问

数组的长度可以通过 数组名.length 来获取

注意:数组被创建后,它的大小(容量)是不能被改变的,但数组中的各个数组元素是可以改变的。而且访问数组中的元素时,下标索引不能越界,范围必须在0~length-1

 

package Test.TestDemo;

public class ArrayLength {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //声明一个整型数组
        int a [];
        //给数组a分配10个整型空间
        a = new int [10];
        //定义一个单精度浮点型数组b,同时给数组分配5个浮点型空间
        float b[] = new float[5];
        //定义一个长度为5的字符型数组c
        char c[] = new char [5];
        //定义一个长度为5的双精度浮点型数组
        double d[] = new double[5];
        //定义一个长度为5的布尔型数组
        boolean e[] = new boolean[5];
        /*下面输出各数组的数组名,注意输出的内容*/
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
        System.out.println("-----------------------------------------------");
        /*下面输出各数组中第一个元素的值,注意输出的内容*/
        System.out.println(a[0]);
        System.out.println(b[0]);
        System.out.println(c[0]);
        System.out.println(d[0]);
        System.out.println(e[0]);
        System.out.println("-----------------------------------------------");
        /*下面输入各数组的长度*/
        System.out.println("a.length=" + a.length);
        System.out.println("a.length=" + b.length);
        System.out.println("a.length=" + c.length);
        System.out.println("a.length=" + d.length);
        System.out.println("a.length=" + e.length);
    }

}

 

 通过执行结果可以分析出,直接输出数组名时会输出一些像[I@626b2d4a 的信息,这些信息其实是数组在内存空间中的首地址(使用十六进制显示)。数组在内存中的组织结构如图:数组名中存放系统为数组分配的、指定长度的、连续的、内存空间的首地址。

这是因为在Java中会将字符型数组看成一个字符串,输出的是字符串的内容而不是地址。

当数组创建完毕,数组中的元素具有默认初始值,数值类型的数组初始值为0,布尔类型的为false,字符型的为’\0‘,引用类型的则为null

 

 

 

 创建数组时,系统会完成如下操作:

1)创建一个数组对象

2)在内存中给数组分配存储空间

3)初始化数组中的元素值(给数组元素初始化一个相应的数据类型的默认值)

 

数组初始化:

1)静态初始化

2)动态初始化

通过这两种方式可以将数组中的元素初始化为指定值,而非缺省的默认值

定义数组时对数组进行初始化

int[ ]k = {1,3,4,5};

使用匿名数组的方式来静态初始化数组k

int[ ]k = new int[ ] {1,3,4,5};

注意:对于静态初始化方式,不要在数组声明中指定数组的大小,否则将引发错误

所谓动态初始化方式,就是将数组的定义和数组的初始化分开来进行。

如:

int array = new int [2];

array[0] = 1;//第一个元素赋值为1

array[1] =2;//第二个元素赋值为2

也可以利用一个循环语句对数组中的各元素就行赋值。例如,将1-10分别赋值到数组中

//定义一个长度为10的整型数组

int array [ ] = new int [10];

for (int i = 0;i<10;i++){

array[i] = i+1;

}

数组拷贝

一般来说,数组的复制是指源数组的元素一一做副本,赋值到目标数组的对应位置。常用的数组复制的方法有三种:

1)使用循环语句进行复制

2)使用clone()方法

3)使用System.arraycopy()方法

arraycopy()方法是System类的一个静态方法 ,其可以方便地实现数组地拷贝功能,arraycopy()方法结构如下:

System.arraycopy(int from,int fromIndex,int to,int toIndex,int count)

该方法共有五个参数:from,fromIndex,to,toIndex,count,其含义是将数组from中的索引为fromIndex开始的元素,拷贝到数组to中索引为toIndex的位置,总共拷贝的元素个数为count个。

public class ArrayCopy {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[]array1= {1,2,3,4,5};
        int[]array2=new int[array1.length];
        //复制
        System.arraycopy(array1, 0, array2, 0, array1.length);
        for(int i=0;i<array2.length;i++) {
            System.out.print(array2[i]+",");
        }
    }

}

 

posted @ 2023-04-08 15:35  learning365  阅读(72)  评论(0编辑  收藏  举报