数组,ArrayList,Array类,Arrays类的区别

数组,ArrayList,Array类,Arrays类的区别

参考回答:

Array(数组)和ArrayList的不同点:

Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。

Array大小是固定的,ArrayList的大小是动态变化的。

ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。

对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。

Array类和Arrays类:

这两个类其实都可以看做工具类,里面有很多对于数组操作的方法,但是要注意的是这两个类都是用final声明的,无法被继承,也无法实例化,里面的方法都是用private修饰的,外部无法调用。

但是两者中的方法又有一定的区别,Array中的方法主要是对于数组的动态创建和访问进行操作,而后者中的方法主要是一些排序等算法上的操作,后面会详细列出

分析:

Array类:

源码解释:class provides static methods to dynamically create and* access Java arrays.
(这个类提供了静态方法去动态创建和访问java数组)

开始我对于这个动态创建和访问还是不太清楚,后来当我看了源码中的方法之后,我开始明白了!这里简单列举几个定义的方法(都是源码中的方法):

public static native int getLength(Object array)//获取数组长度
public static native Object get(Object array, int index)//获取指定索引的值
public static native void set(Object array, int index, Object value)//指定索引的值

我们可以看到,前面两个方法的确是对数组进行访问的,而第三个数组则是动态创建数组的,指定某个索引上的数组值!下面我们来看实例:

int[] data = new int[10];//这里并没有进行初始化 默认值为0

Array.set(data,7,6);//设置data【7】=6

System.out.println(Array.getLength(data));//获取长度
System.out.println(Array.get(data,7));//获取data【7】

for(int i = 0;i<data.length;i++){
    System.out.print(data[i]);
}
输出:
10
6
0000000600

这么一看就可以大概明白了 Array的用法了!具体里面还有其他的方法,不想自己看源码的,可以看这篇博客。https://blog.csdn.net/abc_12366/article/details/79915619

Arrays类:

这个类和刚刚的Array类功能差不多,都是提供静态方法,对数组进行操作。

public static void sort(int[] a) {//这就是里面的sort函数
    DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);
}

实例:
int arr[] = {2,1,2,3,9,6,4,8};
String str[] = {"1111","22222"};


Arrays.sort(arr);
for(int i = 0;i<arr.length;i++){

    System.out.print(arr[i]);
}
输出:
12234689

ArrayList:

ArrayList和数组的区别有以下几点:

1.ArrayList的长度是可变的,初始容量是10,扩容机制是1.5增长,而Array则是定长的

2.ArrayList中可以同时存储不同类型的数据,包括对象和基本数据类型,而数组在定义的时候,定义的是什么类型,就必须存什么类型(虽然对象和基本类型都可以)

3.ArrayList中也可以进行初始化定义必须存一种类型的变量

实例:

 //简单的存储 遍历
    ArrayList<String> arrayList =new ArrayList();
    arrayList.add("1111");
    arrayList.add("2222");
    for(int i = 0;i < arrayList.size();i++){
        System.out.println(arrayList.get(i));
    }
//可以同时存储两种不同类型的变量
ArrayList arrayList1 = new ArrayList();
arrayList1.add(1);
arrayList1.add(person1);//person1是自己定义的一个类对象
for(int i = 0;i < arrayList1.size();i++){
    System.out.println(arrayList1.get(i));
}
输出:
1
Person{name='fanglei', age=12}

总结:

其实最开始就是不知道Aarry类和数组有什么关系,后面发现其实就是对于数组的一些基本操作,不能够被实例化,然后引申到Arrays,ArrayList类的探究,也算是扩展了自己的知识吧!

就是说Array和Arrays看做工具类,对数组进行操作

而数组和ArrayList是两种类似的数组定义模式存储

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值