数组的定义和访问

时间:2020-8-23 作者:admin


1、数组(容器)概述

案例分析
假如需要统计某公司员工的工资情况,例如计算平均工资、最高工资、最低工资等。假设该公司有500名员工,用前面学的知识,程序员首先需要声明500个变量分别存储每位员工的工资,然后在进行操作,这样做会很麻烦的,而且错误率也会很高,因此我们可以使用数组(容器)进行操作,将所有的数据全部存储到一个数组中,统一操作。

容器概念
容器:是将多个数据存储到一起,每个数据称为该容器的元素。

2、数组概念

数组概念:数组就是存储一组相同类型数据的数据结构。
数组本身属于引用类型
数组中的元素可以是基本数据类型,也可以是引用类型。
【引用类型包括:数组、类、接口】

3、数组的定义

语法一:

语法:

数组存储的数据类型[] 数组名字=new 数组存储的数据类型[长度];

数组定义语法详解:
1.数组存储的数据类型:创建的数组可以存储什么类型的数据
2.[]:表示数组
3.数组名字:定义的数组需要起个变量名,满足标识符规范,可以使用数组名字对数组进行操作。
4.new:关键字,创建数组使用的关键字。
5.数组存储的数据类型:必须要和前面的数据类型一致
6.[长度]:数组的长度,表示数组中可以存储多个元素
7.注意:数组是定长特性,长度一旦指定,就不可更改。

举例:
定义可以存储5个整数的数组,代码如下:

int[]nums=new int[5];
char[]c=new char[5];
boolean[]b=new boolean[2];
String[]str=new String[5];

语法二:

语法:

数据类型[]数组名=new 数据类型[]{元素1,元素2,元素3,};

这种语法,属于在创建数组时,就对数组进行初始化操作。
[]:不需要指定数组的长度,数组的长度由{}中元素的个数来决定。

例如:

int[]arr=new int[]{1,2,3,4,5}

语法三:

语法:

数据类型[]数组名={元素1,元素2,元素3,元素4,};

例如:

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

4、数组的访问

1.索引:每一个存储到数组的元素,都会自动拥有一个整数编号,从0开始,这个自动编号称为数组索引(index)或下标,可以通过数组的索引访问到数组中的元素。
2.语法:数组名[索引]
3.数组的长度属性:每个数组都具有长度,而且是固定的,java中赋予了数组一个属性,可以获取数组的长度,语法为:数组名.length,属性length的执行结果就是数组的长度。由此可以推断出数组的最大索引值为数组长度-1,也就是数组名.length-1.

4.索引访问数组的元素
数组名[索引]=数值,为数组的元素赋值
数组名[索引],获取数组中的元素

package com.bdit;
/*
* 数组的定义和使用
*
* */
public class Test1 {
    public static void main(String[] args) {

        /*
         * 数组的定义,语法一,动态赋值,其实就是根据下标
         * 数据类型[] 数组名称=new 数据类型[数组的长度];
        */
        int[]nums1=new int[5];
        int nums2[]=new int[5];
        nums1[0]=10;
        nums1[1]=20;
        nums1[2]=30;
        nums1[3]=40;
        nums1[4]=50;
        System.out.println(nums1[0]);
        for(int i=0;i< nums1.length;i++){
            System.out.println("*******>"+nums1[i]);
        }

        System.out.println("=============================================");

        /*
        * 数组的定义,语法二:
 		* 数据类型[] 数组名称=new 数据类型[]{元素1,元素2,元素3,元素4,元素5};
       	*/
        double[]nums3=new double[]{1.1,1.2,1.3,1.4,1.5};

        for(int i=0;i<nums3.length;i++){
            System.out.println("----->"+nums3[i]);
        }
        System.out.println("=============================================");

        /*
        * 数组的定义,语法三,称为边声明边赋值
        * 数据类型[] 数组名称={元素1,元素2,元素3,元素4,元素5};
        * */
        char[] chars={'a','b','c','d','e'};

        /*
        * 数组的遍历
        */
        System.out.println(chars[0]);
        System.out.println(chars[1]);
        System.out.println(chars[2]);
        System.out.println(chars[3]);
        System.out.println(chars[4]);

        System.out.println("chars数组的长度:"+chars.length);
    }
}

5、数组的常见操作

数组越界异常:
观察以下代码,运行后会出现什么问题?

public static void main(String[] args) {
        int[]arrs={1,2,3};
        System.out.println(arrs[3]);
    }

创建数组,赋值3个元素,数组的索引就是0,1,2,没有3索引,因此我们不能访问数组中不存在的索引,程序运行后,将会抛出ArrayIndexOutOfBoundsException数组索引越界异常。

数组空指针异常

public static void main(String[] args) {
        int[]arr=null;//数组属于引用类型,如果给引用类型赋值为空,那就是null
        System.out.println(arr[0]);
    }

以上代码,在运行过程中,因为数组arr=nulll,索引再访问数组中的元素时,会产生一个NullPointerException空指针异常。

数组的遍历【重点】**

public static void main(String[] args) {
        int[]nums=new int[]{1,2,3,4,5,6,7,8,9};

        for(int i=0;i<nums.length;i++){
            System.out.println(nums[i]);
        }
    }

数组的反转,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1

数组的反转:数组中的元素颠倒顺序

实现思路:
实现反转,就需要将数组最远端元素位置交换
定义两个变量,保存数组的最小索引和最大索引
两个索引上的元素交换位置
最小索引++,最大索引–,再次交换位置
最小索引超过了最大索引,数组反转操作结束

package com.bdit;
/*
数组的反转,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1
 */
public class Test7 {
    public static void main(String[] args) {
        int[]arr={1,2,3,4,5};
        //获取最大索引
        int max=arr.length-1;
        for(int min=0;min<=max;min++){
            //利用第三方变量完成数组中的元素交换
            int temp=arr[min];
            arr[min]=arr[max];
            arr[max]=temp;
            max--;//最大索引
        }

        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}

6、练习

计算某个数组中所有元素的和以及平均数

package com.bdit;
/*
*  求数组中所有元素的和、平均数
* */
public class Test3 {

    public static void main(String[] args) {
        int[]nums=new int[]{19,22,34,10,76,54,88};
        int sum=0;
        for(int i=0;i<nums.length;i++){
            sum+=nums[i];//sum=sum+nums[i]
        }
        double avg=sum/ nums.length;
        System.out.println("和:"+sum+",平均数:"+avg);
    }
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。