三. 数组总结

来源:互联网 发布:linux select timeout 编辑:程序博客网 时间:2024/05/19 08:41


一.数组的定义格式

            数据类型数组名[] = new数组类型 [数组个数]

   

     数据类型[]数组名 = new数组类型 [数组个数]

例如:

 int demo[] =newint[5];

初始化方式有两种:

   int demo1[] = newint[]{1, 2, 3, 4, 5};

  intdemo2[] = {1, 2, 3, 4, 5};

 

二.数组的长度:

                        数组名.length;

例如:intlength = demo.length; ----->结果为5.

 

三.数组的内存分析

       数组属于引用数据类型,所以需要用户为其分配内存空间,也就是如上所示那样创建数组。

    数组变量demo中存放这些内存单元的首地址,该地址称为数组的引用,这样就可以通过索引操作这些连续的内存单元。索引是从0开始的。

例如:demo[0] = 10; demo[1] = 20;

四.多维数组 

       Java中采用“数组的数组”来声明多维数组。例如一个二维数组可以是是由多个一维数组组成。

例如:

int demo[] =newint[3][4];

是由3个长度为4的一维数组组成,demo[0]demo[1]demo[2]

另外组成多维数组的一维数组不必有相同的长度:

   demo[0] =newint[5];

 demo[1] = newi nt[3];

五.对象数组

        即数组声明的数据类型为类,此数组即为对象数组。

例如:

  Book bookArray [] =newBook[3];

  bookArray[0] =newBook("Java", 10.21);

  bookArray[1] =newBook("JSP", 11.3);

  bookArray[2] =newBook("SSH", 10.1);

或者在开始定义时初始化:

   Book bookArray[] =new Book[] {

            new Book("Java", 10.21),

            new Book("JSP", 11.3),

            new Book("SSH", 10.1)

     };

   对数组的遍历,JDK1.5版本提供了for-each方式:

            for(数组类型 循环变量:数组名字) {

                ……..

}

      循环变量依次取出数组的每一个元素的值。

例如:

  for(Book i : bookArray){

         System.out.println(i);

  }

六.操作数组类(Arrays

java.lang.Object

   |-java.util.Arrays

Arrays类是在JDK1.5后提供,主要是数组相关的操作类。

提供的方法都是static方法可以直接调用,常用的方法罗列如下:

方法

具体描述

public staticStringtoString(数据类型[] a) 

返回数组a的字符串表示形式

public staticvoidsort(数据类型[] a)

对数组a进行升序排列

public staticintbinarySearch(数组类型[] a,数据类型key)

二分法查找key是否在数组a中,前提是a需要先排好序。如果相同,返回索引,否则返回一负数

Public static数组类型[]copyOf(数组类型[] original, int length)

original数组从索引0开始的length个元素复制到一个新数组中,并返回这个数组

public static数组类型[]copyOfRange(数组类型[] original, int from, int to)

original数组的fromto索引的元素复制到新数组中,并返回

public staticbooleanequals(数据类型[] a,数据类型[] a2) 

这个方法与object类中的equals方法无关联,比较两个数组中的元素及顺序是否完全相同,相同返回true,否则false.

public static voidfill(数组类型[] a,数据类型 val)

val值填充数组a.

示例如下:

    int data[] =newint[]{49, 32, 232, 2, 10, 3};

    int comData[] =newint[]{49, 2, 232, 23, 10, 3};

     

     //把数组转化为字符串表示形式:[49, 32, 232, 2, 10, 3]

     String str = Arrays.toString(data);

     

     //升序排列:2 3 10 32 49 232

     Arrays.sort(data);

     

     //二分法查找,需要先排序,存在返回索引值,不存在返回负数

     int index = Arrays.binarySearch(data, 2);

     

     //数组copy,拷贝原数组的length个值,超过原数组长度的话,设置默认值

     int cpData[] = Arrays.copyOf(data, data.length);

     int cpData2[] = Arrays.copyOfRange(data, 2, 5);

     

     //比较两个数组是否相同(元素和顺序),相同为true,不相同为false

     boolean result = Arrays.equals(data, comData);

     

     //填充数组:8 8 8 8 8

     int fillData[] = newint[5];

     Arrays.fill(fillData, 8);

 

1 0
原创粉丝点击