我叫鱼汤,继续整理笔记。

  数组是一种容器,首先它是集合的一种。集合也是一种容器,在java里所有能装数据的容器都是叫集合。其作用就是把一堆数据装进容器统一操作。

  一、数组是最简单的一种集合,有三个特点:

    1. 只存放相同数据类型的元素,所以声明数组先要声明数据类型;

    2. 只能在连续的内存地址存放;

    3. 数组是长度是不可变的,看成是常量。所以在声明数组时就得把长度确定好。

  二、 数组的声明方式,两种:

    1. 数据类型[] 变量名 = new 数据类型[长度]; 数组作为复杂数据类型,它的命名规范跟变量是一样的。

    2. 数据类型[] 变量名 = {元素1,元素2,元素3,元素4,元素5};

  数组在内存里是由两个部分组成,数组变量名在内存有单独的一块空间存放数组的引用,指向真正存放数组的内存空间。

 

    

  意思就是这么个意思,所以数组又叫做引用类型。

  三、数组的简单操作

  数组在被声明好以后,计算机会自动对其做初始化,就是以声明的数据类型存入0。在操作数组时需要给数组每个小空间编号,专业点叫做下标索引,一个长度为n的数组,第一个下标是0,最后一个下标是n-1。只要在[]内填入下标进行赋值,计算机会自动通过引用找到数组锁定对应的空间进行赋值。如:

  int[] array = new int[5];

  array[0] = 1;

  array[2] = 100;

  int i = 3;

  array[i] = 5;

  变量是可以作为下标的,但是变量的值必须在下标以内的整数,否则会出错。这时for循环跟数组很配,for循环的循环控制变量可以同时作为数组的下标使用,可以进行赋值、排序、提取最值、遍历等操作,数组有个得到长度的方法(数组名.length)。操作数组时主要是注意循环控制变量与下标之间的关系;更要主要的是下标不要超过数组长度,否次会出现越界的错误。下面就简单的举几个列子:

    1. 赋值

    如: int[] array = new int[6];

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

        int j = 1;

        array[i] = j++;

      }

    这样长度为6的数组各个空间依次存入1、2、3、4、5、6。

    2. 遍历

    如: int[] array = new int[6];

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

        System.out.println(array[i]);

      }

    依次打印数组内各空间的值。

    3. 冒泡排序

    如:int[] array = {1,2,3,4,5,6};

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

        for(int j = i + 1; j < array.length; j++){ //注意i和j的关系

          if(array[i] > array[j]){ //如果前面的数字大于后面的数组这交换,用于升序排列

            int tem = array[i];

            array[i] = array[j];

            array[j] = tem;

          }

        }

      }

  冒泡排序的所有排序方法中最差的,还有更多的高级算法......

  四、字符串

  字符串也是一种数组,可以将它转换为char[]。如:String str = "hello";

                         char[] array = str.toCharArray();

  五、二维数组

  如:int[][] arrays = new int[5][6]; //概念跟之前的二维循环一样,就像一个5行6列的表格;

    int[][] arrays = {{1,2,3,4},{5,6,7,8},{9,10,11,12,13}}//行数就是外面的{}包裹的{}个数,列数就是里面{}中最长一列的数量,其他短的计算机默认用0补齐;

  对二维数组要用双重循环操作。