java入门03-数组

数组简介

Posted by catface on January 9, 2015

数组概述及格式

  • 数组:同一种类型数据的集合。其实数组就是一个容器

    只要是容器,就得重点掌握

  • 数组的好处

    可以自动给数组中的元素从0开始编号,方便操作这些元素

  • 数组的定义格式

    • 当不明确数组中的元素时,动态初始化

      1
      2
      
        int[] arr = new int[3];
        arr[0] = 3;
      
    • 当明确数组中的元素时,静态初始化

      1
      2
      
        int[] arr = new int[] { 1, 2, 3, 4, 5 };
        int[] arr = { 1, 2, 3, 4, 5 };
      
  • 什么时候使用数组

    当要操作的同种数据类型的数据是多个的时候

数组的内存图

    • 存储的是局部变量(在函数中定义的变量)

    • 变量被使用完后,立即自动释放

    • 存储的是实体(数组和对象)

    • 实体:new出来的东西,可以存放很多数据的东西

    • 堆内存数据的特点

      • 每个实体都有内存地址

      • 堆内存中的变量都有默认初始化值

        • int –> 0

        • double –> 0.0

        • boolean –> false

        • char –> ‘\u0000’ 空字符,unicode编码

      • 当实体不在被使用的时候,会在jvm空闲的时候,通过java垃圾回收机制使其自动释放

  • 方法区:static

  • 本地方法区:调用是Windows系统底层资源,我们不用考虑

  • 寄存器:和CPU相关。我们不用考虑

数组的常见问题

  • A:当你访问到数组中的最后一个元素时,还想继续访问,这个时候,会发生角标越界异常

    ArrayIndexOutOfBoundsException

  • B:当数组不在指向某个实体时,你还继续访问,就会发生空指针异常

    NullPointerException

数组的操作

  • 遍历

  • 最值

  • 查找

  • 排序

  • 数组的参数传递

二维数组概述和定义

  • 格式1:int[][] arr = new int[3][2];

    • 定义了名称为arr的二维数组

    • 二维数组中有3个一维数组

    • 每一个一维数组中有2个元素

    • 一维数组的名称分别为arr[0], arr[1], arr[2]

    • arr:二维数组名

      • arr[1]:二维数组中的第二个一维数组名

      • arr[1][1]:二维数组中的第二个数组的第二个元素

    • 给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;

  • 格式2:int[][] arr = new int[3][];

    • 二维数组中有3个一维数组

    • 每个一维数组都是默认初始化值null

    • 可以对这个三个一维数组分别进行初始化

      • arr[0] = new int[3];

      • arr[1] = new int[5];

      • arr[2] = new int[7];

  • 格式3:int[][] arr = { { 3,8,2 }, { 2,7 }, { 9,0,1,6 } }; arr[2].length;

    • 二维数组有3个一维数组

    • 第一个一维数组有3个元素

    • 第二个一维数组有2个元素

    • 第三个一维数组有4个元素

二维数组的应用

  • 二维数组的遍历

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
      int[][] arr2 = new int[2][3];
    	
      public static void printArray2(int[][] arr2) {
          for(int i=0; i<arr2.length; i++) {
              for(int j=0; j<arr2[i].length; j++) {
                  System.out.print(arr2[i][j]+" ");
              }
              System.out.println();
          }
      }
    
  • 二维数组的应用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
      // 求一年的销售总额
      public static void printArray2(int[][] arr2) {
          int sum = 0;
          for(int i=0; i<arr2.length; i++){
              for(int j=0; j<arr2[i].length; j++) {
                  sum = sum + arr[i][j];
              }
              System.out.println("sum =" + sum);
          }
      }