数组知识点梳理

来源:互联网 发布:java链表实现 编辑:程序博客网 时间:2024/06/05 15:47

定义:

数组就是一个变量,用于将相同数据类型的数据存储在内存中,数组的每一个数据类型元素都属于同一数据类型。

语法:

  • 声明数组:int [ ]socres; int scores[ ];
  • 声明+分配空间:int [ ]scores=new int[30]; int scores [ ]=new int [30];
  • 赋值:
public static void main(String[] args) {        // 赋值方法1(逐个赋值)        int[] a=new int[3];         a[0]=44;         a[1]=66;         a[2]=77;         System.out.println("数组长度:"+a.length+","+a[1]);         //2和3方法无法分配空间,默认为赋值多少就是多少         //赋值方法2         int b[]={44,66,77};         System.out.println("数组长度:"+b.length+","+b[1]);         //赋值方法3(new int[]中的int必须为空)        int c[]=new int[]{44,66,77};         System.out.println("数组长度:"+c.length+","+c[1]);         //直接创建并赋值必须一并完成,以下是错误的:int[]score;score={50,40};    }

数组元素默认类型:

  • int:0
  • double:0.0
  • char:‘\u0000’
  • boolean:false

数组排序

    public static void main(String[] args) {        int scores[]={55,44,32,56,77,66};        for(int i=0;i<scores.length;i++){            System.out.println(scores[i]);        }        //只有Arrays.sort(scores)升序方法,无降序方法,降序需要改变for循环的操作        Arrays.sort(scores);        System.out.println("------升序-----------");        for(int i=0;i<scores.length;i++){            System.out.println(scores[i]);        }        System.out.println("-------降序----------");        //注意是scores.length-1,否则下标越界        for(int i=scores.length-1;i>=0;i--){            System.out.println(scores[i]);        }    }}

字符和数字的升降序(Array.sort()方法应用):

public static void main(String[] args) {        int scores[]={55,44,32,56,77,66};        for(int i=0;i<scores.length;i++){            System.out.println(scores[i]);        }        //只有Arrays.sort()升序方法,无降序方法,降序需要改变for循环的操作        Arrays.sort(scores);        System.out.println("------升序-----------");        for(int i=0;i<scores.length;i++){            System.out.println(scores[i]);        }        System.out.println("-------降序----------");        //注意是scores.length-1,否则下标越界        for(int i=scores.length-1;i>=0;i--){            System.out.println(scores[i]);        }        //字母升降序        String code[]={"as","sf","sr","ews","es","ds"};        for(int i=0;i<code.length;i++){            System.out.println(code[i]);        }        //只有Arrays.sort()升序方法,无降序方法,降序需要改变for循环的操作        Arrays.sort(code);        System.out.println("------升序-----------");        for(int i=0;i<code.length;i++){            System.out.println(code[i]);        }        System.out.println("-------降序----------");        //注意是scores.length-1,否则下标越界        for(int i=code.length-1;i>=0;i--){            System.out.println(code[i]);        }    }

插入元素并排列顺序

public static void main(String[] args) {        // TODO Auto-generated method stub        {            int list[]=new int[6];            list[0]=95;            list[1]=86;            list[2]=73;            list[3]=68;            list[4]=53;            int num=77;            int index=0;            for(int i=0;i<list.length;i++){                if(num>list[i]){                    index=i;                    break;                }                }            System.out.println("下标:"+index);            for(int j=list.length-1;j>index;j--){                //list[5]=list[4]以此类推到list[inedx+1]为止                list[j]=list[j-1];            }            System.out.println("成绩:");            list[index]=num;            for(int k=0;k<list.length;k++){                System.out.println(list[k]);            }            }        }

Arrays类常用方法

Arrays.equals(array1,array2):比较两个数组是否相等

public static void main(String[] args) {        // TODO Auto-generated method stub        {            int arr1[]={20,20,20};            int arr2[]=new int[]{20,20};            System.out.print(Arrays.equals(arr1, arr2));        }    }

Arrays.sort(array):升序(代码略,见前文)
Arrays.toString(array):将一个数组转换成字符串

public static void main(String[] args) {        // TODO Auto-generated method stub        {            int arr1[]={20,20,20};            //输出结果[20, 20, 20]            System.out.print(Arrays.toString(arr1));        }    }

Arrays.fill(array,val):将所有数组元素赋值为val

public static void main(String[] args) {        // TODO Auto-generated method stub        {            int arr1[]=new int[5];            Arrays.fill(arr1, 20);            //输出结果[20, 20, 20, 20, 20]            System.out.print(Arrays.toString(arr1));        }    }

Arrays.copyOf(array,length):将数组赋值为一个长度为length的新数组

    public static void main(String[] args) {        // TODO Auto-generated method stub        {            int arr1[]=new int[5];            Arrays.fill(arr1, 20);            int arr2[]=Arrays.copyOf(arr1, 8);            //输出结果[20, 20, 20, 20, 20, 0, 0, 0]            System.out.print(Arrays.toString(arr2));        }    }

Arrays.binarySearch(array,val):查询元素val在数组中的下标

    public static void main(String[] args) {        // TODO Auto-generated method stub        {            int arr1[]=new int[]{20,30,21,22,39};            //输出结果3            System.out.print(Arrays.binarySearch(arr1, 22));        }    }

二维数组

定义:从内存分配原理上说,Java只有一维数组没有二维数组,二维数组只不过是一堆一维数组,其中每个数组元素又是数组类型而已,例如,int s[][]=new int [1][2]相当于s[0]中有2个数组元素s[0][0]和s[0][1]。
语法:

public static void main(String[] args) {        {            // 赋值方法1(逐个赋值)            int[][] a=new int[3][4];             a[0][1]=44;             a[0][2]=66;             a[2][1]=77;             System.out.println("数组长度:"+a.length+","+a[2][1]);             //2和3方法无法分配空间,默认为赋值多少就是多少             //赋值方法2             int b[][]={{1,2,3},{22,3},{4,5,6}};             System.out.println("数组长度:"+b.length+","+b[1][0]);             //赋值方法3(new int[][]中的[][]必须为空)            int c[][]=new int[][]{{44,66,77},{23,4,5}};             System.out.println("数组长度:"+c.length+","+c[1][1]);             //直接创建并赋值必须一并完成,以下是错误的:int[]score;score={50,40};        }    }

遍历:

public static void main(String[] args) {        {            int[][]a={{22,34,4},{12},{33,44}};            for(int i=0;i<a.length;i++){            //注意:a[i].length的使用                for(int j=0;j<a[i].length;j++){                    System.out.println(a[i][j]);                }            }        }    }
原创粉丝点击