zoukankan      html  css  js  c++  java
  • java基础-数组

    1、数组是什么

        数组是具有相同数据类型的一组数据的集合。例如,球类的集合——足球、篮球、羽毛球等;电器集合——电视机、洗衣机、电风扇等。在程序设计中,可以将这些集合称为数组。数组中的每个元素具有相同的数据类型。在Java中同样将数组看作是一个对象,虽然基本数据类型不是对象,但是由基本数据类型组成的数组则是对象。在程序设计中引入数组可以更有效地管理和处理数据。可根据数组的维数将数组分为一维数组、二维数组……


    2、一维数组的创建和使用

     

        数组作为对象允许使用new关键字进行内存分配。在使用数组之前,必须首先定义数组变量所属的类型,即声明数组,声明一维数组有两种形式,语法如下所示:

        数组元素类型  数组名字[ ];

        数组元素类型[ ]  数组名字;

        数组元素类型:决定了数组的数据类型,它可以是Java中任意的数据类型,包括基本数据类型和非基本数据类型。

        数组名字:为一个合法的标识符

        符号“[ ]”:指明该变量是一个数组类型变量,单个“[ ]”表示要创建的数组是一维数组

        

        数组可以与基本数据类型一样进行初始化操作,数组的初始化可分别初始化数组中每个元素。数组的初始化有两种形式。

        两种方法初始化一维数组,示例代码如下所示:

        int arr[] = new int[]{1,2,3,5,25};//第一种初始化方式

        int arr2[] = {34,23,12,6};//第二种初始化方式

        数组的初始化方式是:把数据类型包括在大括号之内,中间用逗号分开数组元素的值,系统自动为数组分配一定的空间。第一种初始化方式,创建5个元素的数组,其值依次为1、2、3、5、25;第二种初始化方式,创建4个元素的数组,其值依次为34、23、12、6。


    3、一个实例:遍历显示12月都有多少天

    public class Example3 {
        public static void main(String[] args) {
            int[] month = new int[]{31,28,31,30,31,30,31,31,30,30,30,31};
            for(int i = 0 ; i < 12; i++){
                System.out.println((i+1)+"月份的天数是"+month[i]+"天");
            }
        }
    }

    4、数组操作==遍历

        遍历数组就是获取数组中的每个元素。通常遍历数组都是使用for循环来实现。遍历一维数组很简单,也很好理解。

        遍历二维数组要比遍历一维数组要麻烦一些,需使用双层for循环,还要通过数组的length属性获得数组的长度。

    public class Trap {
        public static void main(String[] args) {
            int b[][] = new int[][]{{0},{1,2,3},{4,5,6}};
            for(int i = 0 ; i < b.length ; i++){
                for(int k = 0 ; k < b[i].length ; k++){
                    System.out.print(b[i][k]);
                }
                System.out.println();
            }
        }
    }

    5、二维数组的创建

        声明二维数组的方法有两种,语法如下所示:

        数组元素类型 数组名字[ ][ ];

        数组元素类型[ ][ ] 数组名字;

        数组元素类型:决定了数组的数据类型,它可以是Java中任意的数据类型,包括基本数据类型和非基本数据类型。

        数组名字:为一个合法的标识符

        符号“[ ]”:指明该变量是一个数组类型变量,两个“[ ]”表示要创建的数组是二维数组。

        

        二维数组的初始化同一维数组初始化类似,同样可以使用大括号完成二维数组的初始化。语法如下所示:

        type arrayname[][] = {value1,value2…valuen};

        type:数组数据类型

        arrayname:数组名称,一个合法的标识符

        value:数组中各元素的值


    6、数组操作==填充和替换

        数组中的元素定义完成后,可通过Arrays类的静态方法fill()来对数组中的元素进行替换。该方法通过各种重载形式可完成任意类型的数组元素的替换。fill()方法有两种参数类型。下面以int型数组为例介绍fill()方法的使用方法。

    (1)fill(int[],int value):这个方法可以指定int的值分配给int型数组的每个元素。

        语法如下:fill(int[] a,int calue)

        a:要进行替换元素的数组

        value:要存储数组中所有元素的值

      (2)fill(int[] a,int fromIndex,int toIndex,int value):将指定的int值分配给int型数组指定范围的每个元素,填充范围从索引formIndex(包括)到索引toIndex(不包括)。如果formIndex=toIndex,则填充范围为空。

        语法:

        fill(int[] a,int formIndex,int toIndex,int value)    

        a:要填充的数组

        fromIndex:要使用指定值填充的第一个元素的索引(包括)

        toIndex:要使用指定值填充的最后一个元素的索引(不包括)

        value:要储存在数组所有元素中的值


    实例1:

    import java.util.Arrays;
    public class Swap {
        public static void main(String[] args) {
            int[] a = new int[5];
            Arrays.fill(a,8);
            for(int i = 0 ; i < a.length ; i++){
                System.out.println("第"+i+"个元素是" + a[i]);
            }
        }
    }

    运行结果:

    实例2:

    import java.util.Arrays;
    public class Displace {
        public static void main(String[] args) {
            int arr[] = new int[]{45,12,25,23};
            Arrays.fill(arr,1,2,3);
            for(int i = 0 ; i < arr.length ; i++){
                System.out.println("第"+i+"个元素是" + arr[i]);
            }
        }
    }

    运行结果:

    7、数组操作==排序

        通过Arrays类的静态sort()方法可实现对数组排序,sort()方法提供了许多种重载形式,可对任意类型数组进行升序排序。语法如下所示:

        Arrays.sort(object)

        object:指进行排序的数组名称

        返回值:排序后的数组

    import java.util.Arrays;
    public class Taxis {
        public static void main(String[] args) {
            int arr[] = new int[]{15,8,2,23,36};
            Arrays.sort(arr);
            for(int i = 0 ; i < arr.length ; i++){
                System.out.println("第"+i+"个元素是" + arr[i]);
            }
        }
    }

    运行结果:

    8、数组操作==复制

        Arrarys类的copyOf()方法与copyOfRange()方法可实现对数组的复制。

       (1) copyOf()方法是复制数组至指定长度,

        语法:

        copyOf(arr,int newlenth)

        arr:要进行复制的数组

        newlenth:int型常量,复制后新数组的长度。如果新数组长度大于数组arr长度,用0填充。如果小于,就从数组arr第一个元素开始截取至满足新数组长度为止。

       (2)copyOfRange()方法则将指定数组的指定长度复制到一个新数组中。

        语法:copyOfRange(arr,int formIndex,int toIndex)

        arr:要进行复制的数组对象

        formIndex:指定开始复制数组的索引位置。formIndex必须在0至整个数组长度之间。新数组包括索引是formIndex的元素

        toIndex:要复制范围的最后索引位置,可大于数组arr长度,新数组不包括索引是toIndex的元素。


    实例1:

    import java.util.Arrays;
    public class Copy {
        public static void main(String[] args) {
            int arr[] = new int[]{15,8,2,236};
            int newarr[] = Arrays.copyOf(arr,5);
    
            for(int i = 0 ; i < newarr.length ; i++){
                System.out.println("第"+i+"个元素是" + newarr[i]);
            }
        }
    }

    运行结果:

    实例2:

    import java.util.Arrays;
    public class repeact {
        public static void main(String[] args) {
            int arr[] = new int[]{15,8,2,236};
            int newarr[] = Arrays.copyOfRange(arr,0,3);
    
            for(int i = 0 ; i < newarr.length ; i++){
                System.out.println("第"+i+"个元素是" + newarr[i]);
            }
        }
    }

    运行结果:

    9、数组操作==数组查询

        Arrays类的binarySearch()方法,可使用二分搜索法来搜索指定数组,以获得指定对象。该方法返回要搜索元素的索引值。binarySearch()方法提供了多种重载形式,用于满足各种类型数组的查找需要。binarySearch()方法有两种参数类型。

        (1)binarySearch(Object[].Object key)

        语法:binarySeach(Object[] a,Object key)

            a:要搜索的数组

            key:要搜索的值

        (2)binarySearch(Object[].,int fromIndex , int toIndex,Object key)

     

         语法:

            binarySearch(Object[] a,int formIndex,int toIndex,int value)    

            a:要检索的数组

            fromIndex:指定范围的开始处索引(包括)

            toIndex:指定范围的结束处索引(不包括)

            value:要搜索的值


    实例1:

    import java.util.Arrays;
    public class Example4 {
        public static void main(String[] args) {
            int arr[] = new int[]{15,8,2,236};
            Arrays.sort(arr);
            int index = Arrays.binarySearch(arr,15);
            System.out.println("2的索引位置是:"+index);
        }
    }

    运行结果:

    实例2:

    import java.util.Arrays;
    public class Rakel {
        public static void main(String[] args) {
            String str[] = new String[]{"b","ff","cccc","aa"};
            Arrays.sort(str);
            int index = Arrays.binarySearch(str,0,2,"b");
            System.out.println("ff的索引位置是:"+index);
        }
    }

    10、排序算法-冒泡排序

        在程序设计中,经常需要将一组数列进行排序,这样更加方便统计与查询。程序常用的排序方法有冒泡排序、选择排序和快速排序等。本节将介绍冒泡排序方法,它以简洁的思想与实现方法而备受青睐,是广大学者最先接触的一个排序算法。

        冒泡排序是最常用的数组排序算法之一,它排序数组元素的过程总是小数往前放,大数往后放,类似水中气泡往上升的动作,所以称作冒泡排序。


    11、直接选择排序

        直接选择排序方法属于选择排序的一种,它的排序速度要比冒泡排序快一些,也是常用的排序算法,是初学者应该掌握的。


    12、反转排序

        顾名思义,反转数组就是以相反的顺序把原有数组的内容重新排序。反转排序算法在程序开发中也经常用到。


  • 相关阅读:
    2016012061 小学四则运算练习软件项目报告
    阅读《构建之法》的几点思考
    软件工程之我见
    作业五
    结对作业
    第4.17章读书笔记
    week_2 四则运算
    第1.2.16章读书笔记
    我与软件工程
    团队项目Alpha冲刺阶段之学习总结
  • 原文地址:https://www.cnblogs.com/pangchunlei/p/12247788.html
Copyright © 2011-2022 走看看