Java----数组的定义和使用

2024-05-14 1392阅读

1.数组的定义

在Java中,数组是一种相同数据类型的集合。数组在内存中是一段连续的空间。

2.数组的创建和初始化

2.1数组的创建

在Java中,数组创建的形式与C语言又所不同。

Java中数组创建的形式

T[] 数组名 = new T[N];

1.T表示数组存放的数据类型。

2.T[]表示数组的类型。

3.N表示数组的长度。 

2.2数组的初始化

数组的初始化分为动态初始化和静态初始化两种。

2.2.1 动态初始化

动态初始化就是在创建数组的时候,直接指定数组元素的个数。

如以下代码

int[]arr=new int[10];//10就是数组元素个数

2.2.2 静态初始化 

静态初始化就是在创建数组的时候不指定数组中元素的个数,但指定数组的内容。

语法格式:

T[] 数组名称=new int[]{data1,data2,data3.....};

举例说明

public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,4,5};
        String[] man=new String[]{"red","man","lebron"};
        double[] arr2=new double[]{1.2,1.2,2.5};
    }

注意事项:

1.在Java中,数组在创建的同时不能同时指定数组的长度和数组的内容。否则就会报错。

public class CSDN {
    public static void main(String[] args) {
        int[] arr=new int[5]{1,2,3,4,5};
        String[] man=new String[4]{"red","man","lebron"};
        double[] arr2=new double[5]{1.2,1.2,2.5};
    }
}

Java----数组的定义和使用

如上面同时所示,同时指定数组的长度和数组的内容就会报错。

2.虽然静态初始化没有指定数组的长度,编译器在编译时会根据 { } 里面的元素来确定数组的长度。

3.静态初始化时,{ } 里面的元素的数据类型必须和数组创建时声明的数据类型相同。

4.静态初始化可以简写,后面的new T[]可以省略掉。

public static void main(String[] args) {
        int[] arr={1,2,3,4,5};
        String[] man={"red","man","lebron"};
        double[] arr2={1.2,1.2,2.5};
    }

 2.2.3 总结共同点

动态初始化和静态初始化都可以分两步写。

        //动态初始化分两步
        int[] arr;
        arr=new int[10];
        //静态初始化分两步写
        int[] arr2;
        arr2=new int[]{1,2,3,4,5,6};

注意:分两步进行初始化时,new T[ ] 这部分不能省略。

2.2.4 补充

1.数组的创建其实可以像C语言那样创立,但是不推荐。

2.如果数组在创建时没有初始化数组的内容,数组中元素都有默认的其对应的零值。如下表

Java----数组的定义和使用

2.3 数组的访问和遍历

2.3.1数组的访问

数组在内存中是一段连续的空间,空间的编号都是从0开始,一次递增。这些编号也就是数组的下标,我们可以通过数组的下标来访问数组中的元素。

比如:

int[]array = new int[]{10, 20, 30, 40, 50};
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
System.out.println(array[4]);

如上面的代码所示,0,1,2,3,4就是数组的下标,我们就通过这些下标来访问数组中对应的元素。

2.3.2 数组的遍历

数组的遍历就是将数组的元素都浏览一遍。

在Java中,我们有两种遍历数组的方法。

重点:在Java中,我们可以通过 数组名.length 来获取数组的长度。

1.for循环遍历数组

public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,4,5};
        for(int i=0;i

2.foreach循环 

 public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,4,5};
        for(int x:arr){
            System.out.print(x+" ");
        }
    }

foreach循环的做法是遍历数组,一次将数组中的元素放入x中。

3.数组是引用数据类型

3.1JVM的内存分布

在介绍引用数据类型之前,我们先来简单介绍以下JVM的内存分布。

如下图

Java----数组的定义和使用

这里我们就先简单了解一下虚拟机栈和本地方法栈。

本地方法栈:本质是由C/C++构造的一些方法,我们可以直接使用。

虚拟机栈:就是我们平常学习计算机语言说的栈。

3.2引用数据类型

在JAVA中,我们的数据类型分为基本数据类型和基本数据类型。

