Java——数组

来源:互联网 发布:网络电影 罪 在哪看 编辑:程序博客网 时间:2024/06/05 19:47

数组简介:

  • 数组是一组变量集合,存储相同数据类型的一组数据。 连续的空间。
  • 声明一个变量就是在内存空间划出一块合适的空间。
  • 声明一个数组就是在内存空间划出一块连续的空间。
  • 数组名,即标识符,连续空间的首地址。 —数组只有一个名字。
  • 元素下标标明了元素在数组中的位置,从0开始。
  • 数组中的每个元素都可以通过下标来访问。
  • 数组长度固定不变,避免数组越界。

如何使用数组?

使用数组四步走:

  • 1.声明数组 int [ ]a; —告诉计算机数据类型是什么?
    声明的数组变量: —声明数组的时候不告诉长度。
    dataType[] arrayRefVar; // 首选的方法 或者 dataType arrayRefVar[]; // 效果相同,但不是首选方法
    eg:double[] myList; // 首选的方法

  • 2.分配空间 a = new int[5]; —告诉计算机分配几个连续的空间。

  • 3.赋值 a[0] = 8; —向分配的格子里放数据
  • 4.处理数据 a[0] = a[0] * 8;

数组赋值:

  • 方法一:边声明边赋值
    int[] score = {89,79,76};
    int[] score = new int[]{89,79,76}; //不能指定数组长度
  • 方法二:使用循环
    for(int i=0;i<30;i++){
    score[i]=input.nextInt();
    }

数组的创建:

  数组创建的格式是:  数据类型[ ]   数组名称=new 数据类型[ 数组的长度 ]     数据类型[ ]   数组名称={元素1,元素2...}
  • Java语言使用new操作符来创建数组。

语法:arrayRefVar = new dataType[arraySize];

  • 1:使用dataType[arraySize]创建了一个数组。
  • 2:把新创建的数组的引用赋值给变量 arrayRefVar。
 数组变量的声明,和创建数组可以用一条语句完成,如下所示: dataType[] arrayRefVar = new dataType[arraySize]; 还可以使用如下的方式创建数组。 dataType [] arratRefVar = {value0,value1,...,valuek}; 数组的元素是通过索引访问的。数组索引从0开始,所以索引值从0到arrayRefVar.length-1。

处理数组(数组的遍历):

 当处理数组元素时候,我们通常使用基本循环或者foreach循环。

foreach循环:

foreach循环又称加强型循环,能在不使用下标的情况下遍历数组。
显示数组myList中的所有元素:
double[] myList = { 1,2,3,4,5,2,1};
for(double element:myList){
System.out.println(element); //打印所有数组元素
}
~~~~~~~~~~~
实例:*从第一个开始遍历到最后一个,不能控制范围。

 for(int score:scores){    //第一个score是每一次遍历到的元素    //第一个表达式是声明一个变量去接受每次循环得到的元素    //第二个scores是要遍历的对象    //第二个表达式是需要变量的数组或集合    //定义的变量类型必须跟数组的类型一致(表达式一的数据类型必须跟表达式二的数据类型一致)    System.out.println(score);    }

数组作为函数的参数:

  数组可以作为参数传递给方法。  eg:打印int数组中元素的方法。  for(int i=0;j<array.length;i++){  System.out.println(array[i]+" ");  }

数组作为函数的返回值:

public static int[] reverse(int[] list) {  int[] result = new int[list.length];  for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {    result[j] = list[i];  }  return result;}

result数组作为函数的返回值。


Arrays类:

java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:
给数组赋值:通过fill方法。

对数组排序:通过sort方法,按升序。

比较数组:通过equals方法比较数组中元素之是否相等。

查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。


多维数组:

多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
String str[][] = new String[3][4];

多维数组的动态初始化(以二维数组为例):
1.直接为每一维数组分配空间:

    type arrayName = new typ[arraylenght1][arraylenght2];
   type 可以为基本数据类型和复合数据类型,arraylenght1 和 arraylenght2 必须为正整数,arraylenght1 为行数,arraylenght2 为列数。          例如:`int a[][] = new int[2][3];`

2. 从最高维开始,分别为每一维分配空间,例如:

    String s[][] = new String[2][];       s[0] = new String[2];       s[1] = new String[3];       s[0][0] = new String("Good");       s[0][1] = new String("Luck");       s[1][0] = new String("to");       s[1][1] = new String("you");       s[1][2] = new String("!");

解析:s[0]=new String[2] 和 s[1]=new String[3] 是为最高维分配引用空间,也就是为最高维限制其能保存数据的最长的长度,然后再为其每个数组元素单独分配空间 s0=new String(“Good”) 等操作。

多维数组的引用(以二维数组为例)
对二维数组中的每个元素,引用方式为 arrayName[index1][index2],例如:
num[1][0];


ArrayList类:

数组的长度不固定时,需要通过List来实现不固定长度的数组操作。

List是一个无限制长度的数组接口,ArrayList类和LinkedList类实现了接口来满足数组无限长度的需求。

二者的区别是:ArrayList方便获取指定位置的值,但是不方便修改指定位置的值;LinkedList类方便修改指定位置的值,不方便获取指定位置的值。

ArrayList类实现了Serializable, Cloneable, Iterable, Collection, List, RandomAccess等接口。可以用于保存不限长度的数组元素,

ArrayList常用的方法有:add、clear、contains、get、isEmpty、remove、size等。add(参数):将指定的元素添加到此列表的尾部。clear():移除此列表中的所有元素。contains(参数):如果此列表中包含指定的元素,则返回 true。get(参数):返回此列表中指定位置上的元素。isEmpty():如果此列表中没有元素,则返回 true。remove(参数):移除此列表中指定位置上的元素。size():返回此列表中的元素数。
原创粉丝点击