Java的数组使用

数组的定义:

package The_First_Stage.The_beginner_level_Java_SE.Arrawy;

/**
 * 数组的作用:用来存储相同类型的数据
 * 以int类型数据为案例:数组用来存储int类型数据
 * 1》声明定义数组
 * int【】 arr   定义一个int类型的数组,名字为arr
 * int arr2【】
 * 如果数组只声明,没有后续操作,那么这个数组相当于没有定义
 * int 【】 arr3=null; 空  数组赋值为null和和什么都没有赋值 不一样的效果
 *
 * 2》创建
 * arr=new int【4】;  给数组开辟了一个长度为4的空间
 * int 【】arr=new int【4】;声明和创建和为一句话
 * 3》赋值
 * arr[0]=12;
 * arr[1]=1255;
 * arr[2]=1;
 * arr[3]=232;
 * ====================arr[4]=16452;-------------数组索引越界
 *
 * 4》使用
 *System.out.println(arr[1]);
 *数组的长度
 * System.out.println(arr.length);
 *
 *
 */
public class TestArray02 {
    public static void main(String[] args) {


    }
}

数组的使用:

package The_First_Stage.The_beginner_level_Java_SE.Arrawy;

import java.util.Scanner;

/**
 * 功能:键盘录入十个学生的成绩,求和,求平均数
 *
 */
public class TestArray03 {
    public static void main(String[] args) {
        int[] scores=new int[10];
        int sum=0;
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i < 10; i++) {
            System.out.println("请录入第"+(i+1)+"个学生的成绩");
            int score=sc.nextInt();
            scores[i]=score;
            sum+=score;
        }
        System.out.println("十个学生的成句之和为"+sum);
        System.out.println("十个学生成绩平均数为:"+sum/10);

        //求取第6个学生的成绩
//        System.out.println(scores[5]);

        //数组的遍历----》方式一
//        for (int i = 0; i <= 9; i++) {
//            System.out.println(scores[i]);
//        }
        //增强for循环 ----------》方式二
        //对scores数组进行遍历,遍历出来每个元素都用int类型的num接收:
//        int count=0;
//        for(int num:scores){
//            //每次豆浆num在控制台输出
//            System.out.println("第"+count+"个学生的成绩为:"+num);
//        }
/**
 * 增强for循环
 * 优点:代码简单
 * 缺点:单纯的增强for循环不能涉及跟索引相关的操作
 */
//方式三:利用普通的for循环:逆向遍历:
        for (int i=9;i>=0;i++){
            System.out.println(scores[i]);
        }
    }
}

求取数组中的最大值

package The_First_Stage.The_beginner_level_Java_SE.Arrawy;

/**
 * 求最大值
 */
public class TestArray04 {
    public static void main(String[] args) {
        //1.定义一个数组
        int[] arr = {12, 3, 7, 4, 8, 125, 9, 45, 666, 36};
        //2.求出数组中的最大值:
        int num = getMaxNum(arr);
        System.out.println("当前数组中最大的数为:" + num);

    }
    public static int getMaxNum(int[] arr) {
        int maxNum = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > maxNum) {
                maxNum = arr[i];
            }
        }
        return maxNum;
    }
}

查询元素对应的索引

package The_First_Stage.The_beginner_level_Java_SE.Arrawy;

public class TestArray05 {
    public static void main(String[] args) {
        int[] arr={12,34,56,7,3,10};

        System.out.println(arr[2]);

        //查询56对应的索引
        int index=getindex(arr,56);
       if (index!=-1){
           System.out.println("元素对应的索引:"+index);
       }else {
           System.out.println("查无此书!");
       }
    }
    public static int getindex(int []arr,int ele){
        int index=-1;//初始值只要不是数组的索引就行
        for (int i=0;i<arr.length;i++){
            if(arr[i]==ele){
                index=i;//只要找到了元素,那么index就变成i
                break;
            }
        }
        return index;
    }
}

数组添加元素

package The_First_Stage.The_beginner_level_Java_SE.Arrawy;

import java.util.Scanner;

public class TestArray07 {
    public static void main(String[] args) {
        //给定一个数组,在数组下标为2的位置上添加一个元素91

        int[] arr = {12, 34, 56, 7, 3, 10};
        //输出增加元素前的数组
        System.out.print("增加元素前的数组:");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                System.out.print(arr[i] + ",");
            } else {
                System.out.print(arr[i]);
            }
        }
