文章目录

  • 数组
  • 数组的基本概念
  • 数组的创建
  • 数组的两种声明方式
  • 数组创建的三种方式
  • 创建数组的划分
  • 数组的长度
  • 数组的访问和迭代
  • 二维数组
  • 二维数组的定义
  • 二维数组的迭代


数组

数组的基本概念

1.数组就是相同类型元素的集合。

2.数组是一种线性的数据结构(即具有连续性)。

3.数组本身是引用数据类型、即对象数组可以存储基本数据类型,也可以存储引用数据类型。存储引用数据类型时直接使用Object类中的toString方法只能输出对象的引用(地址),若要输出引用数据类型的值则要在类中对Object类中的toString方法进行一个重写@Override

数组的创建

数组的两种声明方式
数据类型 [] 数组名字		例如:int [] a;
数据雷星 数组名字 []		例如:int a [];

注意:Java中的这两种声明方式没有任何的区别,但是建议大家使用第一种,避免混淆a的数据类型。

代码示例:

//声明数组的两种方式
        int [] a;
        int b [];
        
        int [] c,d;//这里的c,d都是整型数组
        int e,f [];//这里的e是int型,f是整型数组
数组创建的三种方式

1.声明数组的同时,根据指定的长度分配内存,但数组中的元素值都为默认的初始化值

例如:int [] ary0 = new int[10];//创建了一个名为ary0的长度为十整型数组

不同类型的数组初始化值不同

int类型的初始化值为 0
byte类型得初始化值  0
short类型的初始化值为  0
long类型的初始化值为  0
char类型的初始化值为  空
boolean类型的初始化值为 false
float类型的初始值为 0.0
double类型的初始值为 0.0
String(引用数据类型)的初始值为  null

代码示例

public static void main(String[] args) {
        //声明数组时,仅分配长度,数组中的元素都为默认的初始化值
        int [] a0 = new int[4];//int类型的初始化值为 0
        byte [] a1 = new byte[4];//byte类型得初始化值  0
        short [] a2 = new short[4];//short类型的初始化值为  0
        long [] a3 = new long[4];//long类型的初始化值为  0
        char [] a4 = new char[4];//char类型的初始化值为  空
        boolean [] a5 = new boolean[4];//boolean类型的初始化值为 false
        float [] a6 = new float[4];//float类型的初始值为 0.0
        double [] a7 = new double[4];//double类型的初始值为 0.0
        String [] a8 = new String[4];//String(引用数据类型)的初始值为  null

        System.out.println(Arrays.toString(a0));//[0, 0, 0, 0]
        System.out.println(Arrays.toString(a1));//[0, 0, 0, 0]
        System.out.println(Arrays.toString(a2));//[0, 0, 0, 0]
        System.out.println(Arrays.toString(a3));//[0, 0, 0, 0]
        System.out.println(Arrays.toString(a4));//[ ,  ,  ,  ]
        System.out.println(Arrays.toString(a5));//[false, false, false, false]
        System.out.println(Arrays.toString(a6));//[0.0, 0.0, 0.0, 0.0]
        System.out.println(Arrays.toString(a7));//[0.0, 0.0, 0.0, 0.0]
        System.out.println(Arrays.toString(a8));//[null, null, null, null]
    }

2.声明数组并分配内存,同时将其初始化

例如:int [] ary1 = new int[]{1,2,3};//创建了一个名为ary1的长度为3内容为1,2,3的数组

3.与第二种方式相同,只是语法上进行简化

例如:int [] ary2 = {1,2,3};//创建了一个名为ary2的长度为3内容为1,2,3的数组
创建数组的划分

数组的创建可以分为动态和静态两种

1.动态创建数组: 不对数组进行元素赋值,可以结合for循环对其赋值,如上面的第一种创建方式

2.静态创建数组: 在创建的时候,就为每一个元素进行初始赋值

数组的长度

求数组的长度可以使用 length属性

例如:
int [] ary = {1,2,3,3,4,5,63,21,1};
System.out.println("ary数组的长度为:"+ary.length);//ary数组的长度为:9

数组的访问和迭代

1.数组的访问: 数组的名字[索引] 例如: a[0],a[1]

注意:
数组的索引从"0"开始;
索引的数据类型是整形;
索引的最大值与数组的长度差"1"(即区间长度为0~数组名.length-1)

2.数组的迭代(两种方式)

第一种: for循环

int [] ary = new int []{1,2,4,12,52,1};
//数组的迭代
for(int i = 0; i<ary.length; i++){
	System.out.println(ary[i]);//取出第 i 个数组的元素
}

第二种:增强for循环 (foreach循环)

for(数据类型 变量 : 要循环的数组/集合)

每循环一次从数组中取出一个元素,赋值给前面声明的变量,直到数组中的全部元素遍历完毕,循环终止

int [] ary0 = new int[]{1,2,3,4,5};
for(int i : ary){
	System.out.println(i);
}

代码示例

import java.util.Arrays;

//数组的访问和迭代
public class ArrayDemo3 {
    public static void main(String[] args) {
        //数组的访问
        //创建一个数组
        String ary [] ={"baby","我想你了"};
        //求数组的一个
        System.out.println("数组ary的长度为:"+ary.length);//数组ary的长度为:2
        //输出一个数组
        System.out.println(Arrays.toString(ary));//[baby, 我想你了]
        //访问数组中的一个元素
        System.out.println(ary[0]);//baby

        //数组的迭代
        //创建一个数组
        char [] ary0 = {'我','爱','你'};
        //for循环
        for (int i = 0; i < ary0.length; i++) {
            System.out.println(ary0[i]);
        }
        //foreach循环
        for (char x: ary0
             ) {
            System.out.println(x);
        }

    }
}

二维数组

二维数组的定义

定义: 数组的数组, 二维数组的每一个元素都是一个一维数组

例如:int [][] ary = {{1,2,3},{2,3},{4,5,6}};

二维数组的声明

int [][] a;
int b [][];
二维数组的迭代
//二维数组
public class ArrayDemo {
    public static void main(String[] args) {
        //创建一个二维数组
        int [][] ary = {{1,2,3},{2,7,4,5,4},{0,2,2,2}};
        //二维数组的迭代
        for (int i = 0; i < ary.length; i++) {
            for (int j = 0; j < ary[i].length; j++) {
                System.out.print(ary[i][j]+"\t");
            }
            System.out.println();
        }
        /*
        * 结果为:
        * 1 2	3	
          2	7	4	5	4	
          0	2	2	2	
        */
    }
}