数组

一、.数组

1、定义:数组类型[] 数组名 = new 数据类型[整数];

整数:数组的长度

int[] arr = new int[8];

arr是数组类型的变量(如果是引用数据类型习惯上叫引用),new int[8]真正的数据存储在堆中,新创建的数据的每一个位置上的值都是其所属数据类型的默认值,数组的索引是从0开始

整数类型(byte,short,int,long)的默认值都    0

小数(float,double)的默认值都是                      0.0

布尔数据类型(boolean)的默认值都是                false

字符数据类型(char)的默认值都是                      ‘ ’

基本数据类型的变量都存储在栈中,栈的特点是存储空间小,但是存取速度快,先进后出

引用数据类型所占的空间比较大,存储在堆中,堆的特点,空间大,存取的速度较栈慢

 //给数组里面的数据来设置值

arr[0] = 22;

arr[1] = 55;

arr[2] = 6;

arr[3] = 8;

rr[4] = 99;

arr[5] = 9;

arr[6] = 19;

arr[7] = 221;

//数组的下标不要越界使用,否则会报错

//arr[8] = 11;

/*

数组是引用数据类型,引用数据类型有可能发生空指向的问题

 引用数据类型可以赋值成null,这就代表是空指向

int[] arr = null;

*/

 

2、数组的三种定义方式

 数组的另外两种定义方式

2.2语法:数据类型[] 数组变量名 = {值1,值2,...}

int[] array = {12.34,56...};

数组的长度由value的数量来决定

2.3语法:数据类型[] 数组变量名 = new 数据类型[]{值1,值2,...}

int[] array = new int[] {12.34,56...};

数组的长度由value的数量来决定

printArr();是一个函数,他需要传入一个参数

一般情况下

int[] arr = new int[8];

printArr(arr);

不方便定义数组名字的情况下

第三种第一方式派上用场,如printArr(new int[] {12.34,56...});

所以第三种方法适合传递匿名的常量数组

 

数组的应用

3、求极值

 calss Demo{

  public static void main(String[] args){

        itnp[] arr = {12,4,5,6,78,84,24};

        int result = max(arr);

        System.out.println(result);

    }

   public static int max(int[] arr){

       //定义一个最大值的结果变量

       int maxValue = -1;

       //为了程序的严谨性,一定要判断null和0长度的问题

       if(arr != null && arr.length != 0){ //arr != null && arr.length != 0的顺序不能颠倒,因为若是颠倒,程序变为arr.length != 0 && arr != null 若是存在空指向问题,则不知道数组的长度arr.length != 0将会报错

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

                       //如果遍历的数组中的值比最大值变量大的话,需要更换

                       if(arr[i] > maxValue){

                               maxValue = arr[i];

               }

           }

        }

       return maxValue;

    }

}

 

4、冒泡排序

calss Demo{

  public static void main(String[] args){

        itnp[] arr = {23,25,12,7,51};

        sortPop(arr);

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

                  System.out.print(arr[i]+"\t");

          }

       }  

 public static void sortPop(int[] arr){

        if(arr != null && arr.length != 0){

        //外层循环是轮数

        for(int i = 0 ; i < arr.length-1 ; i++){

          //内层循环是每一轮比较的次数

           for(int j= 0 ; j < arr.length-i-1 ; j++){

                  if(arr[j+1] > arr[j]){

                         //定义一个临时变量

                         int temp = arr[j];

                         arr[j] = arr[j+1];

                         arr[j+1] = temp;

               }

            }

         }

      } 

    }

}

 

5、数组的倒置

 calss Demo{

  public static void main(String[] args){

        itnp[] arr = {23,25,12,7,51,34,66,789};

        reverseArr(arr);

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

                  System.out.print(arr[i]+"\t");

          }

       } 

public static void reverseArr(int[] arr){

         for(int j= 0 ; j < arr.length/2 ; j++){

                 //交换对称的数

                 int temp = arr[arr.length-1-i];

                 arr[arr.length-1-i] = arr[i];

                 arr[i] = temp;

     }

}

6、二维数组

 

posted @ 2019-03-16 21:56  小蟠  阅读(154)  评论(0编辑  收藏  举报