• Java 数组


    1. 声明数组

    • 数据类型[ ] 数组名; 首选方法
    • 数据类型 数组名[ ]; 效果相同,但不是首选方法
    • 不能通过数组名加1得到数组的下一元素。

    • Java中可以将一个数组赋值给另一个数组,其实真正做的是复制了一个引用。
      或使用Arrays类的copyOf方法,格式:int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers, luckyNumbers.length);,第二个参数是新数组的长度。不过这个方法通常用来增加数组的大小:luckyNumbers = (luckyNumbers, 2 * luckyNumbers.length);
      多余的元素,数值型的将被赋值成0,布尔型的将被赋值成false,如果长度小于原始数组的长度,则只拷贝最前面的元素。

    • 注意: 建议使用 dataType[] arrayRefVar 的声明风格声明数组变量,它把数组类型和数组名分开了。 dataType arrayRefVar[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。

    2. 创建数组

    声明数组仅仅是给出了数组名字和元素的数据类型,要想真正地使用数组还必须为它分配内存空间,即创建数组。为数组分配内存空间的格式如下:

    arrayRefVar = new dataType[arraySize];

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

    • 一、使用 new dataType[arraySize] 创建了一个数组。
    • 二、把新创建的数组的引用赋值给变量 arrayRefVar

    数组变量的声明,和创建数组可以用一条语句完成,如下所示:

    dataType[] arrayRefVar = new dataType[arraySize];

    另外,你还可以使用如下的方式创建数组,同时完成了数组的初始化

    dataType[] arrayRefVar = {value0, value1, ..., valuek};

    二维数组类似的有:

    数据类型[][] 数组名 = new 数据类型[行的个数][列的个数];

    或者:

    数据类型[][] 数组名;
    数组名 = new 数据类型[行的个数][列的个数];

    也可以:

    数据类型[][] 数组名 = {
    {第一行值1,第一行值2,...}
    {第二行值1,第二行值2,...}
    ...
    }

    • 注意:声明二维数组的时候可以只指定第一维大小,空缺出第二维大小,之后再指定不同长度的数组。但是,第一维大小不能空缺(不能只指定列数不指定行数)。

    • Java 采用 “数组的数组”定义多维数组,一个二维数组是由若干个一维数组组成的。构成二维数组的一维数组不必有相同的长度,在创建二维数组时可以分别指定构成该二位数组的一维数组的长度。还没有为这些一维数组分配内存的话,二维数组也是不能使用的。

    • Java 甚至可以初始化一个匿名数组,形如new int[] {4,5,6}。匿名数组的策略就是创建、初始化、使用,因为它没有任何名字,所以你也没法重用它,它不会创建任何变量适用于只使用一次的情况。比如说使用这种语法形式可以在不创建新变量的情况下重新初始化一个数组:

    int[] a = {1,2,3};
    
    //想要对a重新初始化
    
    //方法一:
    int[] b = {4,5,6};
    a = b;
    
    //方法二:
    a = new int[] {4,5,6};
    
    • 在 Java 中,允许数组长度为零。在编写一个结果为数组的方法时,如果碰巧结果为空,则这种语法形式就显得非常有用。此时可以创建一个长度为0的数组:new elementType[0]
      注意:数组长度为0与NULL不同。

    3.遍历数组

    Java5 引入了一种主要用于数组的增强型 for 循环,能在不使用下标的情况下遍历数组。显得更加简洁,不易出错,因为你不必为下标的起始值和终结值而操心。
    Java 增强 for 循环语法格式如下:

    for(声明语句 : 表达式)
    {
      //代码句子
    }
    

    声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

    有个更加简单的方式打印数组中的所有值,调用System.out.println(Arrays.toString(a));,会返回一个包含数组元素的字符串,形如“[2,3,5,7,11,13]”。类似的二维数组可以调用System.out.println(Arrays.deepToString(a));

    4. Arrays类

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

    具体说明请查看下表:

    • sort 方法对对象数组进行排序的前提是:对象所属的类必须实现了 Comparable 接口。接口代码如下:
      public interface Comparable<T> {
          /*
          * 用这个对象与other进行比较。
          * 如果这个对象小于other则返回负值;
          * 如果相等则返回0;
          * 否则返回正值。
          */
          int compareTo(T other); 
      }
      
      更多参见:Java 多态:接口
    • 更多可以查看:JDK 1.6 在线中文手册

    参考资料:

  • 相关阅读:
    【算法每日一练】LeetCode02 两数之和
    【算法每日一练】LeetCode01 两数之和
    【算法题】09-单链表翻转
    【算法题】08- 构造数组的MaxTree
    【算法题】07-生成窗口最大值数组
    【算法题】06-用栈来解决汉诺塔问题
    【算法题】05-用一个栈实现另一个栈的排序
    【算法题】04-猫狗队列
    【算法题】03-使用递归和栈逆序一个栈
    【算法题】02-使用两个栈实现队列额的功能
  • 原文地址:https://www.cnblogs.com/mingyueanyao/p/6716419.html
Copyright © 2020-2023  润新知