Java学习之基础训练二-----数组定义、赋值、求最值、排序、复制、扩容

来源:互联网 发布:驾驶员网络培训 编辑:程序博客网 时间:2024/06/14 20:35

数组练习


数组的定义

  • 1.指定数组的中的元素个数,默认值为0,如: int[] arr1 = new int[4];
  • 2.定义数组并赋初值,如:int[] arr2 = {1,4,5,6};注:此方式只能声明的同时赋值,不可分开。
  • 3.定义的同时赋值,如:int[] arr3 = new int[]{1,4,5,6};

代码:

public class ArrayDemo {//类名    public static void main(String[] args) {//主函数           int[] arr1 = new int[4]; //默认值为0,0,0,0        int[] arr2 = {1,4,5,6}; //1,4,5,6        int[] arr3 = new int[]{1,4,5,6}; //1,4,5,6        int[] arr4;        //arr4 = {1,4,5,6}; //编译错误,此方式只能声明同时初始化        arr4 = new int[]{1,4,5,6}; //正确    }}

数组下标越界异常
代码:

public class ArrayDemo {//类名    public static void main(String[] args) {//主函数           int[] arr = new int[3];//定义一个含有3个元素的空数组        System.out.println(arr.length);//输出数组的长度        arr[0] = 100;//给数组下标为0,也就是第一个元素赋值100        arr[1] = 200;        arr[2] = 300;        //arr[3] = 400; //数组下标越界异常        System.out.println(arr[arr.length-1]);//输出数组最后一个元素    }}

运行结果:
这里写图片描述

给数组随机赋值并输出
代码:

public class ArrayDemo {//类名    public static void main(String[] args) {//主函数           int[] arr = new int[10];//定义数组        for(int i=0;i<arr.length;i++){//for循环遍历数组            arr[i] = (int)(Math.random()*100);//给数组的每个元素依次赋随机值            System.out.print(arr[i]+" ");//输出每个元素        }        System.out.println();//换行        System.out.println(arr);//这个输出的会是数组的地址而不是数组的内容    }}

运行结果:
这里写图片描述

求数组的最大值
代码:

public class MaxOfArray {//类名    public static void main(String[] args) {//主函数        int[] arr = new int[10];//定义数组        for(int i=0;i<arr.length;i++){//遍历数组            arr[i] = (int)(Math.random()*100);//赋值            System.out.print(arr[i]+" ");//输出每个元素        }               int max = arr[0]; //假设第1个元素为最大值        for(int i=1;i<arr.length;i++){ //遍历剩余元素            if(arr[i]>max){ //若剩余元素大于max  要求最小值将>换成<即可                max=arr[i]; //修改max为较大的值            }        }        System.out.println("最大值为:"+max);            }}

运行结果:
这里写图片描述

数组的排序

  • 数组排序有java提供的方法,直接调用即可。
    升序:Arrays.sort(arr);
  • 自定义排序

代码:

public class Demo07 {    public static void main(String[] args) {        int[] arr = new int[10];//定义一个10个元素的空数组        for(int i=0;i<arr.length;i++) {//for循环,遍历数组            int num =(int)(Math.random()*100);//随机生成0-100的整数            arr[i] = num;//并赋值给数组下标为i的元素            System.out.print(arr[i]+" ");//控制台输出,并加上空格        }        System.out.println();//转行        //方法一直接调用java提供的升序函数//      Arrays.sort(arr);        //方法二,自定义函数        rank(arr);//调用rank()函数排序        for(int i=0;i<arr.length;i++) {//for循环,遍历数组            System.out.print(arr[i]+" ");//输出每个元素        }    }    //自定义数组排序函数    public static int[] rank(int[] arr) {        for(int i=0;i<arr.length-1;i++) {//控制轮            for(int j=0;j<arr.length-1-i;j++) {//控制次数                if(arr[j]>arr[j+1]){ //和它下一个元素比                    int t = arr[j];//记录一个元素                    arr[j] = arr[j+1];//交换                    arr[j+1] = t;//记录的赋给下一个元素                }            }        }        return arr;//返回排序后的数组    }}

运行结果:
这里写图片描述

数组的复制

代码1:

public class ArrayDemo {    public static void main(String[] args) {        int[] a = {20,15,10,40,50};        //a:源数组        //a1:目标数组        //4:目标数组的长度        int[] a1 = Arrays.copyOf(a,4); //不灵活、效率低        for(int i=0;i<a1.length;i++){//遍历数组            System.out.print(a1[i]+" ");        }    }}

运行结果:

这里写图片描述

代码2:

public class ArrayDemo {//类名    public static void main(String[] args) {//主函数        int[] a = {10,20,30,40,50};        int[] a1 = new int[6];        //a:源数组        //1:源数组的起始下标        //a1:目标数组        //0:目标数组的起始下标        //4:要复制的元素的个数        System.arraycopy(a,1,a1,0,4); //灵活、效率高        //目标数组有6个元素,只复制了4个过来,剩余的为默认值0        for(int i=0;i<a1.length;i++){            System.out.println(a1[i]);        }    }}

运行结果:
这里写图片描述

数组的扩容

  • 数组的扩容就是数组复制Arrays.copyOf(a,a.length+1);
    a.length+1表示扩容一个
    a.length-1表示缩容一个

代码:

public class ArrayDemo {    public static void main(String[] args) {        int[] a = {10,20,30,40,50};        //数组的扩容(创建了一个新的数组并将源数组数据复制过去)        a = Arrays.copyOf(a,a.length+1);//扩容一个        for(int i=0;i<a.length;i++){            System.out.print(a[i]+" ");//扩容的一个为默认值0        }    }}

运行结果:

这里写图片描述

原创粉丝点击