为什么要用Java初始化列表
如果我使用下面的代码为什么要用Java初始化列表,java,list,Java,List,如果我使用下面的代码 List<String> listOfStrings=new ArrayList<>(); listOfStrings.add("first string"); List listofstring=new ArrayList(); 添加(“第一个字符串”); 或以下代码 List<String> listOfStrings; listOfStrings.add("first string"); 列表字符串; 添加(“第一个字符串”)
List<String> listOfStrings=new ArrayList<>();
listOfStrings.add("first string");
List listofstring=new ArrayList();
添加(“第一个字符串”);
或以下代码
List<String> listOfStrings;
listOfStrings.add("first string");
列表字符串;
添加(“第一个字符串”);
要创建Java列表,两个代码都会成功编译,并在迭代列表时给出相同的输出。那么初始化列表的相关性是什么呢?如果
listOfStrings
是一个局部变量,那么第二个示例将无法编译:在使用变量之前,必须为变量指定一个值
如果
listofstring
是一个成员或静态变量,则第二个示例将生成NullPointerException
,因为您在null
引用上调用add
方法。在第一个示例中,您不是初始化列表,而是实例化一个类或创建一个新对象,即列表。在第二个示例中,您将收到一个运行时错误,因为变量listofstring为null 第二个不会编译,因为您没有明确地为listOfStrings
赋值——假设它是一个局部变量。如果它是一个成员变量,你会得到一个NullPointerException
,因为你没有改变它的默认值null
。你必须初始化列表,正如所说的,第二个不会编译。List
是一个接口,无论如何(你不能初始化为new List()
)。没有初始化,您就没有给它任何实例。@Tgsmith61591“newarraylist();
”