day05(数组+二维数组)

传智播客java基础班冯佳老师整理,还会持续更新,请关注冯佳老师的微

fengjia_2553868@qq.com

1,数组概述及格式

  • 数组:同一种类型数据的集合。其实数组就是一个容器。
    • 只要是容器,就得重点掌握。
  • 数组的好处
    • 能够自动给数组中的元素从0开始编号,方便操做这些元素。
  • 数组的定义格式
  • A:当不明确数组中的元素时,动态初始化 举例 : 
    1
    2
         int [] arr =  new  int [ 3 ];
         arr[ 0 ] =  3 ;
    B:当明确数组中的元素时,静态初始化 举例 :
    1
    2
         int [] arr =  new  int []{ 1 , 2 , 3 , 4 , 5 };
         int [] arr = { 1 , 2 , 3 , 4 , 5 };
  • 何时使用数组?
    • 当要操做的同种数据类型的数据是多个的时候,你就得想着先把这些数据用数组进行存储。

数组的内存图

  • A:栈
    • 存储的是局部变量(在函数中定义的变量)。
    • 变量被使用完后,当即自动释放。
  • B:堆
    • 存储的是实体(数组和对象)。
    • 实体:new出来的东西,能够存放不少数据的东西。
    • 堆内存数据的特色
      • 每一个实体都有内存地址
      • 堆内存中的变量都有默认初始化值
        • 1
          2
          3
          4
          int  -->  0
          double  -->  0.0
          boolean  -->  false
          char  -->  '\u0000'  空字符,unicode编码。
      • 当实体不在被使用的时候,会在jvm空闲的时候,经过java垃圾回收机制使其自动释放。
  • C:方法区 后面讲。(static)
  • D:本地方法区 调用是Windows系统底层资源,咱们不用考虑。
  • E:寄存器 和CPU相关。咱们不用考虑。

数组的常见问题

  • A:当你访问到数组中的最后一个元素时,还想继续访问,这个时候,会发生角标越界异常
    • ArrayIndexOutOfBoundsException
举例
1
2
     int [] arr =  new  int [ 3 ];
     System.out.println(arr[ 3 ]);
  • B:当数组不在指向某个实体时,你还继续访问,就会发生空指针异常
    • NullPointerException
举例

2
3
     int [] arr =  new  int [ 3 ];
     arr =  null ;
     System.out.println(arr[ 1 ]);

数组的操做

  • 数组遍历
  • 数组获取最值
  • 基本查找
  • 数组的参数传递

数组的练习

  • 数组反转

数组的应用

  • 查表法(星期的示例)

二维数组概述和定义

  • 格式1:int[][] arr = new int[3][2];
    • A:定义了名称为arr的二维数组
    • B:二维数组中有3个一维数组
    • C:每个一维数组中有2个元素
    • D:一维数组的名称分别为arr[0], arr[1], arr[2]
      • arr:二维数组名
      • arr[1]:二维数组中的第二个一维数组名
      • arr[1][1]:二维数组中的第二个数组的第二个元素
    • E:给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
  • 格式2:int[][] arr = new int[3][];
    • A: 二维数组中有3个一维数组
    • B: 每一个一维数组都是默认初始化值null
    • C: 能够对这个三个一维数组分别进行初始化
      • 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
    • A:二维数组有3个一维数组。
    • B:
      • 第一个一维数组有3个元素
      • 第二个一维数组有2个元素
      • 第三个一维数组有4个元素

二维数组的应用

  • 二维数组的遍历
  •  
       
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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
    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);
         }
    }

一个综合小案例:数据加密