JAVA---数组

目录

6 数组

    6.1 概念  

    6.2 数组的名称:

    6.3 数组的声明与初始化

    6.4 数组元素的访问(查看)

    6.5 数组下标越界异常 

    6.6 引用类型之Arrays

    6.7 数组的复制 

     6.8  数组的排序

     (1)冒泡排序

     (2)简单排序

     (3)工具类排序

     6.9 二维数组


6 数组

    6.1 概念  

      概念:一组相同类型的数据的组合,数组也是一种引用类型。

      元素:数组中的每个数据,都是这个数组的元素。
      数组的长度  :即数组元素的个数    表示方式:变量名.length;

      数组的特点:一经创建,长度不可变。
      数组的下标(index):下标从0开始,最后一个元素的下标为:length-1; 下标范围:0~length-1

      数组元素的覆盖(赋值,替换):变量名[index] = value;  

      数组间的赋值: 就是指变量之间的赋值。

                               通过一个变量对数组的元素进行修改,那么与之相关的变量 对应的数组的元素也会发生变化。        

    6.2 数组的名称

数组名称不是固定的,与存放的数据的类型有关。
                     如:存放一组int类型的数据                     数组名称   int []
                            存放一组字符串数据                         数组名称  String[]                    
                            存放一组Scanner类型的数据            数组名称  Scanner[]

                            存放一组字符类型的数据                   数组名称  char[]   

    6.3 数组的声明与初始化

  声明: 元素类型[]   变量名;
              元素类型   变量名[];---不建议此写法
       变量的初始化的时机:2种          (1)声明时直接初始化    int a =5;
                                                          (2)先声明,再初始化(使用之前初始化)      
      
       数组的变量初始化:3种情况
                                   (1)静态初始化---只有一种时机,只能够声明时就直接初始化
                                            String[] names = {"A","B"};
                                            int[] nums = {};
                                   (2)动态初始化
                                                    --规定数组长度的写法
                                                    int[] ages = new int[length];             
                                                    整数类型:默认是0
                                                    浮点数类型:默认是0.0
                                                    字符类型:默认是'\u0000'是整数类型0对应的字符,在不同的电脑 显示不一样                  
                                                    布尔类型:默认false
                                                    引用数据类型:默认值null

                                                    --不规定长度的写法
                                                   int[] ages = new int[]{};
                                                   double[] counts = new double[]{1,2,3,4};

    6.4 数组元素的访问(查看)


     通过下标进行查看   语法:变量名[index];

      元素的遍历(从头到尾依次查看)
            for (int i = 0;i<变量名.length;i++ ){
                    System.out.println(变量名[i]);
            }

    6.5 数组下标越界异常 

      java.lang.ArrayIndexOutOfBoundsException

      出现原因:访问数组元素时的下标超出了范围  
      正确范围:0~length-1
      错误下标: 变量名[-1];变量名[length];       

    6.6 引用类型之Arrays

    Arrays是数组的工具类。此类提供了很多对数组操作的功能方法:
    如:
            String info = Arrays.toString(数组名);
            Arrays.toString():此方法是将数组的元素一一拼接成字符串。 
     格式如下: "[元素1,元素2,……,元素length-1]" 

    6.7 数组的复制 

     系统复制法:System.arraycopy(src,start1,des,start2,length);  
                  src:源数组,即被复制的数组名
              start1:源数组复制的开始下标
                 des:目标数组,即复制到的数组名
              start2:目标数组复制开始的下标
             length:复制的长度
     
     工具类提供的复制方法:元素类型[] 变量名 = Arrays.copyOf(src,newLength);     -----有扩容和缩容的效果
                                    src:源数组
                       newLength:新数组的长度                                                                                                               

       功能解释:

             从src的下标为0的元素开始复制复制到长度为newLength的新数组中新数组存放元素的开始位置为0。   

     6.8  数组的排序

        (1)冒泡排序

冒泡排序的基本思想:
                    在要排序的数组中,对当前还未排好序的范围内的全部数,自上而下(自左到右)对相邻的两个数依次进行比较                       和调整, 让较大的往下沉(或向右移),较小的往上冒(或向左移)。
                    即:每当两相邻的数比较后他们的顺序与排序要求 相反时,就将他们互换。  

冒泡排序的改进:
                   对冒泡排序的常见的改进方法是加入一个标志性的 变量,用于标志某一轮排序过程中是否有数据交换, 如果没                   有进行数据交换,则说明数据已经按照要求排列好,可立即结束排序,避免不必要的比较过程。
冒泡排序的每一步详情
          第一轮:找最大值
          4>5  false  {4,5,2,3,1}
          5>2  true   {4,2,5,3,1}
          5>3  true   {4,2,3,5,1}
          5>1  true   {4,2,3,1,5}--排出5
          第二轮:找第二大
          4>2  true   {2,4,3,1,5}
          4>3  true   {2,3,4,1,5}
          4>1  true   {2,3,1,4,5}--排出4
          第三轮:找第三大
          2>3  false  {2,3,1,4,5}
          3>1  true   {2,1,3,4,5}--排出3
          第四轮:找第四大
          2>1  true   {1,2,3,4,5}--排出2 

     (2)简单排序

简单选择排序基本思想:
                           在要排序的数组中,选择出最小(或者最大)的一个数与第一个位置的数交换;然后再剩下的数当 中再找最                            小(或最大)的与第二个位置的数交换依次类推,直到第n-1个元素(倒数第二个)和第 n个元素(最后一个数)比                            较为止。
   简单选择排序
          原始数据 {4,5,2,3,1};
          找出最小1  与4交换  {1,5,2,3,4}
          找出最小2  与5交换  {1,2,5,3,4}
          找出最小3  与5交换  {1,2,3,5,4}
          找出最小4  与5交换  {1,2,3,4,5}

     (3)工具类排序

工具类Arrays里的排序方法:  Arrays.sort(数组名):对基本数据类型的数组 与引用类型的数组都可排序                 

     6.9 二维数组

概念:数组的元素依然是数组
           int[] a = {1,2,3,4};
           int[][] b = {{1,2},{2,3,4,5,6},{1,2,3}}; 

二维数组的初始化:
         静态初始化----  如:int[][] a = {{1},{1,2},{2,3,4},{}};
          动态初始化:
                (1)等长式初始化
                         int[][] a = new int[3][2];
                         表示a有三个元素,每个元素都是2个长度的数组

                (2)只规定高维数组的长度
                        int[][] a = new int[3][];
                       表示a有三个元素,但是都是null.
                       null在使用时,需要新建数组对象(长度任意)。

猜你喜欢

转载自blog.csdn.net/zoe_ranxiaosu/article/details/81259641