码迷,mamicode.com
首页 > 编程语言 > 详细

Java记录 -31- Java数组

时间:2015-09-14 00:35:31      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:数组   java记录   

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属性是publicfinalint的。数组长度一旦确定,就不能改变大小。

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类,并且没有重写Objectequals方法。比较两个数组的内容是否相同,不能用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}};
    }

二维数组遍历一般使用两层嵌套循环,而一维数组一般使用一层循环遍历。


Java记录 -31- Java数组

标签:数组   java记录   

原文地址:http://zlfwmm.blog.51cto.com/5892198/1694402

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!