Java引用数据类型之数组

一.数组定义

  • 同一种类型数据的集合。其实数组就是一个容器。

二.数组格式

  • 格式一 :数据类型[] 数组名 = new 数据类型[数组长度];
  • 格式二 :数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3};
  • 格式三 :数据类型[] 数组名 = {数据1,数据2,数据3};
public class GArray {
    public static void main(String []args){
        //格式一:
        //1.定义数组
        int[] scores = new int[5];
        //2.填充数组
        scores[0] = 10;
        scores[1] = 20;
        scores[2] = 30;
        scores[3] = 40;
        scores[4] = 50;
        //3.打印数组
        for(int i = 0;i<scores.length;i++){
            System.out.println("第"+i+"个数组元素为:" +scores[i]);
        }

        //格式二:
        int[] arr = new int[]{25,35,10,95,46,80};
        for(int i = 0;i < arr.length; i++){
            System.out.println("arr["+i+"]="+arr[i]);

        }

        //格式三
        int[] arr3 = {25,10,23,65,85,12,97};
        for(int i = 0;i < arr3.length; i++){
            System.out.println(arr3[i]);
        }
    }
}

三.数组操作常见问题

  • ArrayIndexOutOfBoundsException 数组脚标越界异常
    int[] arr = new int[2];
    System.out.println(arr[3]);
    访问到了数组中的不存在的脚标时发生。
  • NullPointerException 空指针异常
    int[] arr = null;
    System.out.println(arr[0]);
    arr引用没有指向实体,却在操作实体中的元素时。

四.数组常用操作

  • 获取数组中的最值(最大值、最小值)
package world;
public class GArray {
    public static void main(String []args){
        //查找数组中的最大(小)值
        int[] array = {25,45,450,128,2546,245,157,30,254,10};
        int max = array[0];//假设第一个元素是最大值
        int min = array[0];//假设第一个元素是最小值
        for(int i = 0; i<array.length;i++){
            max = max > array[i] ? max : array[i];//max大于array[i]?是 max=max 不是 max = array[i]
            min = min < array[i] ? min : array[i];//min小于array[i]?是 min=min 不是 min = array[i]
        }
        System.out.println("数组中的最大值是:"+max);
        System.out.println("数组中的最小值是:"+min);    
    }
}
  • 在一个数组中找到一个值所对应的索引
package world;
public class GArray {
    public static void main(String []args){     
        int[] array = {25,45,450,128,2546,245,157,30,254,10};
        //查找一个数在数组中的索引位置
        int num = 1;
        for(int i = 0;i < array.length;i++){
            if(array[i] == num){
                System.out.println("数字"+num+"在数组中的位置:"+i);
                break;//找到结果即跳出循环
            }
        }

        /*
         * 改进:
         * 如果所查找的数字在数组中不存在,则不会打印,增加提示
         */
        boolean flag = false;
        for(int i = 0; i<array.length; i++){
            if(array[i] == num){
                System.out.println("数字"+num+"在数组中的位置:"+i);
                flag = true;
                break;
            }
        }
        if(!flag){
            System.out.println("不存在");
        }
        /*
         *将其改为方法
         */
        int num1 = 128;
        int index = getIndex(array, num1);
        if(index == -1){
            System.out.println("数字"+num1+"在数组不存在:");
        }else{
            System.out.println("数字"+num1+"在数组中的位置:"+index);
        }
    }
    public static int getIndex(int[] array,int num){
        int index = -1;
        for(int i = 0;i < array.length;i++){
            if(array[i] == num){
                index = i;
            }
        }
        return index;
    }
}

五.二维数组

  • 格式一:数据类型[][] 数组名 = new 数据类型[第一维长度][第二位长度];
  • 格式二:数据类型[][] 数组名 = new 数据类型[第一维长度][];
  • 格式三:数据类型[][] 数组名 ={ {值1,值2,值3} , {值4,值5} , {值6} };
package world;
/**
 * 二维数组的练习
 * @author lenovo
 *
 */
public class GArrayDemo2 {
    public static void main(String[] args){
        //格式一:数据类型[][] 数组名 = new 数据类型[第一维长度][第二位长度];
        int[][] array = new int[3][2];
        System.out.println("array = "+array);       // [[I@67a9b034
        System.out.println("array[0] = "+array[0]); // [I@356f5b17
        System.out.println("array[1] = "+array[1]); // [I@21c55e69
        System.out.println("array[2] = "+array[2]); // [I@24b950d1

        array[0][0] = 10;
        array[0][1] = 20;

        array[1][0] = 30;
        array[1][1] = 40;

        array[2][0] = 50;
        array[2][1] = 60;

        //遍历二维数组

        for(int row = 0 ;row < array.length; row++){
            for(int col = 0;col < array[row].length;col++){
                System.out.println("array["+row+"]["+col+"]="+array[row][col]);
            }
        }

        //格式二:数据类型[][] 数组名 = new 数据类型[第一维长度][];

        int[][] arr = new int[4][];
        arr[0] = new int[2];
        arr[1] = new int[3];
        arr[2] = new int[2];
        arr[3] = new int[5];

        arr[0][0] = 10;
        arr[0][1] = 20;

        arr[1][0] = 30;
        arr[1][1] = 40;
        arr[1][2] = 50;

        arr[2][0] = 60;
        arr[2][1] = 70;

        arr[3][0] = 80;
        arr[3][1] = 90;
        arr[3][2] = 100;
        arr[3][3] = 110;
        arr[3][4] = 120;

        for(int i = 0;i<arr.length ; i++){
            for(int j= 0; j<arr[i].length;j++){
                System.out.println("arr["+i+"]["+j+"]="+arr[i][j]);
            }
        }

        //格式三:数据类型[][] 数组名 ={ {值1,值2,值3} , {值4,值5} , {值6} };
        int[][] ar = { {10,20,30},{40,50},{60} };
        for(int i = 0;i<ar.length;i++){
            for(int j = 0; j<ar[i].length;j++){
                System.out.println("ar["+i+"]["+j+"]="+ar[i][j]);
            }
        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值