zoukankan      html  css  js  c++  java
  • Java 数组

     数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。

    Java 语言中提供的数组是用来存储固定大小的同类型元素。

     

    数组的基本概念
     数组:在内存中开辟的一串用于存储 相同数据类型 的 连续空间
     数组名:表示连续空间的首地址,通过首地址可以依次访问数组所有元素。
     下标:元素在数组中的排序叫做下标,从0开始 
     

       

     数组的声明:
    1,声明一个数组
    2 ,  给数组分配空间
    3 ,  给数组赋值
    4,访问数组数据,使用数组下标访问
    注意:数组长度声明后无法改变,也无法追加

     数组声明的缩写

     

     

    例:
     int[] arr={1,2,3,4,5} 最常用

     

     

    实例:

    (一)下面语句首先声明一个数组arr,然后输入一个数字判断该数字是否在数组中,如果在返回其下标

     

    System.out.println("输入一个数字:1,7,3,6,5");
    		int num=sc.nextInt();
    		int i;
    		int arr[]={1,7,3,6,5};
    		for ( i = 0; i < arr3.length; i++) {
    		for (int j = 0; j < arr.length; j++) {
    				if (num==arr3[i]) {
    					System.out.println("数组的下标:"+i);
    					return;
    				}
    				
    		}	
    }
    

      

     (二)使用数组实现冒泡排序,实现数字的排序,只能是升序排序

    int arr2[]={90,55,66,45,77,86};
            for (int i = 0; i < arr2.length-1; i++) {
                for (int j = 0; j < arr2.length-1-i; j++) {
                    if (arr2[j]>arr2[j+1]) {
                        int a=arr2[j];
                        arr2[j]=arr2[j+1];
                        arr2[j+1]=a;        
                    }
                }
                
            }

     

    处理数组

    数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 foreach 循环。这也使得在我们使用数组的时候,循环是我们经常使用的遍历手段

      // 打印所有数组元素
          for (int i = 0; i < myList.length; i++) {
             System.out.println(myList[i] + " ");
          }
          // 计算所有元素的总和
          double total = 0;
          for (int i = 0; i < myList.length; i++) {
             total += myList[i];
          }
          System.out.println("Total is " + total);
          // 查找最大元素
          double max = myList[0];
          for (int i = 1; i < myList.length; i++) {
             if (myList[i] > max) max = myList[i];
          }
          System.out.println("Max is " + max);

     运行代码结果如下:

     

    遍历数组的两种方式:

     

    1,使用for循环遍历数组

    for (int i = 0; i < 5; i++) {
            System.out.print(arr[i]);    
    }

    2,使用foreach遍历数组

                int[] arr2={7,2,6,3,4};
            for(int num:arr2){
                System.out.println(num);
            }

     

    多维数组

    多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组,

    例如:

     

     

    数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][每个一维数组的长度];

    int[][] arr = new int[3][5];---定义了一个整型的二维数组,其中包含3个一维数组,每个一维数组可以存储5个整数

    arr[0]---下标为0的位置上的一维数组

    arr[1][3]---如果要获取具体的元素需要两个下标

    数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][];

     

    int[][] arr = new int[3][];----表示一个包含了三个整型的一维数组的二维数组(-------------这句话好好理解------------------------)

     

    数据类型[][] 数组名 = {{元素},{元素1, 元素2},……};

    int[][] arr = {{2,5},{1},{3,2,4},{1,7,5,9}};

    注意:[]在变量名前的时候,是紧跟数据类型的;如果[]在后,则是属于当前变量名。

    二维数组的应用

    经典问题打印杨辉三角

    //从控制台获取行数
    Scanner s = new Scanner(System.in);
    int row = s.nextInt();
    //根据行数定义好二维数组,由于每一行的元素个数不同,所以不定义每一行的个数
    int[][] arr = new int[row][];
    //遍历二维数组
    for(int i = 0; i < row; i++){
        //初始化每一行的这个一维数组
        arr[i] = new int[i + 1];
        //遍历这个一维数组,添加元素    
        for(int j = 0; j <= i; j++){
            //每一列的开头和结尾元素为1,开头的时候,j=0,结尾的时候,j=i
            if(j == 0 || j == i){
                arr[i][j] = 1;
            } else {//每一个元素是它上一行的元素和斜对角元素之和
                arr[i][j] = arr[i -1][j] + arr[i - 1][j - 1];
            }
            System.out.print(arr[i][j] + "	");
        }
        System.out.println();
    }

    代码运行结果:

     Arrays工具类

     Arrays工具类是java提供的用于操作还是数组的工具类,位于java.util包中

    Arrays.equals(arr, arr1)
    比较的原理,逐一比对两个数组中的每一位置,是否相等
    而使用==进行判断,是比较两个数组中存储的地址,是否相等


    System.out.println(arr == arr1);//数组中传递的是地址
    System.out.println(Arrays.equals(arr, arr1));//逐一比对每个位置的是否相等

    Arrays.sort(arr2)
    对数组进行升序排列,修改原数组
    Arrays.sort(arr2,3,6)对数组的指定区域进行排序,包含起始下标,不含结束下标,区间

     Arrays.toString(arr2):将数组转换为字符串,转换之后的格式[1,1,1,1,1,1,1]

    Arrays.fill(arr3, 12):将数组中的每一个数字都赋指定的数值

     Arrays.copyOf(arr4, arr4.length);:将arr4数组中的指定个数,copy到一个新的数组中
     如果个数>arr4.length,则新数组中多于的位置用默认值补齐
     如果个数<arr4.length,则只copy原数组中的前半部分


     Arrays.binarySearch(arr5, 4):查找数组中指定元素,如果找到返回下标,如果没由返回负数
     使用这个方法必须是有序的数组,可以先使用Arrays.sort(arr)进行排序

  • 相关阅读:
    Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?
    zookeeper 是如何保证事务的顺序一致性的?
    什么是 Callable 和 Future?
    MyBatis 实现一对一有几种方式?具体怎么操作的?
    Zookeeper 对节点的 watch监听通知是永久的吗?为什么 不是永久的?
    合同测试你懂什么?
    查看各类环境变量用什么命令?
    我们如何进行跨功能测试?
    怎么查看系统支持的所有信号?
    Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
  • 原文地址:https://www.cnblogs.com/Code-ccc/p/8746325.html
Copyright © 2011-2022 走看看