zoukankan      html  css  js  c++  java
  • Java (三、数组)

    Java 数组

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。
    Java 语言中提供的数组是用来存储固定大小的同类型元素。

    声明数组变量

    首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
    dataType[] arrayRefVar;   // 首选的方法

    dataType arrayRefVar[]; // 效果相同,但不是首选方法

    创建数组

    Java语言使用new操作符来创建数组,语法如下:
    arrayRefVar = new dataType[arrayLength];
    上面的语法语句做了两件事:
    • 一、使用 dataType[arrayLength] 创建了一个数组。
    • 二、把新创建的数组的引用赋值给变量 arrayRefVar。
    数组变量的声明,和创建数组可以用一条语句完成,如下所示:
    dataType[] arrayRefVar = new dataType[arrayLength];
    另外,你还可以使用如下的方式创建数组。
    dataType[] arrayRefVar = {value0, value1, ..., valuen};
    数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。

    处理数组

    数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 foreach 循环。
    示例
    该实例完整地展示了如何创建、初始化和操纵数组:
    TestArray.java 文件代码:
    public class TestArray {
       public static void main(String[] args) {
          double[] myList = {1.9, 2.9, 3.4, 3.5};
     
          // 打印所有数组元素
          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.9
    2.9
    3.4
    3.5
    Total is 11.7
    Max is 3.5

    foreach 循环

    JDK 1.5 引进了一种新的循环类型,被称为 foreach 循环或者加强型循环,它能在不使用下标的情况下遍历数组。
    示例
    public class Demo06 {
        public static void main(String[] args) {
            int a[] = {1,2,9,3,8,5};
    //        forEach循环 遍历数组  i为数据
             for(int i : a){
                System.out.println(i);
            }
        }
    }
    运行结果:

    Arrays 类

    java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
    具有以下功能:

    1、对数组排序:通过 sort 方法,按升序。

    import java.util.Arrays;
    
    public class Demo08 {
        public static void main(String[] args) {
            int arr[] = {12,34,51,6,24,48,31};
            Arrays.sort(arr);
            for (int i : arr) {
                System.out.println(i);
            }
        }
    }
    运行图:

    2、比较数组:通过 equals 方法比较数组中元素值是否相等。

    import java.util.Arrays;
    
    public class Demo09 {
        public static void main(String[] args) {
            //equals:比较两个数组的大小
            int arr1[] = {1,2,3};
            int arr2[] = {1,2,3};
            int arr3[] = {1,2,4};
            int arr4[] = {1,3,2};
    //        数组的相等是数组内元素大小、顺序和类型全部相等
            System.out.println(Arrays.equals(arr1, arr2));
            System.out.println(Arrays.equals(arr1, arr3));
            System.out.println(Arrays.equals(arr1, arr4));
            System.out.println(Arrays.equals(arr2, arr3));
            System.out.println(Arrays.equals(arr2, arr4));
            System.out.println(Arrays.equals(arr3, arr4));
        }
    }
    运行图:

    3、toString:用来把数组转换成字符串

    import java.util.Arrays;
      public class Demo10 {
          public static void main(String[] args) {
           int a[] = {1,5,3,4,8};
           System.out.println(Arrays.toString(a));    
          }
    }
    运行图:

    4、给数组赋值:通过 fill 方法,用来给数组填充新数据,把源数据覆盖

    import java.util.Arrays;   public class Demo11 {     public static void main(String[] args) {     int a[] = {1,5,3,4,8};     int val = 20;     Arrays.fill(a, val);     System.out.println(Arrays.toString(a));     } }

    运行图:

    5、查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

    (对升序的数组才有效,两个元素只能查找到第一个的索引)
    import java.util.Arrays;
      public class Demo12 {
        public static void main(String[] args) {
        //binarySearch:用来查找数组中指定的元素索引
        //binarySearch:对升序的数组才有效,两个元素只能查找到第一个的索引
        int a[] = {5,3,0,4,9,7,0,2};
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.binarySearch(a, 0));
        }
    }
    运行图:

    6、copyOf:从数组头部开始,复制指定长度的数组,参数1:要复制的源数组;参数2:要复制的数组元素的个数,如果要复制的数组元素数量大于源数组长度,多出的数组元素补0

    import java.util.Arrays;
      public class Demo13 {
        public static void main(String[] args) {
        int a[] = {20,25,24,36};
        int b[] = Arrays.copyOf(a, 3);
        int c[] = Arrays.copyOf(a, 4);
        int d[] = Arrays.copyOf(a, 5);
        System.out.println(Arrays.toString(b));
        System.out.println(Arrays.toString(c));
        System.out.println(Arrays.toString(d));
        }
    }
    运行图:

    7、copyOfRange:复制数组中的某一段数据;参数1:要复制的源数据;参数2:开始索引(包括);参数3:结束索引(不包括)

    import java.util.Arrays;
      public class Demo14 {
        public static void main(String[] args) {
        int arr[] = {20,60,40,80,90,20};
        int arr2[] = Arrays.copyOfRange(arr, 1, 4);
        int arr3[] = Arrays.copyOfRange(arr, 0, arr.length-1);
        System.out.println(Arrays.toString(arr2));
        System.out.println(Arrays.toString(arr3));
        }
    }
    运行图:
  • 相关阅读:
    php setcookie(name, value, expires, path, domain, secure) 参数详解
    cookie 和session 的区别详解
    一群猴子排成一圈,按1,2,...n 编号,数到m只,踢出局,直到剩下最后一个猴子是大王
    封装数据库mysql, mysqli
    图片处理类(缩略图)
    封装验证码类
    Java多线程编程(一)
    SpringMVC 自定义拦截资料
    Python包的相对导入时出现错误的解决方法
    TCP协议总结
  • 原文地址:https://www.cnblogs.com/ytsbk/p/7385141.html
Copyright © 2011-2022 走看看