1. 数组 Array:相同类型数据的集合就叫做数组。
2. 如何定义数组:type[] 变量名 = new type[数组中元素的个数];
可以按照下列方式定义长度为10的整型数组:int[] a = new int[10];
3. 数组中的元素索引是从0开始的,对于数组来说,最大的数组索引==数组的长度-1.
4. 数组定义和赋值方式:
int[] a = new int[2]; a[0] = 1; a[1]=2; int a[] = new int[2]; //跟上面的定义方式是等价的 int[] a = {1,2}; //定义的时候赋初值。 int[] a = new int[]{1,2}; //定义的时候赋初值 int[] a = new int[2]{1,2}; //这样定义是错误的,编译异常: //Cannot define dimension expressions when an array initializer is provided
5. 数组循环赋初值:
int[] a = new int[100]; for(int i=0; i<a.length; i++){ a[i] = i+1; }
Java中每一个数组都有一个名为length的属性,表示数组的长度。
a.length = 200; //编译报错,不能为最终变量 length指定值。
length属性是public、final、int的。数组长度一旦确定,就不能改变大小。
6.
int[] a = new int[3]; System.out.println(a[2]);
定义数组的时候,默认都会给每个元素赋初值,整型则赋0.
7. 数组中每个元素的类型都是一样的,占据的地址空间大小长度也都一样,底层是按顺序挨着放置的,寻找的时候则按顺序查找。
8.
int[] a = {1,2,3}; int[] b = {1,2,3}; System.out.println(a.equals(b));
数组也继承自Object类,并且没有重写Object的equals方法。比较两个数组的内容是否相同,不能用equals方法。
9. int[] a = {1,2,3};
a是一个数组变量引用,指向了数组的首地址,即第一个元素的地址。数组中每个元素类型都是int类型,其中仅存放数据值本身。
10. 数组中不仅能存放原生数据类型,也能存放引用类型。
public class ReferenceArray { public static void main(String[] args) { Person[] p = new Person[2]; p[0] = new Person(20); p[1] = new Person(30); for(int i=0; i<p.length; i++){ System.out.println(p[i].age); } } } class Person{ public int age; public Person(int age){ this.age = age; } }
Person是自定义的类,也可以构建数组,并且默认初始值为null。
11. Person[] p = new Person[10];
上面代码执行后,一共会生成几个Person对象?答案是一个也没有。代码仅仅是生成一个Person类型的数组,默认值都是null,并没有生成Person对象,数组中每个元素装的是引用而不是对象,是Person对象的地址。和原生数据类型的数组不同,原生数据类型的数组默认会存放对应的默认值,比如int会存放0。
12. 数组中存放元素:
原生数据类型的数组中每个元素存放的是数据值本身;
引用类型的数组中每个元素装的是对象的引用地址,而不是对象本身。
13. 二维数组:二维数组是一种平面结构,本质上是数组的数组。二维数组的定义方式:type[][] aa = new type[2][3]; 二维数组可以是不规则的数组。
14.
public static void main(String[] args) { int[][] aa = new int[2][3]; System.out.println(aa[0] instanceof int[]); aa[0][0] = 1; int[][] bb = new int[2][]; int[][] cc = new int[][]{{1,2,3},{2}}; }
二维数组遍历一般使用两层嵌套循环,而一维数组一般使用一层循环遍历。
原文地址:http://zlfwmm.blog.51cto.com/5892198/1694402