美文网首页
No.10 数组

No.10 数组

作者: 醒着的码者 | 来源:发表于2016-04-10 22:18 被阅读37次

    数组的定义:

    • 一维数组的声明方式: type var[]; type[] var;一般使用后者,前者为c/c++语言的书写方法。

    (1)声明数组时不能指定其长度(数组中元素的个数)int [] num;
    (2)定义数组对象的时候必须指定长度 num = new int[3];
    (3)声明和创建数组同时进行int [] num = new int[3];

    注意两者的不同:声明和创建数组不同,它是两个过程,只要生成数组对象就要初始化数组长度。

    • 二维数组的声明方式:type[][] var;二维数组对象的定义方式:var = new type[int a][int b];也可以使用:var = new type[int a][];type[0] = new type[int b]...... a代表行数,b代表列数,由于数组空间不是连续分配的,所以每一行的列数可以不同。
      二位数组被Java定义为数组的数组,即行数是一个数组(第一个索引指定有几行),列数是一个数组(第二个索引)指定一行中有几个元素

    • 数组的初始化过程:
      (1)动态初始化(定义数组的同时指定数组长度):
      一维数组的动态初始化:
      int [] num = new int [3];
      num[0] = 0 ;
      num[1] = 1 ;
      num[2] = 2 ;

      先定义好数组,再为数组的指定元素赋值;数组中只能存放相同类型的元素,所以所赋值必须为指定类型;
      二维数组的动态初始化
      type [][]num = new type[1][1];
      num[0][0] = new type(type value);
      num[0][1] = new type(type value);
      num[1][0] = new type(type value);
      num[1][1] = new type(type value);

      二维类型的数组,必须首先为行分配引用空间,然后再顺次为每一行分配空间。而且,必须为每个数组元素单独分配空间。**
      例如:

      String[ ][ ] s= new String[2][ ];
      s[0]= new String[2];//为第一行分配引用空间
      s[1]= new String[2]; //为第二行分配引用空间
      s[0][0]= new String("Good");// 为每个数组元素单独分配空间
      s[0][1]= new String("Luck");// 为每个数组元素单独分配空间
      s[1][0]= new String("to");// 为每个数组元素单独分配空间
      s[1][1]= new String("You");// 为每个数组元素单独分配空间
      (2)静态初始化:
      一维数组的静态初始化
      String[] s = {"abc","def","ghj"};
      二维数组的静态初始化
      int[ ][ ] num={{1,2},{2,3},{3,4,5}};
      注意此时的二位数组第一行有2个元素,第二行有2个元素,地三行有3个元素,如果不是一个3行3列的数组。

      int[][] num = {{1,2},{3,4,5}};
      System.out.println(num[0][2]);//ArrayIndexOutOfBoundsException
      System.out.println(num[1][2]);//5
      

    注意:暂且可以理解为有几层{}就是几维数组;
    详细的二维数组初始化过程移步

    http://blog.csdn.net/chenshijun0101/article/details/6640377

    增强for循环输出数组中的元素:

    (1) 循环输出一维数组:

        int [] one = {1,2,3,4,4,4};
        for(int a : one){
            System.out.print(a + " ");
        }
    

    (2)循环输出二维数组:

     int[][] num = {{1,2},{3,4,5}};
     for(int[] a : num1){
        for(int b : a){
        System.out.println(b);  
        }
      } 
    

    数组常用操作:

    (1)获取数组的长度:数组对象.length;值等于数组中元素的个数,而最后一个元素的索引值+1;
    (2)数组的复制:System.arraycopy(源数组, 从源数组第几个元素开始复制, 目的数组, 从目的数组的第几个元素开始复制, 复制元素的个数)。该方法没有返回值。改变了目的数组中的元素值;注意第几个是索引值加1;

    int[][] num1 = new int[2][2];
    int[][] num = {{1,2},{3,4,5}};
    System.arraycopy(num, 1, num1, 0, 1);
      for(int[] a : num1){
            for(int b : a){
                System.out.println(b);//3,4,5,0,0
            }
        }   
    

    (3)数组的排序Array.sort(数组引用);按照默认方法对数组进行排序,若是int则从大到小排列;
    (4)在已排序的数组中查找某个元素:Arrays.binarySearch(数组名)。

    相关文章

      网友评论

          本文标题:No.10 数组

          本文链接:https://www.haomeiwen.com/subject/dxtylttx.html