变量的声明,与容器的创建是两个分开的过程。
HashMap<Integer, Product> order
上句声明了变量order,但并没有为order创建容器。这时候的order只是个空的概念,没有与任何容器关联起来。这个时候的order不是没有初始值,而是连装初始值的容器都没有。
HashMap<Integer, Product> order= new HashMap<Integer, Product>();
只有这样,创建了容器,并为他绑定了容器,他才真正创建完成。
如果order是作为成员变量,那他就有了默认值null;
如果是局部变量,那它没有默认值,必要要先赋值才能使用。