5.数组边界
下标的合法区间:[0, length-1],如果越界就会报错;
public static void main(String[] args) { int[] a=new int[2]; System.out.println(a[2]); }
6.小结
数组是相同数据类型(数据类型可以为任意类型)的有序集合。
数组也是对象。数组元素相当于对象的成员变量(详情请见内存图)。
数组长度的确定的,不可变的。如果越界,则报:ArrayIndexOutofBounds。
数组的使用
1.For-Each
JDK1.5引进了一种新型循环类型,被称为For-Each循环或者加强型循环,它们在不使用下标的情况下遍历数组。
语法格式为:
for(type element: array){ System.out.println(element); }
【示例】
public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素 for (double element: myList) { System.out.println(element); } }
2.数组作为方法传入
数组可以做参数传递给方法。
例如下面一个例子就是打印数组:
public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } }
3.数组做返回值
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作为数组返回。
多维数组
多维数组可以看作是数组的数组,比如一个二维数组就是一个一维数组组成的一维数组。
1.多维数组的动态初始化(以二维数组为例)
直接为每一维分配空间,格式如下;
type[][] typeName = new type[typeLength1][typeLength2];
2.多维数组的引用(以二维数组为例)
type 可以为基本数据类型和复合数据类型, arraylenght1 和 arraylenght2 必须为正整数,
arraylenght1 为行数, arraylenght2 为列数。
比如定义一个二维数组:
int a[][] = new int[2][3];
解析:二维数组 a 可以看成一个两行三列的数组。
对二维数组中的每个元素,引用方式为 arrayName[index1] [index2] ,例如:
num[1] [0];
其实二维甚至多维数组十分好理解,我们把两个或者多个值当做定位就好。
原来的数组就是一条线,我们知道一个位置就好 。
二维就是一个面,两点确定一个位置。
三维呢,就需要三个点来确定。
依次理解就可以。
3.获取数组长度:
a.length获取的二维数组第一维数组的长度,a[0].length才是获取第二维第一个数组长度。
Arrays 类
数组中的工具类java.util.Arrays。
由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从
而可以对数据对象进行一些基本的操作。
文档简介
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不用"使用对象来调用(注意:是"不用" 而不是 "不能")
java.util.Arrays 类能方便地操作数组. 使用之前需要导包!
具有一下常用功能:
1.给数组赋值:通过 fifill 方法。
2.对数组排序:通过 sort 方法,按升序。
3.比较数组:通过 equals 方法比较数组中元素值是否相等。
4.查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
【具体说明请看下表】
1.打印数组
public class java1 { public static void main(String[] args) { int[] nums = new int[5]; nums[0] = 1; nums[1] = 2; nums[2] = 3; nums[3] = 4; nums[4] = 5; System.out.println(Arrays.toString(nums)); } }