//从键盘接受数据
        Scanner sc=new Scanner(System.in);
        System.out.print("\n请录入你要添加元素的指定下标:");
        int index=sc.nextInt();
        System.out.print("请录入你要添加的元素:");
        int ele=sc.nextInt();

        //增加元素
        insertEle(arr,index,ele);
/**
 * arr[5]=arr[4];
 *  arr[4]=arr[3];
 *  arr[3]=arr[2];
 */

        //输出后增加元素后的数组
        System.out.print("\n增加元素后的数组:");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                System.out.print(arr[i] + ",");
            } else {
                System.out.print(arr[i]);
            }
        }
    }

    /**
     * 提起一个添加元素的方法:
     * 在数组的指定位置上添加一个指定的元素
     * 在哪个数组的哪个位置添加哪个元素
     * 不确定因素:形参:哪个数组,哪个位置,哪个元素
     * 返回值:无
     */
public static  void  insertEle(int []arr,int index ,int ele){

    for (int i = arr.length - 1; i >= (index+1); i--) {
        arr[i] = arr[i - 1];
    }
    arr[index] = ele;


}



}

删除数组元素

/**
 * @Author zhengwang
 * @Date 2023/11/7 10:45
 * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
 * @ClassName: TestArray08
 * @Description: TODO 给定一个数组,删除下标为2元素
 * @Version 1.0
 */
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;


import java.util.Arrays;

public class TestArray08 {
    public static void main(String[] args) {
        int[] arr = {12, 34, 56, 7, 3, 10};
//输出删除前的数组:
        System.out.println("删除前的数组" + Arrays.toString(arr));
        //删除
//        arr[2]=arr[3];
//        arr[3]=arr[4];
//        arr[4]=arr[5];
        int index = 2;
        for (int i = index; i <= arr.length - 2; i++) {
            arr[i] = arr[i + 1];
        }
        arr[arr.length - 1] = 0;

        //输出删除后的数组
        System.out.println("删除后的数组" + Arrays.toString(arr));


    }
}

/**
 * @Author zhengwang
 * @Date 2023/11/7 11:02
 * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
 * @ClassName: TestArray09
 * @Description: TODO
 * @Version 1.0
 */
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;

import java.util.Arrays;

public class TestArray09 {
    public static void main(String[] args) {
        int[] arr = {12, 34, 56, 7, 3, 10,34,45,56,7,666};
//输出删除前的数组:
        System.out.println("删除前的数组" + Arrays.toString(arr));

        //找到要删除的元素对应的索引即可
        int index = -1;
        for (int i=0;i<arr.length;i++){
            if (arr[i]==333){
                index=i;
                break;
            }
        }

        //删除
//        arr[2]=arr[3];
//        arr[3]=arr[4];
//        arr[4]=arr[5];
//        int index = 2;
       if (index!=-1){
           for (int i = index; i <= arr.length - 2; i++) {
               arr[i] = arr[i + 1];
           }
           arr[arr.length - 1] = 0;
       }else {
           System.out.println("根本没有你要删除的元素!");
       }

        //输出删除后的数组
        System.out.println("删除后的数组" + Arrays.toString(arr));


    }
}

可变参数

/**
 * @Author zhengwang
 * @Date 2023/11/7 14:09
 * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
 * @ClassName: TestArray12
 * @Description: TODO1)可变参数:作用提供了一个方法,参数的个数是可变的,解决了部分方法重载问题
 * int...num
 * double...num
 * boolean...num
 *
 * 2)可变参数在JDK1.5之后加入的新特性
 *3)方法的内部对可变参数的处理跟数组是一样的
 *4)可变参数和其它数据一起作为形参的时候,可变参数一定要放到最后
 * 5)我们自己在写代码的时候,建议不要使用可变参数
 * @Version 1.0
 */
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;

public class TestArray12 {
    public static void main(String[] args) {
//        method01(10);
//        method01();
//        method01(20,30,40);
        method01(30,40,50,60,70);
//        method01(new int[]{11,22,33,44});
    }
    public static  void  method01(int num2,int...num){
        System.out.println("--------------1");
        for (int i:num){
            System.out.println(i+"\t");
        }
        System.out.println();
        System.out.println(num2);
    }

}

数组的复制

