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

    Java 数组基础

    数组

    数组(Array):相同类型数据的集合。

    定义数组

      方式1(推荐,更能表明数组类型)

      type[] 变量名 = new type[数组中元素的个数];

      比如:

      int[] a = new int[10];

      数组名,也即引用a,指向数组元素的首地址。

      方式2(同C语言)

      type变量名[] = new type[数组中元素的个数];

      如:

      int a[] = new int[10];

      方式3 定义时直接初始化

      type[] 变量名 = new type[]{逗号分隔的初始化值};

      其中红色部分可省略,所以又有两种:

      int[] a = {1,2,3,4};

      int[] a = new int[]{1,2,3,4};

      其中int[] a = new int[]{1,2,3,4};的第二个方括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。

    数组运用基础

    数组长度: Java中的每个数组都有一个名为length的属性,表示数组的长度。length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。

    equals()

     数组内容的比较可以使用equals()方法吗?

    如下程序:  

    复制代码

    public class ArrayTest

    {

          public static void main(String[] args)

          {

                 int[] a = {1, 2, 3};

                 int[] b = {1, 2, 3};

                 System.out.println(a.equals(b));

          }    

    }

    复制代码

      输出结果是false。

      所以证明不能直接用equals()方法比较数组内容,因为没有override Object中的实现,所以仍采用其实现,即采用==实现equals()方法,比较是否为同一个对象。

      怎么比较呢?一种解决方案是自己写代码,另一种方法是利用java.util.Arrays。

      java.util.Arrays中的方法全是static的。其中包括了equals()方法的各种重载版本。

      代码如下:

    ArrayEqualsTest.java

    数组元素不为基本数据类型时

      数组元素不为基本原生数据类型时,存放的是引用类型,而不是对象本身。当生成对象之后,引用才指向对象,否则引用为null。

      如下列程序:

    ArrayTest2.java

      输出:

      null

      10

      20

      30

      也可以在初始化列表里面直接写:

      Person[] p = new Person[]{new Person(10), new Person(20), new Person(30)};

    二维数组

      定义:二维数组是数组的数组。

    二维数组基础:基本的定义方式有两种形式,如:

      type[][] i = new type[2][3];(推荐)

      type i[][] = new type[2][3];

      如下程序:

    复制代码

    public class ArrayTest3

    {

         public static void main(String[] args)

          {

                 int[][] i = new int[2][3];

                 System.out.println("Is i an Object? "

                               + (i instanceof Object));

                 System.out.println("Is i[0] an int[]? "

                               + (i[0] instanceof int[]));

          }

    }

    复制代码

      输出结果是两个true。

    变长的二维数组

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

      如下程序:

    复制代码

    public class ArrayTest4

    {

        public static void main(String[] args)

        {

            //二维变长数组

            int[][] a = new int[3][];

            a[0] = new int[2];

            a[1] = new int[3];

            a[2] = new int[1];

            //Error: 不能空缺第一维大小

            //int[][] b = new int[][3];

        }

    }

    复制代码

      二维数组也可以在定义的时候初始化,使用花括号的嵌套完成,这时候不指定两个维数的大小,并且根据初始化值的个数不同,可以生成不同长度的数组元素。

      如下程序:

    复制代码

    public class ArrayTest5

    {

        public static void main(String[] args)

        {

            int[][] c = new int[][]{{1, 2, 3},{4},{5, 6, 7, 8}};

            for(int i = 0; i < c.length; ++i)

            {

                for(int j = 0; j < c[i].length; ++j)

                {

                    System.out.print(c[i][j]+" ");        

                }

                System.out.println();

            }

            

        }

    }

    复制代码

      输出:

      1 2 3

      4

      5 6 7 8

  • 相关阅读:
    spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常
    在zepplin 使用spark sql 查询mongodb的数据
    Unable to query from Mongodb from Zeppelin using spark
    spark 与zepplin 版本兼容
    kafka 新旧消费者的区别
    kafka 新生产者发送消息流程
    spark ui acl 不生效的问题分析
    python中if __name__ == '__main__': 的解析
    深入C++的new
    NSSplitView
  • 原文地址:https://www.cnblogs.com/heqingxiaohuo/p/12068770.html
Copyright © 2011-2022 走看看