黑马程序员--数组

来源:互联网 发布:js获取当前unix时间戳 编辑:程序博客网 时间:2024/06/09 23:10

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------



什么是数组?

 

数组(Array)是Java 语言中内置的一种基本数据存储结构,通俗的理解,就是一组数的集合,目的是用来一次存储多个数据。数组是程序中实现很多算法的基础,可以在一定程度上简化代码的书写。

 

数组的概念:

 

 

         同一种类型数据的集合。其实数组就是一个容器。

         数组的好处

         可以自动给数组中的元素从0开始编号,方便操作这些元素。

 

         一维数组:

         格式1

         元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

         示例:int[] arr = nwe int[5];

         (动态初始化)

 

         格式2

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

         int [] arr =newint[]{3,4,1,7};

         int [] arr = {3,4,1,7};

         (静态初始化)

 

注:动态初始化和静态初始化不能同时使用。

 

数组取出:

         通过数组的角标来获取,定义一个int 数组arr 长度为5,则可以取出arr中的1-4角标(从0开始计算,Java中大多都是含头不含尾)àarr[x](x<5)如角标出界限,则会出现ArrayIndexOutOfBoundsExceptio:数组角标越界异常,而当对数组进行动态初始化并未赋值的情况下进行取值,则会出现NullPointerException:空指针异常。在不确定数组长度的情况下可以使用.length来获取数组的长度。

示例:

package com.itheima;

 

public class ArrayDemo {

    public static void main(String[] args) {

       //通过静态初始化设置int数组的值

       int[] arr = new int[]{3,5,7,9};

       //通过Array.length方法获取数组长度。

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

           //打印出x角标说对应的值。

           System.out.println(arr[x]);

       }

    }

}

/*3

5

7

9

*/

 

常见操作:

package com.itheima;

 

import java.util.Arrays;

 

public class ArrayDemo {

    public static void main(String[] args) {

       int[] arr = new int[]{3,5,7,9,8,7,3};

//     repetition(arr);

//     max(arr);

       printArr(arr);

//     bubble(arr);

//     selection(arr);

       //开发中常用为Arrays.sort

       Arrays.sort(arr);

       printArr(arr);

      

    }

    private static void repetition(int[]arr) {

       //判断数组中元素是否重复。

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

           for(intj = i+1;j<arr.length;j++){

              if(arr[i]==arr[j]){

                  System.out.println(i+"角标元素:"+arr[i]+""+j+"角标元素:"+arr[j]+"是重复的");

              }

           }

       }

/*     0角标元素:36角标元素:3是重复的

       2角标元素:75角标元素:7是重复的

*/

    }

   

   

    private static void max(int[]arr) {

       //求数组中的最大值。

       int max = 0;

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

           if(max<arr[i])

              max = arr[i];

       }

       System.out.println("数组中最大值为:"+max);

    }

   

   

    private static void bubble(int[]arr) {

       //冒泡排序,从小到大

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

           //arr.length-i-1让每一次比较的元素减少,-1是为了防止数组角标越界

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

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

                  inttemp = 0;

                  temp = arr[y];

                  arr[y] =arr[y+1] ;

                  arr[y+1] =temp;

              }

           }

       }

    }

   

    //选择排序

    private static void selection(int[]arr) {

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

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

              if(arr[i] >arr[j]){

                  inttemp = arr[i];

                  arr[i] =arr[j];

                  arr[j] =temp;

              }

           }

       }

      

    }

   

    //打印数组。

    private static void printArr(int[]arr) {

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

           if(i!=arr.length-1)

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

              else

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

       }

       //Arrays方法中提供的方法。

//     System.out.println(Arrays.toString(arr));

    }

}

 

二维数组

二维数组其实就是一个一维数组的数组。他的每一个元素都是一维数组。

 

初始化方法:

         动态初始化:

       int[][] arr2 =new int[3][5];

       定义了一个二维数组,二维数组中有3个一维数组,每一个一维数组有5个元素。

    静态初始化:

           int[][]arr3 = newint[][]{

           {1,2,3},

           {4,5,6}

           };

 

二维数组取值操作:

package com.itheima;

 

public class ArraysDemo2 {

    public static void main(String[] args) {

       int[][]arr = newint[][]{

              {3,3,5},

              {2,3},

              {345,3,2}

       };

       //首先获取到二维数组中的一位数组,再获取一维数组中的元素。

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

           System.out.print("{");

           for (intj = 0; j < arr[i].length;j++) {

              if(j!=arr[i].length-1)

                  System.out.print(+arr[i][j]+",");

              else{

                  System.out.println(arr[i][j]+"}");

              }

           }

       }

    }

}

 

 

0 0
原创粉丝点击