/**
 * @Author zhengwang
 * @Date 2023/11/7 14:53
 * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
 * @ClassName: TestArray13
 * @Description: TODO
 * @Version 1.0
 */
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;

import java.util.Arrays;

public class TestArray13 {
    public static void main(String[] args) {

        //给定一个数组:
        int[] arr={1,3,7,2,4,8};
        //toString:对数组进行遍历查看,返回的是一个字符串,这个字符串比较好看
        System.out.println(Arrays.toString(arr));

        //binarySearch:二分法查找,找出指定数组中的指定元素对应的索引
        //这个方法的使用的前提:一定要查看的是一个有序的数组:
        //sort:排序----》升序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.binarySearch(arr,4));


        int[] arr2={1,3,7,2,4,8};
        //copyOf:完成数组的复制
        int [] newArr=Arrays.copyOf(arr2,4);
        System.out.println(Arrays.toString(newArr));

        //copyOfRange:区间复制:
        int [] newArr2=Arrays.copyOfRange(arr2,1,4);//[1,4)---->1,2,3位置
        System.out.println(Arrays.toString(newArr2));

        //equals:比较两个数组的值是否一样:
        int[] arr3={1,3,7,2,4,8};
        int[] arr4={1,3,7,2,4,8};
        System.out.println(Arrays.equals(arr3,arr4));//true
        System.out.println(arr3==arr4);// false  ==比较左右两侧的值是否相等  比较的是左右的地址值,返回结果一定是false

        //fill:数组的填充
        int[] arr5={1,3,7,2,4,8};
        Arrays.fill(arr5,11);
        System.out.println(Arrays.toString(arr5));




    }
}

/**
 * @Author zhengwang
 * @Date 2023/11/7 16:19
 * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
 * @ClassName: TestArray14
 * @Description: TODO
 * @Version 1.0
 */
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;

import java.lang.reflect.Array;
import java.util.Arrays;

public class TestArray14 {
    public static void main(String[] args) {
        //给一个源数组
        int [] srcArr={11,22,33,44,55,66,77,88};
        //给一个目标数组:
        int [] destArr=new int[10];

        //复制
        System.arraycopy(srcArr,1,destArr,3,3);
        //遍历查看目标数组:
        System.out.println(Arrays.toString(destArr));
    }
}

二维数组的遍历

/**
 * @Author zhengwang
 * @Date 2023/11/7 16:36
 * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
 * @ClassName: TestArray15
 * @Description: TODO--二维数组的定义与遍历
 * @Version 1.0
 */
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;

public class TestArray15 {
    public static void main(String[] args) {
        //定义一个二维数组
        int[][] arr=new int[3][];//本质上定义了一个一维数组,长度为3
        int[] a1={1,2,3};
        arr[0]=a1;
        arr[1]=new int[]{4,5,6,7};
        arr[2]=new int[]{9,10};

        //读取6这个元素
//        System.out.println(arr[1][2]);
        //遍历二维数组
        //方式1:外层普通for循环+内层普通for循环:
//        for (int i = 0; i <= 2; i++) {
//            for (int j=0;j<arr[i].length;j++){
//                System.out.print(arr[i][j]+"\t");
//            }
//            System.out.println();
//        }
        //方式2:外层普通for循环+内层增强for循环
//        for (int i=0;i<arr.length;i++){
//            for (int num:arr[i]){
//                System.out.print(num+"\t");
//            }
//            System.out.println();
//        }

        //方式3:外层增强for循环+内层增强for循环
//        for (int[]a:arr){
//            for (int num:a){
//                System.out.print(num+"\t");
//            }
//            System.out.println();
//        }
         //方式5:外层增强for循环+内层普通for循环
        for (int[]a:arr){
            for (int i=0;i<a.length;i++){
                System.out.print(a[i]+"\t");
            }
            System.out.println();
        }
    }
}

/**
 * @Author zhengwang
 * @Date 2023/11/7 16:57
 * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
 * @ClassName: TestArray16
 * @Description: TODO
 * @Version 1.0
 */
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;

public class TestArray16 {
    public static void main(String[] args) {
        int[][] arr=new int[3][2];
        //本质上:定义一维数组,长度为3,每个数组“格子”中,有一个默认的长度为2的数组

        arr[1]=new int[]{1,2,3,4};
        //数组遍历
        for (int[] a:arr){
            for (int num:a){
                System.out.print(num+"\t");
            }
            System.out.println();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值