Array 数组的声明与应用

86 阅读4分钟

一、应用场景

开发中为什么要使用数组呢?

如果开发中出现了大量的 、同一类型的数据 ,按照现在所学的知识点,如果声明一个变量存一个数据的话 ,那么就会需要声明很多个变量,这是相当麻烦的 。

如果是数组的话 ,只需要声明一个数组 ,就可以存很多数据 。

数组就像是一个容器 。

二、数组的定义

这里数组的定义可以和变量的定义比较着看。

变量的定义:

数据类型 变量名字 = 值;

数组的定义:

数据类型[] 数组名字 = 数组的值;

下面将进行详细声明 :

第一种

语法格式:

数据类型[]  数组的名字 = {值1, 值2, 值3,...};
或
数据类型  数组的名字[] = {值1, 值2, 值3,...};

第二种

语法格式:

数据类型[]  数组的名字 = new  数据类型[容量];
或者
数据类型  数组的名字[] = new  数据类型[容量];

第三种

语法格式:

数据类型[]  数组的名字 = new  数据类型[]{值1, 值2, 值3,...};

第一种和第二种区别:

第一种既声明了数组 ,又对数组进行了赋值 ;

第二种只是声明了空的数组而已,暂时还没有赋值。

第三种其实就是第一种的完全写法 ,仅作了解 ,见到了知道是在声明变量就可以。

具体应用

1.第一种

import java.util.Arrays;//导包,之后用到 Arrays.toString()需要

public static void main(String[] args) {

    //数组第一种声明方式: 数据类型[]  数组的名字 = {值1, 值2, 值3,...};
    int[] arr = {23, 34, 12, 15};
    System.out.println(arr);//[I@15db9742 是内存地址 但是数据看不到 那咋办?
    System.out.println(Arrays.toString(arr));//将一个内存地址形式的数据变成 人类可以看懂的
    //[23, 34, 12, 15]
		
    String[] strs = {"张三", "李四", "王五"}; 
    System.out.println(strs);//@6d06d69c
    System.out.println(Arrays.toString(strs));//[张三, 李四, 王五]
		
    boolean[] bools = {true, true, false, true};
    System.out.println(bools);//[Z@7852e922
    System.out.println(Arrays.toString(bools));//[true, true, false, true]
		
    float[] f2 = {12.3f, 45.6F};
		
		
    //声明一个char类型的数组
    char[]  chs = {'a', '中', '9'};
    System.out.println(chs);//a中9  这个比较特殊 打印不是地址  是数组中值组成的
		
}

2.第二种

import java.util.Arrays;

public class Demo5 {
    public static void main(String[] args) {
		
    //第二种声明方式: 数据类型[]  数组的名字 = new  数据类型[容量];
    int[] arr = new int[3];//在声明一个数组,且容量为3 只能存放3个数据 空的数组
    //arr = {0,0,0};//这里没有赋值,默认为0
    
    System.out.println(arr);//内存地址
    System.out.println(Arrays.toString(arr));//[0, 0, 0]
    //此时是空的数组  
    
    String[] strs = new String[4];
    System.out.println(Arrays.toString(strs));//[null, null, null, null]
    //这种方式的声明 是好比弄好了桌子 空桌子  
	
    }
}

三、对于第二种声明数组的赋值

通过数组的下标对数组赋值, 其中数组的下标都是从 0 开始数。

import java.util.Arrays;

public class Demo7 {

    public static void main(String[] args) {
    
    //第二种数组的声明方式 数据类型[]  数组的名字 = new  数据类型[容量];
    int[] arr = new int[3];//arr = {0,0,0};
    
    //对这个空的数组进行的的赋值
    arr[0] = 23;//将23 赋值给 arr这个数组下标为0 的位置 
    System.out.println(Arrays.toString(arr));//arr = [23, 0, 0];
    
    arr[1] = 45;
    System.out.println(Arrays.toString(arr));//arr = [23, 45, 0];
    
    arr[2] = 678;
    System.out.println(Arrays.toString(arr));//arr = [23, 45, 678];
    
    //arr[3] = 250;  这个下标越界	
    }
}

四、对数组进行取值

通过数组的下标对数组进行取值。

public class Demo8 {
    public static void main(String[] args) {
    
        int[] arr = {32, 45, 89, 12, 999, 5667};
        
        //获取数组中的值
        System.out.println(arr[0]);//32
        System.out.println(arr[1]);//45
        System.out.println(arr[2]);//89
        System.out.println(arr[3]);//12
		
        for (int i = 0; i < 4; i++) {
            //i的循环的值 刚好作为数组的下标
            System.out.println(arr[i]);
        }
		
        //数组.length    数组的长度
        
        String[] strs = {"张三", "狗蛋", "麻子", "李四"};
        for (int i = 0; i < strs.length; i++) {
            System.out.println(strs[i]);
        }	
    }
}

五、数组与方法的联系

1.数组可以作为方法的参数

2.数组可以作为方法的返回值

方法的参数和返回值可以是八大基本数据类型和String ,也可以是数组 。 示例:

public class Demo16 {
	public static void main(String[] args) {
		
		int[] arr = {1,23,3,1};//声明一个数组
		int a = getMaxIndexInArray(arr);//变量a 接收方法返回值
		System.out.println(a);
	}
	//定义一个方法,找出来一个int数组中最大的那个值的下标  有参 有返回值
	public static int getMaxIndexInArray (int[] arr) {
		int maxIndex = 0;//接最大值的下标
		for (int i = 1; i < arr.length; i++) {
			if (arr[maxIndex] < arr[i]) {
				maxIndex = i;
			}
		}
		return maxIndex;
	}
}

六、二维数组(扩充)

一维数组 [1,2,3,4] ,排成一条线

二维数组语法格式:

数据类型[][]  数组名字 = new  数据类型[容量][容量];

示例:声明一个二维数组 ,并对其进行赋值和取值。

import java.util.Arrays;

public class Demo18 {
	public static void main(String[] args) {
		int[][] arr = new int[2][3];
		
		arr[0][0] = 78;
		arr[0][1] = 89;
		arr[0][2] = 100;
		arr[1][0] = 250;
		arr[1][1] = 101;
		arr[1][2] = 99;
		
		//第一个[]  是行  第二个[] s是列
		//取数据  使用循环来取
		for (int i = 0; i < 2; i++) {//控制行
			for (int j = 0; j < 3; j++) {//控制列
				
				System.out.println(arr[i][j]);
			}
		}
	}
}

完结,撒花~