您的位置:首页 > 编程语言 > Java开发

Java记录 -31- Java数组

2015-09-13 22:42 411 查看
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}};
}
二维数组遍历一般使用两层嵌套循环,而一维数组一般使用一层循环遍历。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: