例如:
Thread thread1 // would declare a thread variable named thread1
thread1 = new Thread() //would instantiate thread1.
为什么Java在声明变量时不会自动实例化它?是否有目的来对象未实例化的变量?
答案 0 :(得分:3)
您可能希望为变量分配对其他地方创建的实例的引用,因此自动创建实例毫无意义。
此外,可能有多个构造函数可供选择,编译器不知道选择哪一个。
此外,变量的类型可以是抽象类或接口的类型,您无法为其创建实例。您只能创建实现接口的具体子类或类的实例。
答案 1 :(得分:3)
为什么Java不会在变量出现时自动实例化它 声明?是否有目的来对象未实例化的变量?
Java会将实例/对象变量初始化为其默认值。对象的默认值为null,对于基元,默认值为默认值。
您可以声明变量并仅在需要时将其实例化。这是条件代码中一种很好的内存保存技术:仅在需要它的场景中实例化/使用引用。