• Java基础(10)--数组


    Java基础(10)--数组

    数组概述

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

    • 数组是相同类型数据的有序集合
    • 其中,每一个数据称为一个数组元素,每个数组元素可以通过一个下标来访问它

    数组的声明与创建

    声明数组变量

    首先必须声明数组变量,才能在程序中使用数组。

    下面是声明数组变量的语法:

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

    创建数组

    Java语言使用new操作符来创建数组,语法如下:

    arrayRefVar = new dataType[arraySize];
    

    上面的语法语句做了两件事:

    • 一、使用 dataType[arraySize] 创建了一个数组。
    • 二、把新创建的数组的引用赋值给变量 arrayRefVar
    // 数组变量的声明,和创建数组可以用一条语句完成
    dataType[] arrayRefVar = new dataType[arraySize];
    
    // 创建数组
    dataType[] arrayRefVar = {value0, value1, ..., valuek};
    

    Example:

    package array;
    
    public class Demo01 {
        public static void main(String[] args) {
            // 声明一个数组
            int[] nums;
    
            // 创建一个数组
            nums = new int[10];
    
            // 给数组元素赋值
            nums[0] = 1;
            nums[1] = 2;
            nums[2] = 3;
            nums[3] = 4;
            nums[4] = 5;
    
            System.out.println("数组元素未赋值时,值为:"+ nums[6]);  // 数组中未赋值元素,值是该数据类型默认值
    
            // 计算和
            int sum = 0;
            for(int i = 0; i < nums.length; i++){
                sum += nums[i];
            }
            System.out.println("和为 " + sum);
        }
    }
    

    三种初始化

    • 静态初始化

      int[] = {1, 2, 3};
      Man[] = {new Man(1, 1), new Man(2, 2)};
      
    • 动态初始化(包含默认初始化)

      int[] a = new int[10];
      a[0] = 1;
      a[1] = 0;
      
    • 默认初始化

      /**
      数组是引用类型,它的元素相当于类的实例变量,因此数组已经分配空间,其中的每个元素也被按照实例变量的方式被隐藏初始化。
      */
      

    数组边界

    • 下标的合法区间:[0, array.length - 1]
    • 数组也是对象。数组元素相当于对象的成员变量;
    • 数组的长度是确定的,不可变的。如果越界,报错ArrayIndexOutofBounds

    数组使用

    数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 For-Each 循环。

    package array;
    
    public class Demo02 {
        public static void main(String[] args) {
            int k = 0;
            double[] myList = {1.9, 2.3, 1.2, 5.4, 3.2};
            printArray(myList);
            System.out.println();
    
            myList = reverseArray(myList);
            printArray(myList);
            System.out.println();
    
            printArray(addOne(myList));
        }
        
        // 数组作为函数的参数
        public static void printArray(double[] array){
            // 打印所有元素
            for(int i = 0; i < array.length; i++){
                System.out.print(array[i] + ", ");
            }
        }
        
        // 数组作为函数的参数及返回值
        public static double[] reverseArray(double[] array){
            double[] res = new double[array.length + 1];
            for(int i = 0, j = array.length - 1; i < array.length; i++, j--){
                res[i] = array[j];
            }
            return res;
        }
    
        public static double[] addOne(double[] array){
            for(double element: array){
                element += 1;
                System.out.println(element);
            }
            return array;
        }
    }
    

    多维数组

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

    String str[][] = new String[3][4];
    

    多维数组的动态初始化

    直接为每一维分配空间,格式如下:

    type[][] typeName = new type[typeLength1][typeLength2];
    

    example

    int[][] a = new int[2][[3]];
    
    String[][] s = new String[2][];
    
    s[0] = new String[2];
    s[1] = new String[3];
    s[0][0] = new String("Good");
    s[0][1] = new String("Luck");
    s[1][0] = new String("to");
    s[1][1] = new String("you");
    s[1][2] = new String("!");
    

    Arrays类

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

    具有以下功能:

    • 给数组赋值:通过 fill 方法。
    • 对数组排序:通过 sort 方法,按升序。
    • 比较数组:通过 equals 方法比较数组中元素值是否相等。
    • 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
    package array;
    
    import java.util.Arrays;
    
    public class Demo03 {
        public static void main(String[] args) {
            String[][] s = new String[2][];
    
            s[0] = new String[2];
            s[1] = new String[3];
            s[0][0] = "Good";
            s[0][1] = "Luck";
            s[1][0] = "to";
            s[1][1] = "you";
            s[1][2] = "!";
    
            System.out.println(Arrays.toString(s));
            System.out.println(Arrays.toString(s[0]));
            System.out.println(Arrays.toString(s[1]));
        }
    }
    

    稀疏数组

  • 相关阅读:
    java线程池源码阅读
    websocketcometd源码阅读基于注解初始化(三)
    websocketcometd源码阅读与spring整合初始化(四)
    cometd源码阅读初始化(二)
    cometd源码阅读WebSocketTransport普通消息处理过程(八)
    websocketcometd源码阅读transport(五)
    一.安装软件
    GitHub一篇文章系列
    JavaJVM调优jstack找出最耗cpu的线程&定位问题代码
    Git总目录
  • 原文地址:https://www.cnblogs.com/pankypan/p/13467043.html
Copyright © 2020-2023  润新知