比较Java中的array和ArrayList

1)Java中的数组

1)数组的大小是固定的(即,我们不能在运行时增加或减少大小)。

示例

class ArrayClass
{
	public static void main(String[] args){
		int[] a = new int[10];
		System.out.println(a[0]);
	}
}

输出结果

E:\javasource>java ArrayClass
0

2)对于内存点,不建议使用数组的概念(即,如果我们对小于数组大小的元素使用内存,则数组大小是固定的,这样会浪费内存)。

3)在性能方面,建议使用数组数组的概念(即我们事先知道数组的大小或在编译时知道数组的大小,因此在运行时没有开销,因此花更少的时间)。

4)数组可以容纳同类数据元素(即,数组元素属于同一类型)。

示例

class ArrayClass
{
	public static void main(String[] args){
		int[] a = new int[10];
		a[0]	= new boolean[10];
		System.out.println(a[0]);
	}
}

输出结果

E:\javasource>javac ArrayClass.java
ArrayClass.java:8: incompatible types
found   : boolean[]
required: int
                        a[0]    = new boolean[10];
                                  ^
1 error

5)数组不提供现成的方法支持,这就是为什么我们可以调用数组的原因,因为数组不是基础数据结构。

6)数组能够保存原语(字节,短整数,整数,长整数等)和对象(包装类,字符串,StringBuffer或任何用户定义的类)。

示例1:对于对象类型

class ArrayClass
{
	public static void main(String[] args){
		Integer[] a = new Integer[10];
		System.out.println(a[0]);
	}
}

输出结果

E:\javasource>java ArrayClass
null

示例2:对于基元类型

class ArrayClass
{
	public static void main(String[] args){
		int[] a = new int[10];
		System.out.println(a[0]);
	}
}

输出结果

E:\javasource>java ArrayClass
0

2)Java中的ArrayList

ArrayList本质上是可增长的(即,我们可以在运行时增加或减小大小)。

示例

import java.util.*;

class ArrayListClass
{
	public static void main(String[] args){
		ArrayList al = new ArrayList(2);
		al.add(10);
		al.add(20);
		System.out.println(al);
		al.add(30);
		System.out.println(al);
	}
}

输出结果

E:\javasource>java ArrayListClass
[10, 20]
[10, 20, 30]

鉴于存储点的情况下的ArrayList建议使用(即ArrayList的大小不是固定的存储器将根据要被分配的ArrayList元素大小)。

在性能方面,不建议使用ArrayList(即我们不预先知道ArrayList的大小或在编译时不让其使用,假设最初为10个元素分配了内存,然后作为第11元素分配了新的内存,所有元素将被复制到新的内存中)。

ArrayList可以容纳同构和异构数据元素(即ArrayList元素可以具有不同的类型)。

示例

import java.util.*;
class ArrayListClass{
	public static void main(String[] args){
		ArrayList al = new ArrayList(10);
		al.add("A");
		al.add("true");
		System.out.println(al);
	}
}

输出结果

E:\javasource>java ArrayListClass
[10, true]

ArrayList提供现成的方法支持,这就是为什么我们可以调用ArrayList作为基础数据结构的原因。

示例

import java.util.*;
class ArrayListClass{
	public static void main(String[] args){
		ArrayList al = new ArrayList(10);
		al.add("A");
		al.add("true");
		al.remove(1);
		System.out.println(al.size());
	}
}

输出结果

加(), remove()size()等等都是现成方法。

E:\javasource>java ArrayListClass
1