基本数据类型创建的变量被称为基本变量,其内存中存的是变量的值。

由引用数据类型创建的数据类型一般被称为对象的引用,其空间存储的是对象的地址。

什么是引用呢?

看一下代码

 public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,4,5};
        System.out.println(arr);
        int a=10;
    }

我们在创建变量的时候,计算机系统都会在栈中为变量开辟内存。

如以上代码,我们创建了一个数组变量和一个int变量,那么栈就会为这两个变量分配内存。

由于int a是基本数据类型,所以创建变量是赋值的10就直接占据了为变量a开辟的内存中。

而数组是引用数据类型, 其内存可以简单理解为寸的是数组的首元素地址。

所以,引用数据类型中存的地址,我们就可以说通过array这个引用来访问数组中的元素。

Java----数组的定义和使用

 我么再来看一段代码

 public static void main(String[] args) {
        int[] arr1=new int[]{1,2,3,4,5};
        arr1[0]=3;
        arr1[1]=4;
        int[] arr2=new int[]{10,20,30,40,50};
        arr2=arr1;
        arr1[0]=100;
        arr2[1]=200;
        for(int x:arr2){
            System.out.print(x+" ");
        }
    }

输出会是什么呢?

我们通过画图来分析代码

首先,我们创建了arr1数组。

Java----数组的定义和使用

我们就可以通过arr1这个引用来访问数组中的元素。接着我们对arr1进行了数组元素中的改变。

Java----数组的定义和使用

接着我们又创建了arr2。

Java----数组的定义和使用

我们就可以通过arr2这个引用来访问arr2中的数据。

接着就是一个重点了,我们写了一个 arr2=arr1 的代码是什么意思呢?

简单来说就是将arr1中存储的地址传给arr2,arr2中存的数据就变为了0x9了。

那样arr2就不指向arr2了,而是指向了arr1。

这时侯,我们我们同过arr1或arr2这两个引用访问的都是arr1了。

而原先arr2指向的对象由于没有了引用,其在堆占的内存就自动被计算机系统回收了。

Java----数组的定义和使用

所以最后两步都是对arr1数组数据的改变。

Java----数组的定义和使用

运行代码

Java----数组的定义和使用

 4. 二维数组

4.1二维数组的创建和初始化

二维数组的创建和初始化我们直接以代码的形式介绍

public static void main(String[] args) {
        int[][] arr1=new int[][]{{1,2,3},{4,5,6}};
        int[][] arr2=new int[2][3];
        int[][] arr3={{1,2,3},{1,2,3}};
    }

主要有以上三种形式。

4.2 二维数组的遍历

 首先,我们要清楚二维数组是一个特殊的一维数组。

Java中这个定义很清楚。

我们以arr1为例。

如下图所示

Java----数组的定义和使用

arr1是一个2行3列的数组,这个二维数组可以看作是有两个一维数组组成的。

其中arr1[0] 是访问arr1这个二维数组中第一个一维数组中的引用。

arr1[1]是访问arr1这个二维数组中的第二个一维数组的引用。

第一种遍历方法 

  public static void main(String[] args) {
        int[][] arr1=new int[][]{{1,2,3},{4,5,6}};
        int[][] arr2=new int[2][3];
        int[][] arr3={{1,2,3},{1,2,3}};
        for(int i=0;i

第二种遍历方法 

 public static void main(String[] args) {
        int[][] arr1=new int[][]{{1,2,3},{4,5,6}};
        int[][] arr2=new int[2][3];
        int[][] arr3={{1,2,3},{1,2,3}};
        for(int[] subarr1:arr1){
            for(int x:subarr1){
                System.out.print(x+" ");
            }
            System.out.println();
        }
}

4.3 不规则二维数组

首先,我们要知道二维数组在创建的时候,行不可以省略,列可以省略。

 public static void main(String[] args) {
        int arr[][]=new int[2][];
        arr[0]=new int[]{1,2,3};
        arr[1]=new int[]{4,5,6,70};
        for(int i=0;i 

运行代码

Java----数组的定义和使用

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]