语言基础5 数组和[ 元素 ]

目录

1.定义

2.数组的初始化:动态/静态初始化

3.访问---长度 数组[下标]

4.遍历/迭代:for循环从头到尾输出 数组[循环数]

5.复制的2种方法和扩容

6.排序 Arrays.sort()


是一种引用数据类型

相同数据类型元素的集合 可以将数组理解为-----柜子[]

1.定义

数据类型数组 [] 数组名 = new 数据类型【元素个数】;

//1)数组的定义:
//声明整型数组a,包含5个元素,每个元素都是int类型,默认值为0
int[] a = new int[5];
//声明浮点型数组d,包含10个元素,每个元素都是double类型,默认值为0.0
double[] d = new double[10];
//声明布尔型数组c,包含26个元素,每个元素都是boolean类型,默认值为false
boolean[] c = new boolean[26];

2.数组的初始化:动态/静态初始化


    //2) 数组的初始化---初始化的是数组中的数据
    int[]arr =new int[5];//000 动态初始化

    int[]arr2=new int[]{2,5,8};//静态初始化
    int[]arr1={2,5,8};//静态初始化省略格式

    int[]arr3;
    //arr3=[2,5,8];编译错误,静态初始化省略格式只能声明同时初始化
    arr3=new int[]{2,5,8};

   动态初始化时的默认值:

    byte,short,int,long,char--------------0
   float,double--------------------------0.0
   boolean-------------------------------false

3.访问---长度 数组[下标]

  • 通过 (数组名.length)获取数组的长度(元素个数)
  • 通过下标/索引 数组[下标]来访问数组中的元素,下标从0开始,最大到(数组的长度-1)
 int[]arr=new int[3];
 System.out.println("arr的长度"+arr.length);//输出数组长度
 System.out.println(arr[0]);//输出数组第一个数的值
 arr[0]=100;
 arr[1]=200;
 arr[2]=300;
 //arr[3]=400;//没有报编译错误 数组下标越界异常ArrayIndexOutofBoundsException
 System.out.println(arr[arr.length-1]);//输出数组最后一个值

     

ArrayIndexOutOfBoundsException:数组下标越界异常

     > 数组下标为0到(数组长度-1),若超出这个范围则在运行时会发生数组下标越界异常

4.遍历/迭代:for循环从头到尾输出 数组[循环数]

int[] arr = new int[10];
for(int i=0;i<arr.length;i++){ //遍历arr数组
    arr[i] = (int)(Math.random()*100); //给每个元素赋值为0到99的随机数
    System.out.println(arr[i]); //输出每个元素的值
}

5.复制的2种方法和扩容

首先要:
import java.util.Arrays;

System.arraycopy(a,scrPos:0,b,destPos:0,4)  这种方法灵活性好

System.arraycopy(a,1,b,0,4);

 int[] a = {10,20,30,40,50};
       int[] b = new int[6]; //0,0,0,0,0,0
       //a:源数组
       //1:源数组的起始下标
       //b:目标数组
       //0:目标数组的起始下标
       //4:要复制的元素个数
       System.arraycopy(a,1,b,0,4); //灵活性好
       for(int i=0;i<b.length;i++){
           System.out.println(b[i]);
       }

int[] b = Arrays.copyOf(a,6);

 int[] a = {10,20,30,40,50};
       //a:源数组
       //b:目标数组
       //6:目标数组的长度
       //  ---若目标数组长度>源数组长度,则末尾补默认值
       //  ---若目标数组长度<源数组长度,则将末尾的截掉
       int[] b = Arrays.copyOf(a,6);
       for(int i=0;i<b.length;i++){
           System.out.println(b[i]);
       }

a = Arrays.copyOf(a,a.length+1);

 int[] a = {10,20,30,40,50};
       //数组的扩容(创建了一个更大的新的数组,并将数据复制进去)
       a = Arrays.copyOf(a,a.length+1);
       for(int i=0;i<a.length;i++){
           System.out.println(a[i]);
       }

综合练习 :找最大值并且扩容数组

//找最大值
//将最大值放在数组最后一个元素的下一个位置 --扩容
import java.util.Arrays;
public class bMaxOfArray {
    public static void main(String[] args) {
        //随机生成整数型数组arr,包含10个随机数
        int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random() * 100);
            System.out.println("arr[" + i + "]=" + arr[i]);
        }
        //遍历剩余元素 if剩余元素大于max 修改max为较大的
        //假设:int[]={8,35,78,5}
        // max=8/35/78
        int max = arr[0];
        for (int a = 1; a < arr.length; a++) {//遍历剩余元素
            if (arr[a] > max) {//如果剩余元素大于max
                max = arr[a];//修改max为较大的
            }
        }
        System.out.println("最大值为" + max);
        //扩容
        arr = Arrays.copyOf(arr, arr.length + 1);
        arr[arr.length - 1] = max;
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }


        //找最小值 随机生成数组 找最小值 扩容
        int[] arr1 = new int[10];
        for (int i = 0; i < arr1.length; i++) {
            arr1[i] = (int) (Math.random() * 100);
            System.out.println("arr[" + i + "]=" + arr[i]);
        }

        int min = arr1[0];
        for (int i = 0; i < arr1.length; i++) {
            if (min < arr[i]) {
                min = arr[i];
            }
        }
        System.out.println("最小值为" + min);
        //扩容
         Arrays.sort(arr1);

    }
}

6.排序 Arrays.sort()

  • Arrays.sort(arr); //升序

        排序是对数组所施加的比较常见的算法

int[] arr = new int[10];
       for(int i=0;i<arr.length;i++){
           arr[i] = (int)(Math.random()*100);
           System.out.println(arr[i]);
       }
       
       Arrays.sort(arr); //升序
       
       System.out.println("排序后:");
       for(int i=0;i<arr.length;i++){
           System.out.println(arr[i]);
       }
       
       System.out.println("倒着输出:");
       for(int i=arr.length-1;i>=0;i--){ //数据并没有改变,只是倒着展示而已
           System.out.println(arr[i]);
       }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值