Java 数组

  1、数组的概念

  数组是特定类型数据的有序集合,它将相同类型的数据组织在一起,可以实现对它们的线性访问。

  “[ ]”叫做索引运算符(Index Operator),用于访问数组中的特定元素。

  数组下标的类型是长整型。

 

  2、数组的创建和初始化

  声明数组引用变量:

  不同于基本数据类型,声明一个数组引用变量时并不为数组在内存中分配存储空间。它只是创建了一个数组的引用的位置,该引用可以不指向任何数组。此时,可以赋值为空。

  创建数组:new操作符开辟内存。在编译时,必须能够确定数组的大小,否则编译器会报错。

/*创建数组*/
float [] scores=new float[10];

/*初始化数组*/
/*可以直接在创建时初始化*/
float[] scores={1,2,3,4};
float[] scores=new float[]{1,2,3,4}

  在执行后,数组名scores指向内存中数组对象空间的首地址。

 

  3、数组操作

  scores.length记录了数组的长度;

  如何实现数组的乱序(Shuffle)功能?

  for-each用于遍历集合类型,它不使用下标就可以顺序遍历整个集合。

/*逐个输出数组元素*/
for(float x:scores){
    System.out.println(x);
}  

  4、数组复制

  (1)for循环,要避免数组越界;

  (2)System.arraycopy(Object src,int srcPos,Object dest,int destPost, int length)

   srcPos复制的起始位置,destPost在目标数组中放置数据的起始位置,length复制的数据的长度;

  5、传递数组

  数组有属性成员,所以数组是对象,它作为参数传递时传递的是数组的引用。

 

  6、可变长参数列表

  方法可以声明嫩接受可变数目的参数,可变长参数本质上是一个数组。

  对这样的方法,即可以传递离散的若干个值,也可以传递一个数组对象。

  如果方法有多个参数,可变长参数放在参数列表的最后

/*函数的可变长参数列表*/
public int add(int...arrays){
  int sum=0;
  for(int i:arrays)
      sum+=i;  
}

/*使用*/
add(1,2,3);
add(new int[]{1,2,3});

 

  7、二维数组:一个一维数组的每一个元素是一个一维数组。

  8、二分查找——在有序的数组中查找特定元素,是典型的递归算法。

/*二分查找*/
public int binarySearch(float[] array,int from,int to,float key){
        if(from<0 || to<0){
            System.out.println("params from & length must lager than 0");
            return -1;
        }

        if(from<=to){
            int middle=(from>>>1)+(to>>>1); //  右移除以2
            double temp=array[middle];
            if(temp>key){
                to=middle-1;
            }else if(temp<key){
                from=middle+1;
            }else{
                return middle;
            }
        }
        return binarySearch(array,from,to,key);
    }

  9、java.util.Arrays

  Arrays是提供数组操作的包装类,它所有的方法都是静态的。

/*每个函数都有多个重载函数*/
/*给数组元素赋值*/
Arrays.fill()

/*按升序对数组排序*/
Arrays.sort()

/*比较两个数组中的元素是否相同*/
Arrays.equals(array1,array2)

/*查找元素,对排好序的数组进行二分查找*/
/*3在数组中的位置*/
Arrays.binarySearch(array1,3)

 

  10、对象数组

  数组元素不是基本类型时,数组中存放的是引用类型,而不是对象本身。

  所以必须让数组元素指向具体对象后,才能访问数组,否则会引发异常。

  

原文地址:https://www.cnblogs.com/bigbigbigo/p/8420639.html