关于数组集合使用的一点小疑惑

我们在使用数组集合时老是用List list=new ArrayList();
为什么不直接使用ArrayList list=new ArrayList()呢
使用List 来接口回调ArrayList 这样不是只能使用List接口里定义的方法,而对于ArrayList自己扩充的方法不是用不了吗?

List list = new ArrayList();
这样的写法,是为了让后面的操作都是面向List接口的,而面向接口编程方便后期维护或扩展,因为List有三个子类:ArrayList、LinkedList、Vector,
若后期要考虑线程安全或提高增删元素速度等,就会考虑用其他实现类。这时只需要修改创建对象一个地方,而后面的代码基本不需要动。
如果明确用到某个现实类的特有方法就可以选择第二种写法了。

编程习惯问题,如果list只用来存储arraylist,建议用精确的类型,arraylist,而不是list。
好比 Integer i = 1;,写Object i = 1;也可以,但是不好。
为什么很多人写List list=new ArrayList();,因为一些不良的习惯随着源代码抄袭在扩散。