Java引用数据类型之数组

来源:互联网 发布:快速傅里叶变换 知乎 编辑:程序博客网 时间:2024/05/23 15:04

一.数组定义

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

二.数组格式

  • 格式一 :数据类型[] 数组名 = 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]);            }        }    }}
0 0
原创粉丝点击