数组知识点梳理

定义:

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

语法:
  • 声明数组: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]);
                }
            }
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值