JAVA学习四:数组

数组的定义:

        数组即为同一种类型的数据的集合,其实数组就是一个容器;

数组的好处:

        可以自动给数组中的元素从0开始编号,方便操作这些元素,(即为数组中存放的每一个元素赋以了自然顺序相对应的角标)。

数组定义时的第一种格式:

         元素类型[] 数组名 = new 元素类型[数组中需要存放的元素个数]

         示例:int[] arr = new int[5]    

        //int[5]代表的是arr这个数组的长度,即arr里将要存放5int类型的数据。

数组定义时的第二种格式:

        元素类型 [] 数组名 = new 元素类型[]{元素,元素,元素,……}

        示例:int[] arr = new int[]{3,5,1,9}

        int [] arr = {3579}

 

注:数组被创建时就默认赋予了初始值,

int型数组默认值是0;(即int型数组中所有元素的初始值都为0);

double型数组默认值是0.0

float型数组默认值是0.0f

boolean型数组默认值是false

示例:int[] arr = new int[5]arr[0] = 59//表示将59赋值给了数组arr中角标为0的元素。

arr = null;时,表示将数组arr置为空,arr为空后将释放堆区中的数组空间;

new int[5];表示在堆区开辟出了数组空间,同时将空间地址赋值给了栈区中的arr,栈区arr得到的是数组空间在堆区的地址,而不是数组的值。

 

数组在使用中的异常:

        ArrayIndexoutofBoundsException:数组角标越界异常;操作数组时,访问到了数组中不存在的角标时,就会抛出该异常;

        NullpoiterException:空指针异常,当引用没有任何指向,同时值为null的情况下,该引用还在用于操作实体,数组指向为空,没有任何引用对象造成的异常。

 

数组的操作:

        获取数组中的元素,通常会用到遍历;

        数组中有一个属性可以直接获取到数组元素的个数,名词为:length

        length的使用方法为:数组名称点上 length;比如:arr.length;表示取得数组arr的元素个数(即arr数组的长度);

 

例题:

1、获取数组中最大值:

public static int getMax(int [] arr)        //getMax(int [] arr);接收的形式参数为一个int数组;

{

       int max = arr[0]                       //将数组arr0角标中存放的元素赋给max

       for (int x= 1x<arr.lengthx++)       //使用for循环来遍历数组;

      {

              if (arr[x] > max)           //如果数组1角标中的元素大于数组0角标中的元素,

                    max = arr[x]      //那么就把数组1角标中的元素赋给max

       }

             return max         //for遍历完数组后,将max中记录的最大值返回给调用者。

}

 

 

2、对给定数组进行排序:

public stativ void selectsort(int[] arr)    // selectsort(int[] arr);接收一个int数组;

{    

         //使用嵌套for循环;(即大圈套小圈)

         for (int x= 0x<arr.length-1x++)    //外圈for0角标开始遍历;

         {    

                  //内圈for从外圈for的下一位元素开始遍历;

                  for (int y= x+1y<arr.lengthy++) //x+1的角标便是下一个元素的角标

                  {    

                           //如果x角标元素大于y角标元素,就执行if 语句中的代码;

                           if (arr[x] > arr[y]) 

                           {    

                                    //换位操作,把数组中最大的元素向后移。把最小的元素向前移。

                                    int temp = arr[x]//定义一个变量temp用来记录x角标中的元素;

                                    arr[x] = arr[y]//y角标中的元素赋给x角标;

                                    arr[y] = temp//temp的值赋给y角标;

                           }

                  }

         }

}

 

冒泡排序:

public static void bublesort(int[] arr)

{

       for(int x= 0x<arr.length-1x++)

       {    

              //x是让第一次比较的元素减少,减1是避免角标越界;

              for (int y= 0y<arr.length-x-1y++)

              {

                     if (arr[y] < arr[y+1])    

              {    

                     //换位操作,

                     int temp = arr[y]

                     arr[y] = arr[y+1]

                     arr[y+1] = temp

              }

       }

}

 

 

二维数组:

        示例:int[][] arr = new int [3][4]

                    //定义了名称为arr的二维数组,二维数组中有三个一维数组,每一个一维数组中有四个元素;一维数组的名称分别为arr[0]arr[1]arr[2]

                    如果要给第一个一维数组的“1”角标位赋值为78的写法是:arr[0][1] = 78

 

二维数组的第二种写法格式:

        示例:int[][] arr = new int[3][]

                    //二维数组中有3个一维数组,每个一维数组都是默认初始化值null;而且可以对这三个一维数组分别进行初始化;

        例如:

                   arr[0] = new int[3]

                   arr[1] = new int[1]

                   arr[2] = new int[5]

 

 

例题:遍历二维数组并求和

class Array2Demo

{

       public static void main(String[] args)   //主函数

       {

              int[][] arr = {{3,2,4,1},{5,4,5},{6,4,7,1,8,4},{4,2,4}};     //定义一个二维数组arr

 

              bl(arr);

              int index  = getAdd(arr);

              System.out.println("二维数组的和是:"+index);

       }

 

       public static void bl(int[][] arr)     //遍历二维数组

       {

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

              {

                     System.out.print("arr["+x+"]={");

                     for (int y=0; y<arr[x].length; y++)

                     {

                     System.out.print(arr[x][y]);

                     }

                     System.out.println("}");

              }

       }

 

       public static int getAdd(int[][]arr)//二维数组求和

       {

              int temp = 0;   //定义一个变量用来存放二维数组元素相加的和;

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

              {

                     for (int y=0; y<arr[x].length; y++)//嵌套for循环遍历二维数组中的每一个元素

                     {    

                            //遍历到一个元素,便和temp相加一次,并把相加的和重新赋给temp//方便temp继续和下一个元素相加.

                            temp = temp + arr[x][y];

                     }

              }

              return temp;

       }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值