ArrayList list=new ArrayList(); List list1=new ArrayList();这两种写法有什么区别?各有什么特点优劣
时间: 2024-04-28 17:24:57 浏览: 14
这两种写法有一些区别:
1. `ArrayList list = new ArrayList();` 这种写法使用了具体的类 `ArrayList` 声明了变量 `list`,并且使用了具体的类 `ArrayList` 来实例化对象。这样做的好处是可以直接使用 `ArrayList` 类的特有方法和属性,但缺点是如果后续需要更换实现类,如改用 LinkedList,那么需要修改代码。
2. `List list1 = new ArrayList();` 这种写法使用了接口 `List` 声明了变量 `list1`,并且使用了具体的类 `ArrayList` 来实例化对象。这样做的好处是可以方便地更换实现类,只需要修改实例化部分的代码即可,不需要修改其他地方的代码。这种方式更加灵活,符合面向接口编程的思想。
综上所述,第一种写法适用于确定只会使用 `ArrayList` 类特有方法和属性的场景,而第二种写法适用于可能需要更换实现类的场景。
相关问题
List li=new ArrayList()和ArrayList li=new ArrayList()有什么区别
List li = new ArrayList()和ArrayList li = new ArrayList()的区别在于数据类型。
List是一个接口,它是Java集合框架中的一部分,它定义了一些操作集合的方法。List接口的实现类有ArrayList、LinkedList、Vector等。
ArrayList是实现了List接口的一个类,它是一个动态数组,可以根据需要自动扩容。因此,当你不知道需要存储多少数据时,使用ArrayList是比较合适的。
所以,List li = new ArrayList()是一个更加通用的写法,因为它将li声明为List类型,这样可以方便地更换为其他实现了List接口的类,而ArrayList li = new ArrayList()则将li声明为ArrayList类型,这样就只能使用ArrayList类的方法了。
ArrayList<?> list01 = new ArrayList<>();这段代码有什么意义
这段代码创建了一个ArrayList对象,其中的问号表示通配符,表示这个ArrayList可以存储任何类型的对象。这意味着,在创建ArrayList对象时,我们并不知道将要存储哪种类型的对象,而是在运行时动态地决定存储哪种类型的对象。这种方式称为泛型,可以增强代码的类型安全性和可读性。在这个示例中,我们可以在运行时向list01中添加任意类型的对象,例如字符串、整数、布尔值等。