100天精通Java (基础篇) —数组【Java第一个分水岭】

目录

一、为什么需要数组

二、数组介绍

三、数组快速入门

 四、数组的使用

五、使用方法

1、动态初始化

2、静态初始化

六、数组使用注意事项和细节

七、数组应用实例

八、数组赋值机制

九、数组拷贝

十、数组反转


一、为什么需要数组

数组:多个内存变量元素,共同使用一个变量名称,并用下标加以区分。

二、数组介绍

数组可以存放多个同一类型的数据,数组也是一种数据类型,是引用类型。

三、数组快速入门

跟着思路看(超级简单)

package com;

public class Array01 {
    public static void main(String[] args) {
        //定义一个数组
        double[] hens = {2,2,3,4,5,6,34,12,34,23};
        //遍历数组,得到数组的多有元素的和,使用for
        //我们可以通过 hens[下标] 来访问数组的元素
        //下标是从 0 开始编号的  比如数组的第一个元素是 hens[0]
        //第二个元素是 hens[1], 以此类推

        System.out.println("===使用数组解决===");
        //数组名.length 得到数组的大小/长度
        System.out.println("数组的大小为" + hens.length );

        //通过 for 就可以循环的访问数组的元素
        //使用一个变量 totalWeight 将各个元素累积
        double totalWeight = 0;
        for (int i = 0 ; i < hens.length ; i ++){
            totalWeight += hens[i];
        }
        //容易犯的小错误:for循环中的 ; 打成了 , 
        System.out.println("总数为" + totalWeight + "\t平均体重" + totalWeight/hens.length);
    }
}

 四、数组的使用

package com;
import java.util.Scanner;

public class Array02 {
    public static void main(String[] args) {
        //数据类型[] 数组名 = new 数据类型[大小]
        //循环输入10个成绩, 保存到double数组中,并输出
        double[] scores = new double[10];//声明数组, 这时的 scores 是 null
        /*
        double scores[];
        scores = new double[10];
        */
        Scanner myScanner = new Scanner(System.in);
        for (int i = 0 ; i < 10 ; i ++ ){
            System.out.println("请输入第"+ (i+1) + "个元素的值");
            scores[i] = myScanner.nextDouble();
        }
        //输出  遍历数组
        for (int i = 0 ; i < 10 ; i ++){
            System.out.println("数组的第" + (i+1) +"个元素值是" + scores[i]);
        }
    }
}

五、使用方法

1、动态初始化

先声明数组:

语法: 数据类型[] 数组名 ; 数据类型  数组名[];

int array[];  int[] array;

创建数组:

语法:数组名 =  new 数据类型[大小];

array = new int[10];

2、静态初始化

语法:数据类型[] 数组名 = new 数据类型[];

六、数组使用注意事项和细节

1、数组是多个相同数据类型的结合,实现对这些数据的统一管理

2、数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型, 但是不能混合

3、数组创建后,如果没有赋值,有默认值

int 0, short 0, byte 0, long 0, float 0, double 0.0, char \u0000, boolean false, String null

4、使用数组的步骤: 声明数组类型并开辟空间->给各个数组元素赋值->使用数组

5、数组的下标是从0 开始的

6、数组下标必须是在指定范围内使用,否则报错

7、数组属于引用类型, 数组型数据是对象(object)

七、数组应用实例

     求出一个数组的最大值,并得到对应的下标

package com;
//求出一个数组的最大值,并得到对应的下标
import java.util.Scanner;
public class ArrayExercise02 {
    public static void main(String[] args) {
        /*
        思路分析:
        1、定义一个数组
        2、假设 max = array[0]是最大值,maxIndex = 0;
        3、从下标 1 开始遍历array, 假如 max < 当前值,说明 max 不是真正的max,
        就需要max= 当前值,maxIndex = 当前元素下标
        4、当遍历array后,此时的max和maxIndex才是正确的
        */
        int[] array = new int[5];
        Scanner myScanner = new Scanner(System.in);
        for (int i = 0 ; i < array.length; i++){
            System.out.println("请输入第" + (i+1) + "个数组的元素:");
            array[i] = myScanner.nextInt();//记住java输入方法
        }
//        int[] array = {34,23,54,46,67,42,67};
        int max = array[0];
        int maxIndex = 0;
        for (int i = 1; i < array.length; i++){
            if (max < array[i]){
                max = array[i];
                maxIndex = i;
            }
        }
        System.out.println("该数组最大值为:" + max +"\n最大值的下标为:" + maxIndex );
    }
}

八、数组赋值机制

1、基本数据类型赋值,  这个值就是具体的数据,而且相互不影响

int n1 = 2;int n2 = n1;

2、数组在默认情况下是引用传递,赋的值是地址。

九、数组拷贝

package com;
/*
编写数组,实现数组拷贝
将 int[]array1 拷贝到array2数组中,要求数据空间是独立的
*/
import java.util.Scanner;
public class ArrayCopy {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入array1数组的大小:");
        int size = myScanner.nextInt();
        int[] array1 = new int[size];

        for (int i = 0; i < array1.length; i++){
            System.out.println("请输入第"+ (i+1) +"个数组的元素:");
            array1[i] = myScanner.nextInt();
        }
        //输入array1的数组元素
        int[] array2 = new int[array1.length];
        for (int i = 0; i < array2.length; i++){
            array2[i] = array1[i];
        }
        //将array1数组的元素拷贝到array2数组中

        System.out.println("输出数组array1的元素:");
        for (int i = 0; i < array1.length; i++){
            System.out.println(array1[i]);
        }
        System.out.println("输出数组array2的元素:");
        for (int i = 0; i < array2.length; i++){
            System.out.println(array2[i]);
        }
    }
}

十、数组反转

// 方法一:通过找规律反转
public class ArrayReverse {
    public static void main(String[] args) {

        int array1[] = {1,2,3,4,5,6,7};
        System.out.println("反转前数组元素为:");
        for (int i = 0; i < array1.length; i++){
            System.out.println(array1[i]);
        }
         for (int i = 0; i < array1.length/2; i++){
             int temp = array1[array1.length-i-1];
             array1[array1.length-i-1] = array1[i];
             array1[i] = temp;
        }

        System.out.println("反转后数组元素为:");
         for (int i = 0; i < array1.length; i++){
             System.out.println(array1[i]);
         }
    }
}
//方法二:使用逆序赋值方式
public class ArrayReverse {
    public static void main(String[] args) {
        int[] array1 = {1,2,3,4,5,6,7};
        System.out.println("反转前数组元素为:");
        for (int i = 0; i <array1.length; i++){
            System.out.println(array1[i]);
        }

        int[] array2 = new int[array1.length];
        for (int i = array1.length-1, j = 0; i >= 0; i--, j++){
            array2[j] = array1[i];
        }
        array1 = array2;
        System.out.println("反转后数组元素为:");
        for (int i = 0; i <array1.length; i++){
            System.out.println(array1[i]);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹本实

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值